三、Deeplink调试与参数接收
创建好了营销活动也集成完成了SDK,下面我们可以尝试通过一个简单的HTML DEMO来调试智能超链。HTML示例代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
<meta charset="utf-8" />
<script src="https://g.alicdn.com/jssdk/u-link/index.min.js"></script>
</head>
<body>
<div>
<h1>测试DeepLink跳转</h1>
<button id="btn1">唤起 App</button>
</div>
</body>
<script type="text/javascript">
ULink.start({
id: 'usr1ffnv829fu02h', /* 平台为每个应用分配的方案link ID,必填 */
data: {
custom:"customn1",
custom2:"custom2"
} /* 自定义参数,选填 */
}).ready(function(ctx) { /* 初始化完成的回调函数 */
document.getElementById('btn1').onclick = function(e){
ctx.wakeup(); /* 用户点击某个按钮时启动app */
};
});
</script>
<style type="text/css">
div {
text-align: center;
}
button {
font-size: 60px;
}
h1 {
font-size: 60px;
}
</style>
</html>
如上代码所示,u-link是友盟智能超链在JavaScript端的SDK,调用ULink的start方法时,配置的对象id就是我们创建的营销活动的id,通过这种方式唤醒应用程序会自动将后台配置的参数传递过去,同时我们也可以在data中定义更多动态参数进行传递。
对于Xcode工程,在应用启动是首先需要对U-Link的SDK进行初始化操作,如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[UMConfigure initWithAppkey:@"602505af668f9e17b8aef059" channel:nil];
return YES;
}
之后实现如下几个AppDelegate的回调来处理超链:
#import "AppDelegate.h"
#import <UMCommon/UMConfigure.h>
#import <UMCommon/MobClickLink.h>
@interface AppDelegate ()<MobClickLinkDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[UMConfigure initWithAppkey:@"602505af668f9e17b8aef059" channel:nil];
return YES;
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [MobClickLink handleLinkURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
return [MobClickLink handleLinkURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
return [MobClickLink handleUniversalLink:userActivity delegate:self];
}
// 解析后的回调函数,这里可以拿到所有的参数与跳转路径信息
- (void)getLinkPath:(NSString *)path params:(NSDictionary *)params {
NSLog(@"getLinkPath:%@, %@", path, params);
}
@end
需要注意,如果是新版Xcode创建的应用程序,需要在SceneDelegate类中实现上面的方法。