DeepLink Plan - iOS SDK (v4)

    GitHub Tag

    Install the Airbridge iOS SDK and implement the necessary settings following the steps below.

    Install SDK

    The Airbridge iOS SDK can be installed using the method below. After installation, you can verify whether the SDK has been properly installed through the iOS SDK Test.

    1. 请在 Xcode 中导航至 [File]>[Add Packages...]。

    2. 请在搜索栏中输入以下地址,并点击 [Add Package]。

    3. 请再次点击 [Add Package]。

    4. 请在 Xcode 的 [Package Dependencies] 中确认 Airbridge iOS SDK 已成功添加。

    Install Restricted SDK

    提示

    请根据需求选择 General SDK 或 Restricted SDK, 只能安装其中一个。

    Depending on policies and environments, restrictions on collecting device IDs like GAID and IDFA may be required. When installing the Restricted SDK version, the device IDs are not collected.

    Install the Restricted SDK using the method below.

    1. 请在 Xcode 中导航至 [File]>[Add Packages...]。

    2. 请在搜索栏中输入以下地址,并点击 [Add Package]。

    3. 请再次点击 [Add Package]。

    4. 请在 Xcode 的 [Package Dependencies] 中确认 Airbridge iOS SDK 已成功添加。

    Initialize SDK

    SDK initialization methods vary depending on the system architecture. For SceneDelegate Lifecycle or AppDelegate Lifecycle, refer to the method for AppDelegate. For SwiftUI Lifecycle, refer to the method for SwiftUI.

    The YOUR_APP_NAME and YOUR_APP_SDK_TOKEN can be found on the [Settings]>[Tokens] page in the Airbridge dashboard.

    请在 AppDelegateapplication(_:didFinishLaunchingWithOptions:) 函数顶部调用 Airbridge.initializeSDK 函数。

    123456789101112131415
    import UIKit
    import Airbridge
    
    @main
    class AppDelegate: UIResponder, UIApplicationDelegate {
        func application(
            _ application: UIApplication,
            didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
        ) -> Bool {
            let option = AirbridgeOptionBuilder(name: "YOUR_APP_NAME", token: "YOUR_APP_SDK_TOKEN")
                .build()
            Airbridge.initializeSDK(option: option)
            return true
        }
    }

    Configure ATT Prompt

    提示

    为确保遵守隐私政策所需的功能,应与法律顾问共同审查。

    The IDFA can only be collected if users consent to data tracking via the App Tracking Transparency (ATT) prompt.

    Event collection should be delayed until the user allows tracking. If the install event is collected before the user allows tracking on the ATT prompt, the install event data will lack an identifier, making performance measurement difficult. We recommend setting a sufficient delay time for event collection to collect identifiers.

    1. Prepare the text you will use in the ATT prompt.

    2. Enter the prepared text in the NSUserTrackingUsageDescription key of the Info.plist file.

    1. 请导航至 [Xcode]>[YOUR_PROJECT]>[Info]>[Custom iOS Target Properties]。

    2. 请将鼠标悬停在 Key 的项目,点击出现的 “+”,并输入 Privacy - Tracking Usage Description

    3. 请将准备好的 ATT 弹窗文本作为值输入。

    3. Set the point of time for displaying the ATT prompt on the app.

    4. If the install event is not collected, the Airbridge iOS SDK delays collecting install events for 30 seconds until the user allows tracking each time the app is launched. If the user exits the app before deciding whether to allow tracking, the SDK will not collect the install event and will try again at the next app launch.

    When using the DeepLink Plan, it is recommended that the setAutoDetermineTrackingAuthorizationTimeout parameter be set to 0 seconds when configuring the ATT prompt.

    As the DeepLink Plan does not support attribution using identifiers, the setAutoDetermineTrackingAuthorizationTimeout parameter should be set to 0 seconds to seamlessly redirect users who have already installed the app to the intended in-app location as configured in the deferred deep link.

    The autoDetermineTrackingAuthorizationTimeout function can be used to set a longer delay for collecting install events. The default setting for the autoDetermineTrackingAuthorizationTimeout is 300 seconds. It can be set up to 3600 seconds (1 hour).

    1234567
    import Airbridge
    ...
    let option = AirbridgeOptionBuilder(name: "YOUR_APP_NAME",
                                        token: "YOUR_APP_SDK_TOKEN")
        .setAutoDetermineTrackingAuthorizationTimeout(second: 30)
        .build()
    Airbridge.initializeSDK(option: option)

    注意

    请确保为延迟收集安装事件预留足够时间。在用户通过 ATT 弹窗允许追踪之前,如果延迟时间到期,SDK 将会收集不包含 IDFA 的安装事件。

    Deep Linking

    Deep linking allows you to redirect users from ads to specific locations within your app. The data collected from the tracking link enables you to monitor the performance of the deep link in Airbridge.

    When a user clicks on the Airbridge tracking link, the scheme deep link embedded in the tracking link is converted into an Airbridge Deep Link, which can be either an HTTP deep link or a scheme deep link. This Airbridge Deep Link redirects the user to the desired app location. Then, the Airbridge SDK converts the Airbridge Deep Link back to the original scheme deep link embedded in the tracking link and passes it to the app.

    • Example scheme deep link embedded in the tracking link: YOUR_SCHEME://product/12345

    • Examples of Airbridge Deep Links

      • HTTP deep link format 1: https://YOUR_APP_NAME.airbridge.io/~~~

      • HTTP deep link format 2: https://YOUR_APP_NAME.abr.ge/~~~

      • Scheme deep link format: YOUR_SCHEME://product/12345?airbridge_referrer=~~~

    When the app is installed on the device and the tracking link is clicked, the app opens through the Airbridge Deep Link. The Airbridge SDK converts the Airbridge Deep Link into the scheme deep embedded in the tracking link and passes it to the app.

    When the app is not installed on the device and the tracking link is clicked, the Airbridge SDK saves the Airbridge Deep Link is saved. After the user is redirected to the app store or website and the app is installed and launched, the Airbridge SDK converts the saved Airbridge Deep Link into the scheme deep embedded in the tracking link and passes it to the app.

    Set up deep linking

    For the deep linking setup, the deep link information entered to the Airbridge dashboard and the in-app location address for user redirection is required.

    First, enter the deep link information into the Airbridge dashboard.

    After entering the deep link information into the Airbridge dashboard, refer to the information below for app setup. The instructions vary by the app system.

    Set up deferred deep linking

    When a user clicks on a tracking link with deferred deep linking capabilities and your app is not installed on the device, the Airbridge SDK collects the deep link as follows.

    The Airbridge.handleDeferredDeeplink function retrieves the saved Airbridge deep link and converts it into a scheme deep link to pass it to the app. Users are redirected to the intended destination using the converted scheme deep link.

    1234567891011
    import Airbridge
    ...
    let option = AirbridgeOptionBuilder(name: "YOUR_APP_NAME", token: "YOUR_APP_SDK_TOKEN")
        .build()
    Airbridge.initializeSDK(option: option)
    ...
    let isHandled = Airbridge.handleDeferredDeeplink() { url in
        if let url {
            // show proper content using url (YOUR_SCHEME://...)
        }
    }

    The Airbridge.handleDeferredDeeplink function returns true if the app is installed and called for the first time, waits for the Airbridge deep link acquisition, and converts it to a scheme deep link to pass it to onSuccess. You can use this scheme deep link to send users to the set destination.

    If there is no stored Airbridge deep link, it will deliver nil to onSuccess. If the SDK is not initialized or if the Airbridge.handleDeferredDeeplink function has not been called for the first time, it will return false.

    The scheme deep link delivered is generally in the format of YOUR_SCHEME://... URL. If you use services like Meta Deferred App Links, it may be delivers in a different format.

    Testing

    The SDK functionality test and deep link test allow you to check whether the SDK and deep linking work as intended.

    Test SDK functionality

    Check whether the Airbridge iOS SDK is operating properly. The Install events are collected by the Android SDK regardless of whether the additional configurations have been completed or not.

    Check Install event collection

    Follow the steps below to check whether the Install events are being collected by the iOS SDK.

    1. Prepare a test device where the app is not installed, or if the app is already installed, delete it before testing.

    2. Set the SDK log level to Log_ALL.

    123
    let option = AirbridgeOptionBuilder(name: "YOUR_APP_NAME", token: "YOUR_APP_SDK_TOKEN")
        .build()
    Airbridge.initializeSDK(option: option)

    3. Install the app on the test device. After installing the app, launch it so that the Install event is collected.

    The first Open event collected by Airbridge is recorded as an Install event. Therefore, the Open may not be recorded when the app install event is collected.

    4. In the Xcode Console, check whether the event performed on the test device with a specific IDFA is logged properly. In the Console Filter, enter Library:Airbridge. If the Install events are being collected properly, you should see logs such as the following.

    • Send event packets to Airbridge: categories=9161

    • Send event packets to Airbridge: categories=9163

    For the Xcode Console messages and their meaning, refer to the following.

    5. If you can't see the logs in the Xcode Console even after a sufficient amount of time has passed, check whether the SDK has been initialized, the SDK configurations are completed as instructed, and the network status is stable.

    If the problem persists, contact your Airbridge CSM and share your SDK logs. If you don't have a designated Airbridge CSM, contact the Airbridge Help Center.

    Check whether the deep linking feature configured in the Airbridge iOS SDK works as intended.

    Preliminary check up

    Before testing the deep link, make sure the following items have been set up.

    #{"width":"120px"}

    Item

    #{"width":"240px"}

    Description

    #{"width":"140px"}

    Resources

    HTTP Deep Link (App links)

    Setup is required

    - Dashboard Settings

    - Set up deep link

    Scheme Deep Link

    Setup is required

    - Dashboard Settings

    - Set up deep link

    Deferred Deep Link

    The setup is completed automatically. No additional setup is required.

    - Set up deferred deep linking

    Custom Domain

    Setup is optional

    - Dashboard Settings

    App Install

    - If you don't need to test the deferred deep link, install the app on your test device in advance.

    - If you need to test the deferred deep link, the app should not be installed on the test device. If the app is installed, delete the app from the test device.

    Airbridge provides a website for testing deep links. If you want to test deferred deep links, you need to uninstall the app from your test device.

    1. Visit the deep link testing site from your test device. You can access the website directly by using the QR code below.

    2. Enter the App Name you registered with Airbridge. You can find it on the [Settings]>[Tokens] page in the Airbridge dashboard.

    If you want to test a specific deep link address, enter the scheme deep link into the Deeplink URL field. The scheme deep link format is {YOUR_SCHEME}://...

    If you're using a custom domain, make sure to enter your custom domain.

    3. Click one of the buttons listed below. Click the button depending on the deep link type you are testing.

    Note that you can only test deferred deep links if the app is not installed on your test device.

    #{"width":"120px"}

    Button

    #{"width":"240px"}

    Description

    #{"width":"140px"}

    Example

    Test HTTP Deeplink Type-1

    Test the HTTP deep link in the format of https://{your_app-name}.abr.ge.

    https://{your_app-name}.abr.ge/@{your_app-name}/test_sdk?...

    Test HTTP Deeplink Type-2

    Test the HTTP deep link in the format of https://abr.ge. The address format is different from Test HTTP Deeplink Type-1.

    https://abr.ge/@{your_app-name}/test_sdk?...

    Test Scheme Deeplink

    Test the scheme deep link.

    https://abr.ge/@{your_app-name}/test_sdk?...

    Test Deferred Deeplink

    Test the deferred deep link.

    https://abr.ge/@{your_app-name}/test_sdk?...

    Test Custom Domain Deeplink

    Test the custom domain. This button is only available when the custom domain is entered.

    https://{your_custom_domain}/@{your_app-name}/test_sdk?...

    4. Check whether the event performed on the test device with a specific IDFA is logged properly in the Xcode Console. Enter [Airbridge][Debug] in the Console filter. If the Install events are being collected properly, you should see logs as follows.

    • [Airbridge] [Debug] - success network to url: https://core.airbridge.io/api/v4/apps/{app_name}/events/mobile-app/9162

    • [Airbridge] [Debug] - success network to url : https://core.airbridge.io/api/v4/apps/{app_name}/events/mobile-app/9163

    • [Airbridge] [Debug] - success network to url : https://core.airbridge.io/api/v4/apps/{app_name}/events/mobile-app/9168

    If the SDK log level has been set to DEBUG in the Airbridge SDK initialization process, you can check the value sent through the network.

    5. The client request: method={...} message transmits the header and body values. Check the following items based on the button clicked on the deep link test site. If the deep link is working properly, all items should be confirmed.

    Troubleshooting

    Refer to the information below for troubleshooting regarding deep links.

    Problem

    Solution

    You clicked a deep link, but the app was not launched. Or the SDK logs show information that is not intended as per setting.

    Check whether the deep link is set up correctly. Refer to this article for the deep linking setup.

    You clicked a deep link, and the app was launched, but you didn't land on the intended app page.

    You need to write code that redirects the user to the deep link path that is passed by the onSuccessfunction. Refer to this article for the deep linking setup.

    Was this page helpful?

    Have any questions or suggestions?