开发者可以通过创建深度链接来将用户转到应用中的特定页面。如果用户已在设备上安装您的应用,SE SDK 会转向链接中指定的页面。用户通过链接打开应用后,SDK 就可以读取深度链接数据了,具体步骤如下:
1.1 配置 URI Scheme
配置 AndroidManifest.xml
如果用户已经安装了您的应用,那么在与包含深度链接信息的链接互动时,应用就会打开。SE SDK 能够解析深度链接信息,在应用中使用。要设置深度链接,请选择一个唯一的 Scheme 名称 。
开发者可以进行设置,在用户与深度链接互动时启动特定活动。为此请进行下列操作:
- 在您的
AndroidManifest.xml
文件中为活动指定 Scheme 名称 。 - 向活动定义添加一个
intent-filter
节点。 - 在
intent-filter
节点中添加一个包含 Scheme 名称的android:scheme
数据节点。
以下示例展示了如何在AndroidManifest.xml文件中设置名为 MainActivity
的活动,并以 Scheme 名称 sedemo 将其打开。
<activity
android:name=".activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="sedemo" />
</intent-filter>
</activity>
如果用户点击了如下连接,且该参数中包含您的 Scheme 名称 ,并且定义了其接受 URL Scheme 协议格式为scheme://yourhost:port/path
,那么活动就会触发。
示例 :sedemo://lionmobo.com/goods_detail?param1=value1¶m2=value2
接收深度链接信息
开发者需要在APP的 onCreate
或 onNewIntent
方法,传递活动 intent 对象中的深度连接信息应用启动,且上述方法之一被调用后,您就可以读取深度链接内容了。然后您可以在应用的其他位置访问这些信息。
在 onCreate
或 onNewIntent
方法中调用 getData()
方法,以提取深度链接信息。
通过 onNewIntent 方法:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri data = intent.getData();
// data.toString() -> deeplink具体信息.
}
通过 onCreate 方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
Uri data = intent.getData();
// data.toString() -> deeplink具体信息.
}
1.2 配置App Links
根据App Links的官方定义,App Links是一种特殊的DeepLink(与URL Scheme调起App的实现方式不同),当点击你的网站链接的时候能够调起你的App,不出现选择界面, 也不会出现类似URL Scheme的重复问题,此种方式不支持在浏览器中调起
检查 assetlinks.json
在浏览器中输入https://{domain}/.well-known/assetlinks.json
, 查看是否能正常下载assetlinks.json文件
其中,domain是您再SE后台配置好的域名,如:tlink.solar-engine.com
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "开发者应用唯一包名",
"sha256_cert_fingerprints":
["开发者应用的sha256_cert_fingerprints"]
}
}]
配置 AndroidManifest.xml
<activity
android:name=".activity.SplashActivity">
<intent-filter>
<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="开发者在SE后台配置的域名"
android:pathPattern="开发者在SE后台配置的路径地址" />
</intent-filter>
</activity>
1.3 通过深度链接进行再归因
public void appDeeplinkOpenURI(Uri uri);
调用示例:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri data = intent.getData();
if(data != null) {
SolarEngineManager.getInstance().appDeeplinkOpenURI(data);
}
}
1.4 设置 deeplink 链接监听 (需要在SDK 初始化之前调用)
setDeepLinkCallback(DeepLinkCallBack callback);
调用示例:
SolarEngineManager.getInstance().setDeepLinkCallback(new DeepLinkCallBack() {
@Override
public void onReceived(int code, DeeplinkInfo deeplinkInfo) {
if(code == 0){
//处理deeplink回调成功逻辑
}
}
});
DeeplinkInfo 类参数详解:
参数名称 | 参数含义 | 参数类型 |
sedpLink | 跳转参数 | String |
turlId | 7位短链 | String |
from | 链接类型 | String |
customParams | 自定义参数 | Map<String,Object> |
errorCode 错误码:
错误码 | code码释义 |
0 | 成功 |
1 | URI 为空 |
2 | URI 非法 |
1.5 上报deeplink唤醒事件(re_engagement)
开发者可以通过上报 deeplink 唤醒成功事件来进行拉活归因和业务分析。
public synchronized void trackAppReEngagement(SEAppReEngagementModel seAppReEngagementModel);
调用示例:
SolarEngineManager.getInstance().trackAppReEngagement(new SEAppReEngagementModel());