我正在尝试在 Android 上运行延迟深度链接。我在仪表板中添加了一个测试设备并重置了设备数据并确保应用程序已卸载。当我单击 Branch.io 链接时,它会按预期转到 Play 商店。然后我从 Android Studio 启动应用程序到手机上,然后日志显示 Branch SDK 向
https://api2.branch.io/v1/install
发送了请求,但问题是响应不包含原始链接、查询参数或我设置的键值对在仪表板中。这是我在 onInitFinished
: 中收到的 JSONObject
{"+match_guaranteed":true,"link_click_id":"976953359423305632","+clicked_branch_link":true,"+click_timestamp":1634196720,"+is_first_session":true,"utm_source":"test-referrer"}
其他信息在哪里?这不包括原始链接、键值对、标签等。
为了进行比较,这是我在 iOS 应用程序中收到的内容:
["$ios_passive_deepview": "branch_passive_default", "source": "test-referrer", "+is_first_session": 1, "~channel": test-referrer, "$matching_ttl_s": 7200, "~id": 976763609660742721, "~creation_source": 1, "$one_time_use": 0, "~marketing": 1, "~referring_link": "https://myapp.test-app.link/test-referrer", "~feature": "test", "+click_timestamp": 1634249299, "+match_guaranteed": 0, "$og_description": "My app description", "$og_title": "MyApp", "+clicked_branch_link": 1, "$marketing_title": "Test Referral Link", "~tags": ["test-referrer"], "~campaign": "test"]
如果我旋转手机来重新创建 Activity 或重新打开应用程序一次,它就会向
https://api2.branch.io/v1/open
发送请求并返回我最初期望的所有信息。 安装应用程序后如何获取信息?
我目前正在使用 myapp.test-app.link 进行测试,并且我在自定义应用程序类的
Branch.enableTestMode()
中的 Branch.getAutoInstance(this)
之前调用 onCreate()
。我也尝试了实时链接并得到了相同的结果。
这些是我在 build.grade 中使用的库:
implementation 'io.branch.sdk.android:library:5.0.13'
implementation 'com.google.firebase:firebase-appindexing:20.0.0'
implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
implementation 'androidx.browser:browser:1.3.0'
我还在仪表板和应用程序中设置了应用程序链接和 uri 方案。在安装后的第一个会话中使用
getFirstReferringParams()
和 getLatestReferringParams()
也没有帮助。
更新: 重复我上面描述的完全相同的测试过程,现在传递到
onInitFinished
的 JSONObject 的信息更少,并且声称我没有单击分支链接:
{"+clicked_branch_link":false,"+is_first_session":true}
并且
getFirstReferringParams()
返回一个空的 json 对象。
我即将开始以这种速度寻找替代方案。
我通过在初始化意图时在
intent.putExtra("branch_force_new_session", true);
之后添加 this.activity.setIntent(intent);
解决了这个问题。像这样的东西:
...
this.activity.setIntent(intent);
intent.putExtra("branch_force_new_session", true);
Branch
.sessionBuilder(this.activity)
.withCallback(branchReferralInitListener)
.reInit();
...
请在此处查找
branch_force_new_session
参考。
丢失数据的另一个原因是链接别名不存在,但在 iOS 中尝试使用相同的链接时,情况似乎并非如此。
这是应用补丁的脚本示例。每次
pub get
或 pub update
后执行此操作:
#!/bin/sh
# NOTE: You can have PUB_CACHE in a different location
PUB_CACHE="$HOME/.pub-cache/hosted/pub.dev"
getVersion() {
echo "$packages" | grep "^$1 " | awk '{print $2}'
}
patchPackage() {
flag=$1
package=$2
file=$3
from=$4
to=$5
version=$(getVersion $package)
sed -i'.bak' "$flag" "s/$from/$to/g" "$PUB_CACHE/$package-$version/$file"
echo "✔️ $package $version"
}
# * flutter_branch_sdk
patchPackage -e flutter_branch_sdk 'android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkPlugin.java' 'this.activity.setIntent(intent);' 'this.activity.setIntent(intent);intent.putExtra("branch_force_new_session", true);'