从 Facebook App 打开的 Deeplink 转到 PlayStore

Deeplink opened from Facebook App goes to PlayStore

deeplinking 在 WhatsApp、Slack 甚至 Facebook Messenger 中运行良好,但在 Facebook 应用程序本身中不起作用。

在 branch.io Link 设置中我启用了:

Facebook 开发者设置:

Android 应用程序版本:

示例 link:sharing.kptncook.com/pIbQ/FKktug85TE

Activity 清单的一部分:

    <activity android:name=".MainActivity"
              android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

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

        <intent-filter>
            <data android:scheme="kptncook" android:host="open" />
            <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="sharing.kptncook.com" />
            <data android:scheme="http" android:host="sharing.kptncook.com" />
        </intent-filter>
    </activity>

    <receiver android:name="io.branch.referral.InstallListener" android:exported="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER" />
        </intent-filter>
    </receiver>

Activity:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public void onStart() {
    super.onStart();
    Branch branch = Branch.getInstance();

    branch.initSession(new Branch.BranchReferralInitListener(){
        @Override
        public void onInitFinished(JSONObject referringParams, BranchError error) {
        }
    }, this.getIntent().getData(), this);
}

@Override
public void onNewIntent(Intent intent) {
    this.setIntent(intent);
}

}

附加信息:在模拟器中,有些 link 无法打开,有些可以。如果我将无法从模拟器工作的 link 发送到真实设备,它可以在真实设备上工作。

我做错了什么?

更新: 新的共享 links 现在可以在真实设备上使用 Facebook Messenger 和主应用程序。但是,如果我在模拟器上的 Messenger 中打开完全相同的 link,它会重定向到 "r31v.test-app.link...",并且除了 toast "Can't load page" 之外什么都不显示。太令人沮丧了。有什么调试方法吗?

来自 Branch.io 的亚历克斯:

Facebook 深度 linking 是最难调试的事情之一 — they intentionally don't want users to leave their app,只要有可能。

一些调试注意事项:

  1. r31v.test-app.link 是您原来的 link 域。您将其自定义为 sharing.kptncook.com,但有时 Branch 需要同时使用两者来处理某些边缘情况。您需要将以下行添加到您的清单中:

    <data android:scheme="https" android:host="r31v.test-app.link" /> <data android:scheme="https" android:host="r31v-alternate.test-app.link" />

  2. 除上述之外,您的应用内配置实现看起来还不错。

  3. 您的仪表板配置可能有问题。分支有单独的 Test and Live environments,而您目前正在使用测试版。重要的是要确保您没有在双方的值之间拆分您的实现。
  4. 深度 linking 行为在模拟器中经常无法正常工作。 始终最好使用真实设备进行测试,因为模拟器的结果通常不可靠。
  5. Facebook 有时会缓存 App Links 标签,这意味着您在打开 刚刚 分享过的 URL 或重新分享URL 以前用不同的数据发布过。

如有任何问题,请随时与我们的 Integrations team 联系!