При нажатии на предварительный просмотр объявления глубокие ссылки в Facebook не работают - PullRequest
2 голосов
/ 07 января 2020
<activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="sensorLandscape">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>


        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <!-- Accepts URIs that begin with "memoryc://cerebrotrial” -->
            <data
                android:host="cerebrotrial"
                android:scheme="memoryc" />
        </intent-filter>

    </activity>

Когда я проверяю свое объявление из Помощника по рекламе в Facebook, отложенная ссылка успешно передается. Но когда я нажимаю на предварительный просмотр объявления в приложении Facebook, отложенная глубокая ссылка становится пустой. Я пытаюсь поймать глубокую связь с нижеприведенными реализациями. Сначала я пытаюсь получить глубокую ссылку из AppLinkData, затем из самой базовой реализации c getIntent() и, наконец, из bolts.Applinks. ApplinkData равно нулю, намерение ничего не возвращает, а targetUrl равно нулю.

    // Suggested Facebook implementation
    FacebookSdk.setAutoInitEnabled(true);
    FacebookSdk.fullyInitialize();
    AppLinkData.fetchDeferredAppLinkData(this,
            new AppLinkData.CompletionHandler() {
                @Override
                public void onDeferredAppLinkDataFetched(AppLinkData appLinkData) {
                    // Process app link data
                    if (appLinkData != null) {
                        ConfigAPI.setRefererURL(appLinkData.getTargetUri().toString());
                        JsonObject jsonParams = ConfigAPI.getPayLoad();
                        new CallAPI(jsonParams).execute();
                    }
                }
            }
    );


    //persist deep link data
    Intent intent = getIntent();
    Uri data = intent.getData();
    if (data != null) {
        Log.i("DEEP LINK", data.toString());
        ConfigAPI.setRefererURL(data.toString());
        JsonObject jsonParams = ConfigAPI.getPayLoad();
        new CallAPI(jsonParams).execute();
    }

    // using the bolts.Applinks
    Uri targetUrl = AppLinks.getTargetUrlFromInboundIntent(this, getIntent());
    if (targetUrl != null) {
        ConfigAPI.setRefererURL(targetUrl.toString());
        JsonObject jsonParams = ConfigAPI.getPayLoad();
        new CallAPI(jsonParams).execute();
    }
...