Unified Deep Linking (UDL)

fluxo UDL

  1. O SDK é acionado por:
    • Deferred Deep Linking - usando uma API dedicada
    • Direct Deep Linking - acionado pelo SO via Android App Link, iOS Universal Links ou esquema de URI.
  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.

Confira os documentos de Unified Deep Linking para Android e iOS.

considerações

  • Requer AppsFlyer Android SDK V6.1.3 ou posterior.
  • 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. Se você tentar obter quaisquer outros parâmetros (media_source, campanha, af_sub1-5, etc.), eles retornarão null.
  • onAppOpenAttribution não será chamado. Todo o código deve migrar para OnDeepLink.
  • OnDeepLink deve ser chamado depois de initSDK.
  • AppsFlyer.cs deve ser anexado ao objeto do jogo.

Implementação

  1. Anexe AppsFlyer.cs ao objeto do jogo com o código de inicialização da AppsFlyer. (AppsFlyerObject)
  2. Call initSDK with the this parameter in order for the OnDeepLinkReceived callback to be invoked:
    AppsFlyer.initSDK("devkey", "appID", this);
    
  3. Atribua OnDeepLink to AppsFlyer.OnDeepLinkReceived no payload de Start()
     AppsFlyer.OnDeepLinkReceived += OnDeepLink;
    
  4. Depois de initSDK() implemente 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;
      }
  }
}