最近在做一个电商项目,需要做一些推广、跳转之类的,所以接触到了深度跳转这个东东。
啊···· 脑壳疼·····(还有 H5 还没说要做呢😔)
所以,我放弃了😂·····
选择了个第三放来做深度跳转,选谁呢?
我是有原则😎,必须满足我的要求采用:
我选择了极光全家桶里的“极光魔链JMLink”😄。
第一次集成和使用还是遇到了一些问题和踩了写坑,也看到了一些“傻大个”在社区提的“傻大个问题(使用错误导致的问题😂,10个问题就有8个半是不会用,其他公司的SDK感觉比较死板,很多平台只能用浏览器打开,JMLink 适配了很多平台,可能是太灵活了😂,导致好些人不会用)”。
下面我来说说正确的使用吧。
不对,
下面我来为大家讲解一下各端的正确使用姿势(😎正式点)
注意了,开始上课
JMLink 是分为JS SDK、iOS SDK、Android SDK 三个端的SDK的,深度跳转一般都是 H5 界面和客户端的交互,当然也有H5、记事本、短信、邮件等渠道,魔链也都是支持的。
我这里主要讲大众化的 H5 -- APP:
H5 界面,也就是我们投放或者说分享出去的界面,需要集成JS SDK,千万别直接投放或者分享极光短链(就是你在极光控制台创建的短链,下面会具体讲到什么是短链);
H5 界面在使用JS SDK 时,小哥哥小姐姐们要认真看集成文档,太多人乱使用了🤮
额··· 这个不想说,自己点链接去注册吧!! 用力戳我😂注册
还是那个套路,还是那个味道。先创建应用,然后有AppKey,巴拉巴拉的一些东西
我创建了一个名为《Demo》的应用,然后系统会自动分配AppKey,然后进入到魔链的设置页(不知道路径的话,看下一张图的)
在这个魔链的设置页面里有如下模块:Android、iOS、高级、域名设置:
Android模块有如下东东:
iOS模块有如下东东:
这个高级设置里的东西有必要提醒一下各位,没事别找事,不要乱开乱关,会蛋疼的😔
这个域名设置就厉害哦🤩,极光会给每个应用的魔链分配多个域名,至少是2个哈,为什么这样做了(我猜是如下原因😂):
好了,我们继续看这个域名设置界面,
我们先来定义个使用场景吧,下面的工作更方便说明情况,
举个栗子:
某电商平台,正在浏览手机商品详情,我分享这个给微信好友,好友点开分享的商品H5 页面,然后点击里面的【打开APP】按钮,跳转到APP,然后跳转到手机商品详情。
前面把各种准备和配置都整好了,现在开始工作了,既然是深度跳转,那么得先有条链接,极光平台称职为:短链
创建需要填写一些东西,我这里使用的是动态参数,因为大部分情况下参数都是变动的,不可能是写死的,比如商品id 每次肯定是不一样的。
创建短链的域名是可以选择的(不清楚的就用默认的域名)
对于短链参数的设置:
创建好了之后就是这样的
短链接:就是我们前面所说的“短链”,这个短链直接放微信/QQ/浏览器里是有默认模板页的,可以打开APP,但是前面说了强烈建议不要直接使用这个短链进行投放,要有自己的H5 页面。
在测试阶段可以直接使用这个短链来测试,检验跳转、获取参数等。
对于JS SDK 的使用,请查看 Web SDK 集成指南 和 Web SDK API
这里重点讲一下参数的使用,对于 JS SDK 的传参方式我是推荐使用下面两种:
注意:
* 在界面初始化时就要去初始化JS SDK ,不要点击按钮时才初始化
* 如果不使用 JS SDK 就跳过此步骤,直接使用 短链 进行和客户端的测试联调
iOS端需要配置好bundle id 、scheme 和 Universal link域名,这些简单配置的值都是在极光控制台可以看到的,上面章节有截图说明的。xcode 的具体配置路径就看iOS SDK 集成指南 (很简单的😔,不要写错)
CocoaPods导入
1、cd到项目根目录,执行pod setup
2、在 Podfile 文件中添加命令:pod 'JMLink'
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- if (@available(iOS 14,*)) {
- /// 因为 iOS 14 开始APP与外部通过剪切板传递数据会有系统弹框
- /// 如果不介意有系统弹框可以去掉这个判断
- /// 通过剪切板来传递数据会很大程度增加成功率
- /// 注:SDK 不会读其他数据,只是从 H5 传递魔链的数据到 SDK
- [JMLinkService pasteBoardEnable:NO];
- }
-
- [JMLinkService setDebug:YES];
- JMLinkConfig *mlinkConfig = [[JMLinkConfig alloc] init];
- mlinkConfig.appKey = JG_APP_KEY;
- [JMLinkService setupWithConfig:mlinkConfig];
-
- ....
- }
初始化SDK要放在主线程,启动时就初始化
JMLink 通过标准的 Scheme(iOS<9),Universal Links(iOS≥9)技术,在 app 已安装的情况下,从各种浏览器(包括微信、QQ、新浪微博、钉钉等主流社交软件的内置浏览器)拉起 app 并传递动态参数。
a) 集成通用链接(Universal Links),只适用于iOS9以上
在 Xcode 中配置 JMLink 为当前应用生成的关联域名(Associated Domains):
注意:极光会为应用分配多域名,我们只需要把所有分配的域名都填上就好了。
在AppDelegate
中添加通用链接(Universal Links)回调方法,委托给 JMLink SDK 来处理
- - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray
UIUserActivityRestoring>> * _Nullable))restorationHandler { - [JMLinkService continueUserActivity:userActivity];
- return YES;
- }
b) 集成 Scheme,只适用于iOS9以下
在Xcode里选中 Target -> Info -> URL Types,配置你在极光控制台设置的 Scheme,如图所示:
在AppDelegate
中添加 Scheme 回调方法,委托给 JMLink SDK 来处理
- //iOS9以下,通过url scheme来唤起app
- - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
- [JMLinkService routeMLink:url];
- return YES;
- }
- //iOS9+,通过url scheme来唤起app
- - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(nonnull NSDictionary *)options{
- [JMLinkService routeMLink:url];
- return YES;
- }
3.3.4 获取参数
一链拉起、场景还原、无码邀请,获取参数其实都可以使用同一个接口来获取,只是一个概念的转换和理解。
为什么只写一个defaultHandler
的回调呢?,那个通过短链服务 key 获取参数的呢?获取无码邀请参数的接口呢?
😔 很多人会问,有这么多接口为什么就用一个?
其实,很简单,截图上也说了,说白了深度跳转就是 H5 传值到 APP ,我们拿到参数后做自己的逻辑处理,是不是?
所以,不需要去整那么多花花肠子。
我们我们需要的只是正确拿到参数就可以了,所以都走defaultHandler
回调接口去拿,因为SDK就算匹配短链服务 key 失败也会走。
又有人说,我们就是需要用无码邀请参数去做地推的啊。
卧槽,大哥,换个思路好不啦。无码邀请只不过是SDK单独给了一个接口让你去设置和获取参数而已,你何必这么为难自己,还为难前端开发,多去写一个接口呢,还多管一套逻辑。
所以,我们只需要定义好自己的参数协议,然后通过JS SDK 传动态参数值/自定义参数值,最后客户端直接调用一个defaultHandler
回调接口获取参数就好了。拿到参数后自己去判断是什么类型、跳转到什么页面、是否地推参数·····等,都是自己的参数协议
注意:
Android 端这边请认真仔细严格参考Android集成指南 配置包名、scheme之类的东西,这些都很基础啊,不要配错了,到时候又叽叽哇哇说这个失败啊,那个失败的。😔
对于获取参数,和iOS端一样,就注册一个defaultHandler
就好了,其他的不需要,不需要,不需要。
原理和解析内容和上面iOS的一样。
注意:
😄文字太多,太无力,程序员们都不喜欢看文章,那直接看代码的。
其实,这个代码就是极光的😂,他们有个相对完整的APP,还有源码哦
极光魔链 APP iOS
极光魔链 APP Android
极光魔链 APP Web
(其实三个都是在同一个GitHub仓库 极光魔链APP Demo)
原创声明:本文系作者授权极光社区发表。如有侵权,请联系 stallonedll@sina.com 删除。