从 Facebook App 打开的 Deeplink 转到 PlayStore
Deeplink opened from Facebook App goes to PlayStore
deeplinking 在 WhatsApp、Slack 甚至 Facebook Messenger 中运行良好,但在 Facebook 应用程序本身中不起作用。
在 branch.io Link 设置中我启用了:
- ✓ 始终尝试打开应用程序
- ✓ 启用应用 Links + SHA256 证书指纹
- 更改为自定义 Link 域:sharing.kptncook.com
- 已成功验证 "Facebook Install Ads"
Facebook 开发者设置:
- 包名,class 名称和哈希值正确(Facebook 登录也可以正常工作)
- ✓ SSO 已激活
- ✓ Deep-Link 已激活
Android 应用程序版本:
- 脸书信使:126.0.0.9.84
- 脸书:133.0.0.19.83
示例 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,只要有可能。
一些调试注意事项:
域 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" />
除上述之外,您的应用内配置实现看起来还不错。
- 您的仪表板配置可能有问题。分支有单独的 Test and Live environments,而您目前正在使用测试版。重要的是要确保您没有在双方的值之间拆分您的实现。
- 深度 linking 行为在模拟器中经常无法正常工作。 始终最好使用真实设备进行测试,因为模拟器的结果通常不可靠。
- Facebook 有时会缓存 App Links 标签,这意味着您在打开 刚刚 分享过的 URL 或重新分享URL 以前用不同的数据发布过。
如有任何问题,请随时与我们的 Integrations team 联系!
deeplinking 在 WhatsApp、Slack 甚至 Facebook Messenger 中运行良好,但在 Facebook 应用程序本身中不起作用。
在 branch.io Link 设置中我启用了:
- ✓ 始终尝试打开应用程序
- ✓ 启用应用 Links + SHA256 证书指纹
- 更改为自定义 Link 域:sharing.kptncook.com
- 已成功验证 "Facebook Install Ads"
Facebook 开发者设置:
- 包名,class 名称和哈希值正确(Facebook 登录也可以正常工作)
- ✓ SSO 已激活
- ✓ Deep-Link 已激活
Android 应用程序版本:
- 脸书信使:126.0.0.9.84
- 脸书:133.0.0.19.83
示例 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,只要有可能。
一些调试注意事项:
域
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" />
除上述之外,您的应用内配置实现看起来还不错。
- 您的仪表板配置可能有问题。分支有单独的 Test and Live environments,而您目前正在使用测试版。重要的是要确保您没有在双方的值之间拆分您的实现。
- 深度 linking 行为在模拟器中经常无法正常工作。 始终最好使用真实设备进行测试,因为模拟器的结果通常不可靠。
- Facebook 有时会缓存 App Links 标签,这意味着您在打开 刚刚 分享过的 URL 或重新分享URL 以前用不同的数据发布过。
如有任何问题,请随时与我们的 Integrations team 联系!