微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Facebook 延迟深层链接无法正常工作React Native、Android

如何解决Facebook 延迟深层链接无法正常工作React Native、Android

我正在尝试使用 Facebook Deferred Deep Links(在 Android 应用中)在应用安装后传输一些有价值的数据

测试中(

遵循 Facebook 应用通知中的测试链接(使用 Facebook 应用广告助手在 facebook for developers 创建);

使用启动选项中指定的 URL 从 Android Studio 安装应用程序(发布版和调试版);

尝试过模拟器和物理设备

) 一切都按计划进行——数据按预期接收和使用,但在真实设备上,按照广告安装应用程序,数据没有到达......

Facebook 应用广告助手说一切都设置正确 使用 Linking module from react-native

处理链接数据

这是我的 useDeepLinkUrlData() 钩子:

const useDeepLinkUrlData = () => {
    const [deepLinkUrlData,setDeepLinkUrlData] = useState('');

    useEffect(() => {
        Linking.addEventListener('url',(initDeepLinkUrlObj) => {
            log.deepLinkHook('Get deep link data through Linking.listener');
            log.deepLinkHook('initDeepLinkUrlObj:',initDeepLinkUrlObj);
            setDeepLinkUrlData(initDeepLinkUrlObj.url);
        });

        return () => {
            Linking.removeAllListeners('url');
        };
    },[]);

    useEffect(() => {
        Linking.getinitialURL()
        .then(initDeepLinkUrl => {
            log.deepLinkHook('Get deep link data through Linking.getinitialUrl()');
            log.deepLinkHook('initDeepLinkUrl:',initDeepLinkUrl)
            setDeepLinkUrlData(initDeepLinkUrl);
        });
    },[]);

    useEffect(() => {
        if (deepLinkUrlData && deepLinkUrlData.indexOf('?') !== -1) {
            setDeepLinkUrlData(deepLinkUrlData.split('?')[1]);
        };
    },[deepLinkUrlData]);

    useEffect(() => {
        if (deepLinkUrlData && deepLinkUrlData.indexOf('&target_url') !== -1) {
            setDeepLinkUrlData(deepLinkUrlData.split('&target_url')[0]);
        };
    },[deepLinkUrlData]);

    if (deepLinkUrlData?.indexOf('?') !== -1
    || deepLinkUrlData?.indexOf('target_url') !== -1) {
        return '';
    };
    log.deepLinkHook('URL returned from useDeepLinkUrlData() hook',deepLinkUrlData);
    return deepLinkUrlData;
};

这是我的 MainActivity 的 onCreate() 方法(放置在 android/app/src/main/java/.../MainActivity.java):>

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  AppLinkData.fetchDeferredAppLinkData(this,getString(R.string.facebook_app_id),new AppLinkData.CompletionHandler() {
        @Override
        public void onDeferredAppLinkDataFetched(AppLinkData appLinkData) {
            Log.d("DeepLink","appLinkData: " + appLinkData);
        }
    }
  );

  Intent intent = getIntent();
  String action = intent.getAction();
  Uri data = intent.getData();// URI data = intent.getData();
  Log.d("DeepLink","data: " + data);
}

这是我来自 AndroidManifest.xml活动

  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
    android:screenorientation="portrait"
    android:launchMode="singleTask"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <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="app" />
    </intent-filter>
  </activity>

在 android/app/build.gradle 依赖项{}我有

implementation 'com.facebook.android:facebook-android-sdk:[5,6)'

在 android/build.gradle 存储库中{}我有

mavenCentral()

我使用的是 react-native-fbsdk 3.0.0

也许有人遇到过这个问题并且可以帮助我(如果我必须澄清一些事情 - 没问题)?

感谢您的关注

附言我的母语不是英语,对不起,如果我输入了一些文盲

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。