我用一个Activity
创建了一个简单的应用程序,并使用这样的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="kz.ant.branchio">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name=".MyApp">
<meta-data android:name="io.branch.sdk.BranchKey" android:value="key_live_XXXXXXXXXXX" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<data android:scheme="branchiotestapp" android:host="open" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</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>
</application>
</manifest>
在我key_live_XXXXXXXXXXX
我粘贴了我的仪表板实时密钥。
然后在我的申请中我添加了这个:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
Branch.getAutoInstance(this);
}
}
我的MainActivity
有以下几行代码:
@Override
protected void onStart() {
super.onStart();
Branch branch = Branch.getInstance();
branch.initSession(new Branch.BranchReferralInitListener(){
@Override
public void onInitFinished(JSONObject referringParams, BranchError error) {
if (error == null) {
// params are the deep linked params associated with the link that the user clicked -> was re-directed to this app
// params will be empty if no data found
// ... insert custom logic here ...
} else {
Log.i("MyApp", error.getMessage());
}
}
}, this.getIntent().getData(), this);
}
@Override
public void onNewIntent(Intent intent) {
this.setIntent(intent);
}
我的应用程序URI方案是branchiotestapp://
,我理解当用户点击此方案的链接时,它应该打开我的应用程序。然后我用这段代码创建了简单的HTML网页:
<html>
<head>
<title>Test</title>
</head>
<body>
<a href="branchiotestapp://mysite.com">CLICK</a>
</body>
</html>
当我使用手机浏览器打开此HTML并点击此链接时,我的Android应用程序即使已安装也不会打开
为什么会这样?我误解了branch.io是如何工作的吗?
答案 0 :(得分:2)
此处的问题是您在网页上添加的链接。
使用Branch时,您不构建自己的意图字符串:使用分支链接。您可以在“营销”页面上的应用程序的分支仪表板中创建分支链接(此处:https://dashboard.branch.io/marketing);在您的移动应用中使用Branch SDK调用;或者通过将查询参数附加到您的分支链接域(可以在仪表板的“链接设置”页面的底部找到,此处为:https://dashboard.branch.io/settings/link)。有关各种方法的完整说明,请访问:https://dev.branch.io/getting-started/creating-links/overview/
关于您在网页上放置的特定意图字符串,您尚未定义任何意图过滤器或活动来处理&#34; mysite.com&#34; URI路径。用&#34; open&#34;替换此URI路径可能会使链接工作,但我建议创建分支链接作为最佳方法。
答案 1 :(得分:0)
从您的代码中,我可以看到您缺少活动的单任务启动模式,请分配
android:launchMode="singleTask"
branch io集成中提到了它,如果您也错过了其他任何内容,可以查看https://help.branch.io/developers-hub/docs/android-basic-integration。
需要单任务启动模式 单任务模式仅在活动堆栈中不存在时才实例化主活动/飞溅活动。
如果活动存在于后台,则该活动的每个后续意图都将其带到前台。