Quickstart in iOS Swift
Integrate the ARwayKit SDK with iOS Swift
In this quickstart guide, we will be integrating the ARwayKit SDK with iOS Swift. This example will be using Unity as a Library to integrate into an iOS app.
Installed Versions
In this guide, we will be using the following versions:
Xcode: 14.3
Unity: 2022.3.29f1 LST
Download the ARwayKit SDK
Download the ARwayKit SDK project from GitHub as a ZIP. You can contact us for access to the ARwayKit SDK.
Create a Basic Project in Xcode
For this example a new iOS app called "SwiftUnity" will be created with interface "Storyboard" and language "Swift".
Generate the Build for the iOS Platform
Make sure to add the Account ID and Secret Key variables to the Unity project. Follow the guide for Building from the Source Code for instructions.
Updating the Addressables Groups
When opening the project in Unity for the first time, you will need to build the Addressables Groups.
Switch the build platform to either iOS or Android
"File-> Build Settings..." then select the Android or iOS as the Platform.
Click "Switch Platform" on the bottom right.
Navigate to "Window -> Asset Management -> Addressable -> Groups".
In the Addressables Groups window, click on "Build -> New Build -> Default Build Script".
In the Console window, you should see the success message "Addressable content successfully built".
When making any changes that affect localization strings, you will need to update the Addressables Groups.
Building the Project
Steps
In Unity select File -> Build Settings.
Switch the Platform to iOS.
Select option "Build Project".
Export the ARwayKit Unity SDK to a new folder and name it "iOSBuild" and place it in the base directory for the iOS project.
Setup Xcode workspace
Xcode workspace allows to work on multiple projects simultaneously and combine their products
Open your Xcode project.
All the steps are done from just created Workspace project.
Add UnityFramework.framework
With this step we add Unity player in the form of a framework to NativeiOSApp, it does not change the behavior of NativeiOSApp yet
Select NativeiOSApp target from NativeiOSApp project.
In "General" tab / "Frameworks, Libraries, and Embedded Content" press +.
Add Unity-iPhone/UnityFramework.framework.
In "Build Phases" tab, expand "Link Binary With Libraries".
Remove UnityFramework.framework from the list (select it and press - ).
Make Data folder to be part of the UnityFramework
By default Data folder is part of Unity-iPhone target, we change that to make everything encapsulated in one single framework file.
Change Target Membership for Data folder to UnityFramework.
Next, open Info.plist and add the following rows:
Privacy - Microphone Usage Description: Used for creating audio content
Privacy - Camera Usage Description: Used for AR Content and mapping
Privacy - Location Usage Description: Used to attach maps with global coordinates and public map searching
Privacy - Location When in Usage Description: Used to attach maps with global coordinates and public map searching
Privacy - Photo Library Usage Description: This app requires access to save media
Privacy - Photo Library Additions Usage Description: This app requires access to save media
Swift Code
To create an entry point to SwiftUI, create a new SwiftUI view called ContentView.swift and add a single button to launch ARway.
Next, update the ViewController.swift file to match the following.
Next, implement the connection between the Unity SDK and the Swift app. A new singleton called Unity.swift is created with the following code.
Next update the AppDelegate.swift file to pass the main window reference to Unity.
You should now be able to build and run the project on an iOS device.
To run the app, you will need to use a physical device and not a simulator.
Additional information about integrating Unity as a library into a standard iOS app can be found in the following links:
https://github.com/Unity-Technologies/uaal-example/blob/uaal-example/19LTS-21LTS/docs/ios.md
https://docs.unity3d.com/2019.3/Documentation/Manual/UnityasaLibrary.html
Last updated