Integrating Ads

    Integrating Ads


    Article summary

    When passing through multiple advertising channels, you can maintain continuous tracking by appending query parameters to the deeplink or web link address.

    The following example assumes an inbound request from a deeplink

    Passing Query Parameters with the ShopLive SDK

    class SceneDelegate: UIResponder, UIWindowSceneDelegate { 
        func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
            guard let urlContext = URLContexts.first else { return }
            let url = urlContext.url
            handleUrl(url : url)
        }
        func handleUrl(url : URL) {
            // 1. Break down the URL using URLComponents
            guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
                  let queryItems = components.queryItems else {
                print("No query parameters found.")
                return
            }
            // 2. Convert to [String: String] format
            let params: [String: String] = queryItems.reduce(into: [:]) { result, item in
                result[item.name] = item.value ?? ""
            }
            // 3. Set the query parameters required for ad integration in the ShopLive SDK
            for (key,value) in params {
                 if key == "utm_source" {
                     ShopLiveCommon.setUtmSource(utmSource: value)
                 }
                 else if key == "utm_medium" {
                     ShopLiveCommon.setUtmMedium(utmMedium: value)
                 }
                 else if key == "utm_campaign" {
                     ShopLiveCommon.setUtmCampaign(utmCampaign: value)
                 }
                 else if key == "utm_content" {
                     ShopLiveCommon.setUtmContent(utmContent: value)
                 }
                 else {
                     ShopLive.addParameter(key: key, value: value)
                 }
            }
            ShopLive.play()
        }
    }