Quickstart

Follow these steps to have a basic integration of the app's miles® SDK in your iOS application.

Estimated time: 20 minutes

This guide will go over:

  • Conditions and minimum requirements

  • Installation 📦

  • Configuration ⚙️

  • Initialization

  • Attaching 🔗

Conditions and minimum requirements

Minimum iOS version : 10.0 Minimum Xcode version : 10

I. Installation

Last version : 6.3.1

In your Xcode project, select your project then the tab Swift Packages, Click on + button

Add APM swift package

Git : https://gitlab.appsmiles.eu/appsmiles/APMSpecs.git

https://gitlab.appsmiles.eu is a private repository, you need a login and a password Contact us to get a login and password

Select exact version for more control

Select product and target

You can see 3 packages added to your project

The APM SDK for iOS provides many functionalities, UI components and countless customization options at a high performance, requiring somewhat more storage space than a simpler framework would. Nonetheless, the SDK contributes only 4 MB to the final size of your application, thanks to various optimization steps that occur during the compilation and App Store submission processes

II. Initialization

You can initialize SDK APM in your :

  • SwiftUI App

  • UIKit App Delegate

SwiftUI App

In YourApp.swift, in the method init(), retrieve an instance of APM and init the SDK with your credentials environments

import SwiftUI
import APM

@main
struct YourApp: App {
    init() {
        //...

        //Init SDK APM        
        let partnerId: String = <CONFIG_PARTNER_ID>
        let partnerSecret: String = <CONFIG_PARTNER_SECRET>
        let appId: String = Bundle.main.bundleIdentifier
        let baseUrl: String = <BASE_URL>

        let apm: APM = APM.sharedInstance()
        apm.initApp(partnerID: partnerId, partnerSecret: partnerSecret, appId: appId)
        apm.setBaseUrl(baseUrl)
    }
    
    //...
}

You can declare multiple environments using the bundle identifier or you can specifically declare environments with the appId variable.

import SwiftUI
import APM

@main
struct YourApp: App {
    init() {
        //...

        //Init SDK APM
        let partnerId: String = <CONFIG_PARTNER_ID>
        let partnerSecret: String = <CONFIG_PARTNER_SECRET>

        let appId: String!
        let baseUrl: String!
        if(SANDBOX) {
            appId = "com.your_company.your_app_sandbox"
            baseUrl = "https://api-sb.appsmiles.eu/"
        }
        else {
            appId = "com.your_company.your_app"
            baseUrl = "https://api-prod1.appsmiles.eu/"
        }

        let apm: APM = APM.sharedInstance()
        apm.initApp(partnerID: partnerId, partnerSecret: partnerSecret, appId: appId)
        apm.setBaseUrl(baseUrl)
    }
    
    //...
}

UIKit App Delegate

In YourAppDelegate.swift, in the method application:didFinishLaunchingWithOptions, retrieve an instance of APM and init the SDK with your credentials environments

import APM

//...

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    //...

    //Init SDK APM
    let partnerId: String = <CONFIG_PARTNER_ID>
    let partnerSecret: String = <CONFIG_PARTNER_SECRET>
    let appId: String = Bundle.main.bundleIdentifier
    let baseUrl: String = <BASE_URL>

    let apm: APM = APM.sharedInstance()
    apm.initApp(partnerID: partnerId, partnerSecret: partnerSecret, appId: appId)
    apm.setBaseUrl(baseUrl)
    
    return true
}

Environments

Environment

URL

PRODUCTION

https://api-prod1.appsmiles.eu/

SANDBOX

https://api-sb.appsmiles.eu/

We host projects on multiple servers, double check with us or your team to verify the base URL

III. Attaching

Attaching to a « SwiftUI View »

Manually

Add the following methods in your GlobalView

  • onAppear

  • onDisappear

import APM

...

struct GlobalView: View {
    var body: some View {
        VStack {
            Text("Hello, world!")
                .padding()
        }
        .onAppear(perform: {
            let apm: APM = APM.sharedInstance()
            apm.viewDidLoad(controller: nil)
            apm.viewWillAppear(controller: nil, classID: nil)
            apm.viewDidAppear(controller: nil)
        })
        .onDisappear(perform: {
            let apm: APM = APM.sharedInstance()
            apm.viewWillDisappear(controller: nil)
            apm.viewDidDisappear(controller: nil)
        })
    }
}

Attaching to a « UIKit ViewController »

Automatically

You can extend your GlobalViewController with APMClientViewController or APMClientNavigationController or APMClientTabBarController

import APM

...

class GlobalViewController: APMClientViewController
//OR
class GlobalViewController: APMClientNavigationController
//OR
class GlobalViewController: APMClientTabBarController

Manually

Add the following methods in your GlobalViewController

  • viewDidLoad:controller;

  • viewWillAppear:controller;

  • viewDidAppear:controller;

  • viewWillDisappear:controller;

  • viewDidDisappear:controller;

import APM

...

override func viewDidLoad() {
    super.viewDidLoad()
    APMClientViewControllerUtils.viewDidLoad(self)
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    APMClientViewControllerUtils.viewWillAppear(self)
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    APMClientViewControllerUtils.viewDidAppear(self)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    APMClientViewControllerUtils.viewWillDisappear(self)
}

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    APMClientViewControllerUtils.viewDidDisappear(self)
}

You're done with the installation !

Head to the next section to start integrating our SDK into your app's features.

Last updated