Unified Deep Linking (UDL)

UDL flow

  1. The SDK is triggered by:
    • Deferred Deep Linking - using a dedicated API
    • Direct Deep Linking - triggered by the OS via Android App Link, iOS Universal Links or URI scheme.
  2. The SDK triggers the OnDeepLink , e passa o objeto do resultado do deep link para o usuário.
  3. The OnDeepLink usa o resultado do deep link que inclui deep_link_value e outros parâmetros para criar a experiência personalizada para os usuários, que é o principal objetivo do OneLink.

Check out the Unified Deep Linking docs for Android and iOS.

considerações

  • Requires AppsFlyer Android SDK V6.1.3 or later.
  • Não é compatível com campanhas SRN.
  • For new users, the UDL method only returns parameters relevant to deferred deep linking: deep_link_value and deep_link_sub1-10. If you try to get any other parameters (media_source, campaign, af_sub1-5, etc.), they return null.
  • onAppOpenAttribution will not be called. All code should migrate to OnDeepLink.
  • OnDeepLink must be called after initSDK.
  • AppsFlyer.cs must be attached to the game object.

Implementação

  1. Attach AppsFlyer.cs script to the game object with the AppsFlyer init code. (AppsFlyerObject)
  2. Assign OnDeepLink to AppsFlyer.OnDeepLinkReceived in Start()
     AppsFlyer.OnDeepLinkReceived += OnDeepLink;
    
  3. After initSDK() implement OnDeepLink.

Exemplo

using AppsFlyerSDK;

public class AppsFlyerObjectScript : MonoBehaviour
{
  void Start()
  {
    AppsFlyer.initSDK("devkey", "appID", this);
    AppsFlyer.OnDeepLinkReceived += OnDeepLink;
    AppsFlyer.startSDK();
  }
  
  void OnDeepLink(object sender, EventArgs args)
  {
      var deepLinkEventArgs = args as DeepLinkEventsArgs;

      switch (deepLinkEventArgs.status)
      {
          case DeepLinkStatus.FOUND:

              if (deepLinkEventArgs.isDeferred())
              {
                  AppsFlyer.AFLog("OnDeepLink", "This is a deferred deep link");
              }
              else
              {
                  AppsFlyer.AFLog("OnDeepLink", "This is a direct deep link");
              }
              
              // deepLinkParamsDictionary contains all the deep link parameters as keys
              Dictionary<string, object> deepLinkParamsDictionary = null;
      #if UNITY_IOS && !UNITY_EDITOR
              if (deepLinkEventArgs.deepLink.ContainsKey("click_event") && deepLinkEventArgs.deepLink["click_event"] != null)
              {
                  deepLinkParamsDictionary = deepLinkEventArgs.deepLink["click_event"] as Dictionary<string, object>;
              }
      #elif UNITY_ANDROID && !UNITY_EDITOR
                  deepLinkParamsDictionary = deepLinkEventArgs.deepLink;
      #endif

              break;
          case DeepLinkStatus.NOT_FOUND:
              AppsFlyer.AFLog("OnDeepLink", "Deep link not found");
              break;
          default:
              AppsFlyer.AFLog("OnDeepLink", "Deep link error");
              break;
      }
  }
}