How To Make An Augmented Reality iOS App Using ARKit

How To Make An Augmented Reality iOS App Using ARKit

Over the past few years, the creation and development of portable applications are huge and quickly moving towards augmented reality. Augmented reality and AI have been around for a long while, and now it's an ideal opportunity to apply them in mobile application development using the ARKit framework.


What is ARKit?

ARKit is an iOS mobile application development framework for mobile augmented reality apps and games. Recently, Apple announced that it would bring a revolutionary addition to the augmented reality market which will transform it with a new augmented reality (AR) library named ARKit.


To enable augmented reality, Apple uses the device’s built-in camera, mobile processor, and some of its sensors to analyze the environment. The device automatically detects horizontal surfaces and allows users to put suitable objects on them. Apple also takes care of all the calculations related to rendering shadows and all movements when moving the camera.


Iphones provide full access permission to ARKit to utilize the information coming from inbuilt cameras, gyroscopes, accelerometers, and other sensor data to decide their current location and position in the current circumstance, considering the items encompassing the gadget. One of the critical applications for all this data is to find flat objects or lines suitable for the current task on which information or a virtual item/object can be placed.


Getting started with ARKit

In order to get started with a building AR app for Apple, you require a Mac computer with complete Installation of macOS 10.13 Beta. And only two software are required to build a native iOS application without using any third-party solutions:


Xcode 9: the newest version of the integrated development environment for creating applications for all Apple platforms. Newest XCode Beta is needed by Unity to perform tasks in ARKit.


IOS 11: Make sure to use an Apple device with the latest version of iOS; otherwise, ARKit won’t work. iOS 11 is out there now (and owners of supported devices can update to iOS 11 anytime), but it hadn’t been officially released once we started building our AR mobile app, so we used the beta version.


Before you start building an augmented reality mobile app with ARKit, you would like to know what it consists of:


SCNScene: A hierarchy of nodes that form a displayable 3D scene. All attributes such as geometries, cameras, and lights are attached to SCNScene.


3D object: A virtual object displayed on the screen in an augmented reality application. Any 3D object is often added to SCNScene, so you'll use whatever 3D object you prefer.


A step-by-step guide to build AR apps for iOS

Once all the installation and necessary changes have been done on your iOS device, Your device is ready for the iPhone app development of the AR app and you need to follow the below-mentioned steps to create AR app.


1) Creating a project:

Open a Unity from the dock and start a new ARKit project from New > Project > Augmented Reality App. In any case, I thought that it was more convenient to start with augmented reality examples with the official Apple ARKit sample, which gives a couple of basic codes and is particularly useful for plane recognition. Along these lines, let us start with the model code, clarify the primary concerns in it first, and afterward adjust it for our project.


2) Adding ARKit SceneKit View

Next step, add ARKit SceneKit View to your Storyboard. ARSCNView is utilized for showing virtual 3D substance on a camera foundation. Remember to change the constraints so ARSCNView deals with the full screen of the device. But before that, you need to deal with ARSession and ARConfiguration abstract class for starting the AR session. ARSCNView is a subclass of the SceneKit main view named SCNView.

func setupScene() {

    let scene = SCNScene()

    sceneView.scene = scene


func setupConfiguration() {

    let configuration = ARWorldTrackingConfiguration()


3) Enabling the camera

ARKit is a session-based system, so every session has a scene that renders virtual objects in reality. To empower rendering, ARKit needs to access an iOS gadget's sensors (camera, accelerometer, and gyroscope).

At the point when clients dispatch an augmented reality portable application, they should allow the application to access the camera. To request access to the camera from a client, you need to add another column to the Info.plist record: Privacy – Camera Usage Description.

It renders the live video feed from the device camera as the scene background, while it automatically matches SceneKit space to the real world.


4) Adding a 3D object

Now it's time to add 3d objects to our augmented reality app, but before you pick any virtual object check what file formats are supported by ARKit. ARScene kit view support .dae (digital asset exchange), .abc (alembic), and .scn (SceneKit archive) file format only.


class Object: SCNNode {

    func loadModel() {

         guard let virtualObjectScene = SCNScene(named: "Object.scn") else { return }

         let wrapperNode = SCNNode()

         for child in virtualObjectScene.rootNode.childNodes {







Once we configure the SCNNode, lets’ start the initialization an object of the Object class and supplement it after setting up configuration:


func addObject() {





Apple's new augmented reality system is a useful asset for making AR apps and games. After doing all these steps, you have effectively build your first AR application by Apple ARKit which is the most impressive AR device present in the current market. If you need to create a more modern Augmented Reality application, at that point you can always hire iPhone application developers who have experience in creating such applications. With this, we end our article on the most proficient method to create an Augmented Reality application using ARKit.


Good luck!


Was this article helpful?

You are freelancing Ninja?

Try Toogit Instant Connect today, The new virtual assistant for your freelancing world.