从Facebook App打开的Deeplink转到PlayStore

时间:2017-07-19 15:25:41

标签: android facebook branch.io

WhatsApp,Slack乃至Facebook Messenger的深层链接工作正常,但Facebook App本身并不起作用。

在branch.io链接设置中,我启用了:

  • ✓始终尝试打开应用
  • ✓启用应用链接+ SHA256证书指纹
  • 已更改为自定义链接域:sharing.kptncook.com
  • 成功验证了" Facebook安装广告"

Facebook开发者设置:

  • 包名,类名和哈希是正确的(Facebook登录也可以正常工作)
  • ✓SSO已激活
  • ✓激活深层链接

Android应用版本:

  • Facebook Messenger:126.0.0.9.84
  • Facebook:133.0.0.19.83

示例链接:sharing.kptncook.com/pIbQ/FKktug85TE

Manifest的活动部分:

    <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>

的活动:

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);
}

}

其他信息:在模拟器中,某些链接无法打开,有些链接会打开。如果我发送的链接无法从模拟器发送到真实设备,则可以在真实设备上使用。

我做错了什么?

更新: 新的共享链接现在可以在Facebook Messenger和主应用程序中的Real设备上运行。但是如果我在模拟器上的信使中打开完全相同的链接,它会重定向到&#34; r31v.test-app.link ...&#34;除了敬酒之外什么都不显示&#34;不能加载页面&#34;。这太令人沮丧了。任何想法如何调试它?

1 个答案:

答案 0 :(得分:2)

来自Branch.io的Alex:

Facebook深度链接是最难调试的内容之一 - they intentionally don't want users to leave their app,尽可能。

一些调试说明:

  1. r31v.test-app.link是您原来的链接域。您将此自定义为sharing.kptncook.com,但有时Branch需要使用它们来处理某些边缘情况。您需要在Manifest中添加以下行:

    <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,您目前正在使用Test 1。确保您没有在双方的值之间拆分实施方案非常重要。
  4. 深层链接行为在模拟器中经常无法正常工作。 始终最好用真实设备进行测试,因为模拟器的结果通常不可靠。
  5. Facebook有时会缓存App Links标记,这意味着在打开共享的网址时,或者重新共享以前使用不同数据发布的网址时,您可能会收到不可预知的结果
  6. 随时提出问题,随时与我们的Integrations team联系!