在 Unity 应用程序上使用 AppsFlyer 记录 OneLink 数据

问题描述 投票:0回答:1

我正在将 AppsFlyer 集成到我的 Unity 项目中,以通过 OneLink 处理深度链接。我的目标是在通过链接打开我的应用程序时捕获深层链接数据。我已经根据 AppsFlyer 文档设置了所有内容(https://dev.appsflyer.com/hc/docs/unifieddeeplink#:~:text=The%20SDK%20triggers%20the%20OnDeepLink,the%20main%20goal% 20of%20OneLink.) ,包括SDK的初始化、注册深层链接事件处理程序、启动SDK。但是,当我通过使用深层链接打开应用程序进行测试时,仅触发转换数据回调(onConversionDataSuccess),并且 onDeepLink 回调似乎没有执行。

这是我的脚本的相关部分,附加到名为 AppsFlyerObject 的游戏对象:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using AppsFlyerSDK;
using System;

namespace Example
{
    public class ExamplerAppsFlyerObjectScript : MonoBehaviour
    {
        void Start()
        {
            Debug.Log("AppsFlyerObjectScript Start");
            AppsFlyer.initSDK("devKey", "AppId", this);
            AppsFlyer.OnDeepLinkReceived += onDeepLink;
            AppsFlyer.startSDK();
        }

        void onDeepLink(object sender, EventArgs args)
        {
            Debug.Log("OnDeepLink Start");

            if (!(args is DeepLinkEventsArgs deepLinkEventArgs)) return;

            string campaign = deepLinkEventArgs.getCampaign();
            string mediaSource = deepLinkEventArgs.getMediaSource();
            Debug.Log($"Campaign: {campaign}, Media Source: {mediaSource}");

            Debug.Log($"DeepLink Status: {deepLinkEventArgs.status.ToString()}");

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

                    if (deepLinkEventArgs.isDeferred())
                    {
                        Debug.Log("OnDeepLink: This is a deferred deep link");
                    }
                    else
                    {
                        Debug.Log("OnDeepLink: This is a direct deep link");
                    }

                    var deepLinkParamsDictionary = GetDeepLinkParamsDictionary(deepLinkEventArgs);
                    if (deepLinkParamsDictionary != null)
                    {
                        ParseDeepLinkParams(deepLinkParamsDictionary);
                    }
                    break;

                case DeepLinkStatus.NOT_FOUND:
                    Debug.Log("OnDeepLink: Deep link not found");
                    _deepLinkParamsDictionary = new Dictionary<string, object> { ["deep_link_not_found"] = true };
                    break;

                default:
                    Debug.Log("OnDeepLink: Deep link error");
                    _deepLinkParamsDictionary = new Dictionary<string, object> { ["deep_link_error"] = true };
                    break;
            }
        }

        // Other methods omitted for brevity
    }
}

这是我用于深度链接的 AndroidManifest.xml 设置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="AppID">
    <application>
        <activity android:name="com.unity3d.player.UnityPlayerActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="https" android:host="OneLinkWhichWorks" />
            </intent-filter>
        </activity>
    </application>
</manifest>

测试深层链接时,我可以确认应用程序打开,并且 onConversionDataSuccess 正确记录转换数据,表明 SDK 已初始化并正在运行。但是,onDeepLink 方法不会记录任何深层链接数据,而且看起来根本没有被调用。

到目前为止我检查过的内容:

The AppsFlyer SDK is correctly initialized with my dev key and app ID.
The deep link event handler is registered before calling AppsFlyer.startSDK().
The AndroidManifest.xml is configured for deep linking.

我正在 Android 设备上进行测试。我的 Unity 版本是 2020.3 LTS,我使用的是最新版本的 AppsFlyer Unity SDK。

有人遇到过类似的问题或者能发现我可能做错了什么吗?任何见解或建议将不胜感激

到目前为止我检查过的内容:

The AppsFlyer SDK is correctly initialized with my dev key and app ID.
The deep link event handler is registered before calling AppsFlyer.startSDK().
The AndroidManifest.xml is configured for deep linking.

我正在 Android 设备上进行测试。我的 Unity 版本是 2020.3 LTS,我使用的是最新版本的 AppsFlyer Unity SDK。

期待:我的深层链接功能可以在使用链接打开应用程序时进行处理

android unity-game-engine deep-linking appsflyer
1个回答
0
投票

您还必须将 AppsFlyer.cs 附加到您的 AppsFlyerObject 上。 这对我来说也有点误导,但这与 AppsFlyerObjectScript 不是同一个脚本。

© www.soinside.com 2019 - 2024. All rights reserved.