【三方SDK】MobLink深度链接

709 阅读3分钟

深度链接简介

深度链接又名“DeepLink”,是一种允许用户直接从网页跳转到移动应用内特定页面的链接。它通过 URL SchemeUniversal Links(通用链接)实现,使得用户能够像访问网页一样访问APP内的深层内容,提升用户体验和内容可发现性。

深度链接触发的场景主要分为两种:

  • 用户已安装App情况下:在网页点击链接,可以直接跳转到App指定页面
  • 用户未安装App情况下:在网页点击链接,会先跳转应用商店,下载后首次打开App,自动跳转到指定页面

深度链接实现方式

移动端实现深度链接的本质就是 URL映射,将特定的URL与应用内的功能或页面进行关联,当访问URL时打开对应的功能和页面。

1.URL Scheme

URL Scheme 是出现较早的深度链接方式,适用于 iOSAndroid,兼容性高也相对简单,只需要在App内注册 URL Scheme 就可以在web端 通过对应的协议打开App。

URL Scheme协议格式:

scheme://path?query
  • scheme:协议名称,可自定义
  • path:想要跳转的页面路径
  • query:页面路径传递的参数

限制:

  • 依赖于平台或浏览器限制,如微信中打开的网址微信没有开放能力无法直接打开
  • App本身需要有对应页面路径及参数解析和跳转操作

2.Universal Links

Universal LinkiOS 9 以后苹果推出的 通用链接技术,通过一个https链接来打开App指定页面,无需通过Safari及额外的判断,没有安装App则跳转到自定义地址。

相对SchemeUniversal Link是一个Web Link使用上更简单:

  • 当用户已安装该App时,无需加载任何页面以及判断即可唤醒App,用户未安装App,则跳转对应的下载页面。
  • Universal Links 支持从其他App中的 WKWebViewUIWebView 中跳转到目标App
  • 配置相对复杂一些

Mob官网

官网地址:mob.com
文档地址:mob.com/wiki/detail…

MobLink限制

深度链接功能只能在浏览器中使用,微信浏览器中无法直接拉起

接入流程

1.注册/登录账号

进入官网输入账号及密码注册登录

图片

2.创建应用

2.1.【应用概览】->【创建应用】上传logo,填写应用名称后点击【确定】,创建完应用后选择【MobLink】集成

图片

2.2.应用配置

平台做了校验,配置不正常会出现各种问题,确保一次配置正确

图片

2.3.应用配置完成后,在应用【概览】中获取应用 AppKeyAppSecret

图片

2.4.配置渠道,该渠道与web触发深度链接的path路径一致

图片

3.项目配置

在项目Info.plist 中新建 “MOBAppKey”和“MOBAppSecret”并填入平台上的AppKeyAppSecret

图片

在项目 【Target】-> 【Signing & Capabilities】-> 【Associated Domains】添加平台创建的 Universal Link

图片

在项目 【Target】-> 【Info】-> 【URL Types】添加与平台应用配置一致的 URL Scheme

图片

4.注册代理

AppDelegate 中注册 MobLink 代理

#import <MobLinkPro/IMLSDKRestoreDelegate.h>
#import <MobLinkPro/MobLink.h>
#import <MOBFoundation/MobSDK+Privacy.h>
#import <MobLinkPro/MLSDKScene.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate,IMLSDKRestoreDelegate>

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   // 设置MobLink 代理
   [MobLink setDelegate:self];
 
   // 同意隐私政策后上报隐私协议
   [MobSDK uploadPrivacyPermissionStatus:YES onResult:nil];
}
 
// 场景还原delegate 
- (void)IMLSDKWillRestoreScene:(MLSDKScene *)scene Restore:(void (^)(BOOL, RestoreStyle))restoreHandler {
    if (scene.params) {
        NSDictionary *params = scene.params;
        // 处理场景还原操作
    }
    restoreHandler(YES, MLDefault);
}

@end

5.web接入

平台上应用【页面配置】-> 【引用JS文件】拷贝所有内容到web项目,配置path和参数即可

图片

友情提示

见原文:【三方SDK】MobLink深度链接)

本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。