接入集成
如果您希望将H5页面从app分享到微信等平台,实现从app——>微信——>app的分享场闭环链路,可以集成U-Share的SDK集成,即可拥有社交分享加授权登录能力
一、接入SDK
1.获取SDK
1.1 手动集成
请在压缩包里解压智能超链SDK
解压将会拿到相关的common包以及link包。
2.集成 SDK
当您下载了U-Link SDK后,就可以开始集成了。common包的集成文档请参考官网的U-App集成文档
集成后需要再对App工程进行U-Link相关功能的处理
3 初始化 SDK
请参考合规指南,然后进行初始化U-Link SDK,请参考通用初始化接口
初始化时appkey请填写后台应用的appkey
4 混淆设置
请参考U-App集成文档添加混淆配置
二、唤起App并获取参数
当您在U-Link后台【设置-Deeplink配置】页面填写完基础参数,并且在【分析-裂变营销】页面配置完跳转页面path和kv参数后,您还要在自己App里进行代码处理,使得App能够解析这些参数并且能够跳转到相应的页面。
1. 注册Scheme
Scheme为一个标示App的字符,详细介绍请参考Scheme的介绍,请在您的App代码工程的AndroidManifest.xml配置您在后台填写的Scheme参数,这样JSSDK才能通过Scheme唤起您的App。如下示例中的Scheme为mobclick,配置完成后,请参考第3步,在MainActivity中进行其他相关处理。
<activity
android:name=".MainActivity"
android:launchMode="singleTask"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<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="mobclick"/>
</intent-filter>
</activity>推荐将Scheme配置在App首启动界面,但如开发者希望拉起App其他页面,也可以配置在App其它界面
2. 启动或安装参数
接下来我们需要处理配置参数,以实现app跳转到指定页面等功能,总体分为两种场景:
第一是启动,APP被H5页面通过U-Link方式拉起后,您需要处理通过URL cheme方式传进来的跳转页面path和kv,完成页面跳转。
第二是安装,APP被H5页面引导新安装后,通过getInstallParams和wakeupurl获得配置的新装参数和跳转链接(包含跳转页面path和自定义kv),APP拿到配置的新装参数后可按需处理,APP拿到跳转链接后可类似上面第一部分解析出跳转页面path和kv,完成页面跳转。
详细处理方法请看下方文档
3. 处理传进来的URL
请在MainActivity的onCreate函数中增加如下代码,getIntent().getData()为传递进来的页面,umlinkAdapter为UMLinkListener类型的回调函数,可参考第6条的说明。
MobclickLink.handleUMLinkURI(this, getIntent().getData(), umlinkAdapter);4. App后台存活时
当App还在后台活跃,并未完全关闭时,这种情况需要在MainActivity中增加或修改onNewIntent函数,否则无法截获传递进来的URL。
@Override
protectedvoid onNewIntent(Intent intent){
super.onNewIntent(intent);
Uri uri = intent.getData();
// 此处要调用,否则App在后台运行时,会无法截获
MobclickLink.handleUMLinkURI(this, intent.getData(), umlinkAdapter);
}5. 获取新安装App参数
用户首次安装App,打开App时需要调取如下接口(非首次安装不用调用),调取此接口后服务端会进行模糊匹配,模糊匹配成功后App就可以获取到新安装参数 。
1.此接口必须要等到用户同意隐私政策之后再延迟1~2秒调取,
目的是排除因网络延迟问题,造成模糊匹配失败
2.U-Link v1.2.0 SDK及以后,支持跨端打通模糊匹配技术,突破传统IP和剪切板模糊匹配的缺点,提升成功获取新安装参数的概率。跨端打通模糊匹配技术说明
3.U-Link v1.1.0 SDK及以后,支持剪切板模糊匹配技术,以提高成功获取新安装参数的概率,涉及到剪切板读和写功能,请仔细阅读剪切板使用说明文档。如不希望使用剪切板功能,则调取下方新版接口将clipBoardEnabled设置为false即可,我们会通过IP或者跨端打通技术进行模糊匹配
//以下两个接口任选其一即可
//旧版接口,默认读剪切板
MobclickLink.getInstallParams(this, umlinkAdapter);
//新版接口,将clipBoardEnabled设置为false,SDK不会读剪切板;设置为true会读剪切板
public static void getInstallParams(Context context, boolean clipBoardEnabled, UMLinkListener listener)
调取此接口,如果模糊匹配成功,您能够获取到installParams和URL两个参数,
installParams:您在U-Link后台裂变营销页创建活动时填写的固定【首次安装传参】参数,此参数不是动态的

URL:服务端拼接的wakeupurl,格式大致是scheme://拼接域名/App跳转path?App跳转参数kv&JSSDK自定义参数kv&linkid=xxx等等,wakeupurl里包含了后台填写的固定页面跳转参数和您在H5 JSSDK里携带的自定义参数。即URL里包含了JSSDK传递的data自定义参数。
您可以用
第6步里的: MobclickLink.handleUMLinkURI(mContext, uri, umlinkAdapter)从URL里解析出传递的自定义参数

当您调取此接口不能获取到任何参数时,可以参考这个FAQ
getInstallParams一般建议在应用新安装后第一次启动时调用,而不需要应用每次启动时都调用,具体可参考我们的demo示例代码。SDK会把getInstallParams获得的数据缓存在本地,APP以后再需要的时候也可以再次调用getInstallParams获得,此时不会再走模糊匹配的逻辑。可是如果用户把App卸载了,那么用户自行重装的时候服务端会再次进行模糊匹配
6.实现umlinkAdapter回调函数
该回调函数包含三个方法:
onLink:对跳转App的处理,唤起已安装App会走这个回调,可以接收到开发者在U-Link后台设置页配置的Path、App页面传参以及在JSSDK传递的data自定义参数,开发者可以根据这些信息处理后续逻辑,例如唤起App时跳转到App指定页面
onInstall:为获取新装参数的处理,App首次安装启动时,开发者调取getInstallParams新安装参数接口会走这个回调,此处返回两个参数,一个是开发者在后台填写的首次安装传参install_params,另一个是服务端拼接的wakeup url,包含了JSSDK传递的data自定义参数。
开发者可以用
MobclickLink.handleUMLinkURI(mContext, uri, umlinkAdapter)从URL里解析出传递的自定义参数。根据这些信息可以处理后续逻辑,例如安装启动App时跳转到App指定页面、携带参数安装、绑定邀请关系
3. onError:发生网络错误或者超时情况的回调
UMLinkListener umlinkAdapter =newUMLinkListener(){
@Override
publicvoid onLink(String path,HashMap<String,String> query_params){
if(!path.isEmpty()){
//此处获得path即为后台配置的页面path
}
if(!query_params.isEmpty()){
//此处获得query_params即为后台配置的页面启动唤起的参数kv键值对
}
//针对path和query_params做页面跳转等处理
}
@Override
publicvoid onInstall(HashMap<String,String> install_params,Uri uri){
if(install_params.isEmpty()&& uri.toString().isEmpty()){
//没有匹配到新装参数,示例弹框
AlertDialog.Builder builder =newAlertDialog.Builder(mContext);
builder.setMessage("没有匹配到新装参数");
builder.setNegativeButton("OK",newDialogInterface.OnClickListener(){
publicvoid onClick(DialogInterface dialog,int whichButton){
}
});
builder.show();
}
else{
if(!install_params.isEmpty()){
//此处获得install_params即为配置的新装参数kv键值对
}
if(!uri.toString().isEmpty()){
//可将uri交给handleUMLinkURI处理,回调至onLink
MobclickLink.handleUMLinkURI(mContext, uri, umlinkAdapter);
}
}
}
@Override
publicvoid onError(String error){
//发生网络错误或超时等异常,示例弹框
AlertDialog.Builder builder =newAlertDialog.Builder(mContext);
builder.setMessage(error);
builder.setNegativeButton("OK",newDialogInterface.OnClickListener(){
publicvoid onClick(DialogInterface dialog,int whichButton){
}
});
builder.show();
}
};U-Link集成文档介绍完毕,完成后请在测试设备上测试Deeplink拉起功能是否正常,以及在概况页查看U-Link相关指标数据是否正常
如果您希望统计出H5带来的新老用户,后续在App里的留存率/注册/付费等情况,可以参考统计App后续的留存率/注册/付费等数据
如果您希望实现老带新完整链路奖励和分享邀请KOL用户统计,可以参考社交分享关系链统计功能文档
常见问题
三、配置Deeplink链接
1. DeepLink 技术简介
DeepLink(深度链接)是一种通过特定 URI 直接打开 Android 应用并跳转至指定页面的技术。它允许从 Web 页面、其他应用或广告中直接唤起目标 App,并传递参数,从而提升用户体验和转化率。
典型应用场景包括:
电商类 App:点击商品分享链接,直接跳转到 App 内的商品详情页;
资讯类 App:点击新闻链接,进入 App 内对应文章页面;
游戏类 App:通过邀请链接加入指定房间或队伍;
广告引流:社交平台广告点击后直达 App 内活动页;
拉新活动:老用户分享 H5 链接,新用户点击后跳转至注册或领取奖励页面;
沉默用户唤醒:通过推送含 DeepLink 的通知,引导用户回到特定功能页面。
2. Android DeepLink 原理
DeepLink 的核心机制是利用 URI 的 scheme 协议,由操作系统解析并匹配已注册该 scheme 的应用,进而启动对应 Activity 并传递数据。
URI 示例:
myapp://test/spec?param1=p1¶m2=p2
关键组成部分:
scheme:协议名称,如myapp或https;host:主机地址;port:端口号(可选);path/pathPrefix:路径匹配规则;
系统根据 <intent-filter> 中的配置识别可响应的 Activity。
3. Android Manifest 配置
在 AndroidManifest.xml 中为需要响应 DeepLink 的 Activity 添加 intent-filter:
<activity android:name=".DeepLinkActivity">
<intent-filter>
<data
android:scheme="myapp"
android:host="test"
android:pathPrefix="/spec" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>说明:
android:scheme:自定义协议,如myapp;android:host和path用于精确匹配 URI 路径;BROWSABLE类别确保浏览器可触发;DEFAULT类别允许隐式 Intent 匹配。
4. 接收并处理 DeepLink 数据
当用户点击 DeepLink 后,系统会启动注册了对应 intent-filter 的 Activity。开发者需要在该 Activity 中解析传入的 Intent 数据。
1)获取 DeepLink URI
在目标 Activity 的 onCreate() 或 onNewIntent() 方法中获取原始 URI:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_deeplink);
handleDeepLink(getIntent());
}@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
handleDeepLink(intent);
}2)解析 URI 参数
private void handleDeepLink(Intent intent) {
Uri data = intent.getData();
if (data != null) {
String scheme = data.getScheme(); // myapp
String host = data.getHost(); // test
String path = data.getPath(); // /spec
String param1 = data.getQueryParameter("param1"); // p1
Log.d("DeepLink", "Scheme: " + scheme);
Log.d("DeepLink", "Host: " + host);
Log.d("DeepLink", "Path: " + path);
Log.d("DeepLink", "Param1: " + param1);
// 根据 path 或参数跳转到不同页面
navigate(path, param1);
} else {
Log.w("DeepLink", "No data found in intent.");
}
}3)根据 DeepLink 内容进行页面跳转
private void navigate(String path, String params) {
if ("/spec".equals(path)) {
Intent target = new Intent(this, DetailActivity.class);
target.putExtra("param1", params);
startActivity(target);
} else if ("/news".equals(path)) {
Intent target = new Intent(this, NewsActivity.class);
target.putExtra("param1", params);
startActivity(target);
} else {
startActivity(new Intent(this, MainActivity.class));
}
...
}5. 延迟深度链接(Deferred DeepLink)
延迟深度链接(Deferred DeepLinking)指当用户未安装 App 时,点击链接先跳转至应用商店或浏览器下载,安装后首次打开时仍能获取原始链接参数,实现“安装后跳转”。
实现方式
使用第三方服务(如 U-Link、Firebase Dynamic Links等)记录用户点击行为;
安装后通过设备指纹或归因分析还原原始链接上下文;
开发者在 App 启动时获取参数并跳转至目标页面。
适用于拉新、裂变、广告归因等场景
6. 测试 DeepLink 是否生效
方法一:本地 HTML 测试
创建一个测试 HTML 文件:
<!DOCTYPE html>
<html>
<head><title>Test Deeplink</title></head>
<body>
<a href="myapp://test/spec?param1=123">点击打开应用</a><br/>
</body>
</html>部署到本地服务器或将文件发送到手机,用浏览器打开测试。
方法二:ADB 命令测试
adb shell am start -W -a android.intent.action.VIEW \
-d "myapp://test/spec?param1=123" com.example.app观察是否成功启动 App 并跳转。
7. 最佳实践与注意事项
避免多个 Activity 注册相同 scheme+host,防止系统弹出选择框;
记录 DeepLink 打点日志,用于数据分析与归因;
考虑降级处理:若无法处理 DeepLink,应引导用户至首页或提示错误;
注意安全:不要信任外部传入的参数,防止 XSS 或非法跳转。