关于ios:iOS端如何实现MobLink的场景还原功能

97次阅读

共计 3966 个字符,预计需要花费 10 分钟才能阅读完成。

下载 SDK

1. 登录官网 2. 点击这里 下载 SDK 勾选 Moblink,点击下载

导入 SDK

1. 将整个 SDK 文件,外面 MobLinkPro.framework,MOBFoundation.framework 拖到我的项目中,如下图:

勾选如下 3 项

增加依赖库

抉择我的项目 Target – Build Phases – Link Binary With Libraries,而后抉择“+”进行增加零碎库:
libsqlite3
libz1.2.5
libc++

Mob 后盾与我的项目配置

(1)如下,点击进去本人注册的利用,会看到 MobLink 上面的根底配置项,如下图:

Universal Link(必填,咱们已生成能够间接用咱们生成的):强烈建议应用 Mob 主动生成的 Universal Link。iOS 9.0 及以上应用 Universal Link 能优化场景复原过程,提供更好的用户体验。抉择并应用咱们帮您生成的 Universal Link 并正确配置到您的我的项目中,将为您节俭大量工作和工夫。我的项目里配置如下:

Team ID(必填):
开发团队的 ID,可在苹果开发者后盾查看:

Bundle ID(必填):
我的项目惟一标识。请务必与我的项目中保持一致。可见于我的项目 Info.plist 文件的 Bundle identifierURL Scheme(必填):在后盾填写格局如:XXX://(后面任意,前面必须要带://),请务必与我的项目中的配置保持一致,否则可能会导致无奈跳转利用,我的项目里配置不带://,如下图:

下载 / 疏导地址 (必填):
利用在 App Store 的下载地址,或者是其余第三方托管地址,没有装置 app 会跳转到这里来下载 app

App Store 下载地址(选填):专业版无效,经典版有效,在这里配置了的话,会略过咱们的下载疏导界面,间接跳 App Store 下载

app 利用宝下载链接:安卓须要,iOS 不须要填写无效工夫:这个工夫是点开链接后开始计时的, 超过这个时候后, 点击 ” 关上 app” 无奈胜利场景复原, 倡议设置为 60 分钟,测试阶段可自行批改以查看成果,设置为 0 时不进行场景复原。

(2)路由配置(必须)

渠道标识:填写还原门路, 如 ”/demo/a”,”/demo/b“等,这个填写的值须要与前端 JS 里传的 path 的值统一;

iOS 页面名称:填写跳转到 app 须要复原的控制器的名称,如果不填写无奈走客户端的场景还原的回调获取参数等

(3)配置 ATS

1. 在我的项目的 info.plist 中增加 App Transport Security Settings,类型为字典类型

2. 给它增加一个 Key:Allow Arbitrary Loads,类型为 Boolean 类型,值为 YES;

初始化 SDK

在我的项目中的 info.plist 文件中增加键值对,键别离为 MOBAppKey 和 MOBAppSecret,值为在之前在 MobTech 官网开发者后盾申请的 appkey 和 appSecret(留神:配置后须要保留好,看下我的项目 Info 选项里是否存在)

场景接口调用

在须要复原的控制器中实现 UIViewController+MLSDKRestore 的办法
例如在 MLDNewsDetailTableViewController.m 是我须要复原的控制器,在外面增加

#import <MobLinkPro/MLSDKScene.h>
#import <MobLinkPro/UIViewController+MLSDKRestore.h>
@property (nonatomic, strong) MLSDKScene *scene;
// 实现带有场景参数的初始化办法,并依据场景参数还原该控制器:-(instancetype)initWithMobLinkScene:(MLSDKScene *)scene
{if (self = [super init]) {self.scene = scene;}
    return self;
}

获取 MobId
将其用于分享。在场景数据还原时 MobLink 会依据 MobId 还原出场景数据,并回调给用户进行特定的操作
留神:MobId 不是必须要用的,比方应用的场景是从网页跳转到 App 里的时候所有参数齐全来源于网页上的时候,这时是不须要获取的 MobId 的,只须要在前端网页上 js 初始化的时候写上必要的参数就能够了。这个 MobId 实用于个别从 App 分享链接进来的时候有些参数是在 App 内指定的,比方分享者的 id 等等,此时就须要通过这个 MobId 来携带着客户端的参数到网页上转悠一圈,而后从网页跳转回 App 的时候又返回给 App 这样。)

- (void)getMobId
{
    // 结构自定义参数(可选)NSMutableDictionary *customParams = [NSMutableDictionary dictionary];
    customParams[@"key1"] = @"value1";
    customParams[@"key2"] = @"value2";
    // 依据门路、起源以及自定义参数结构 scene(3.0.0 以下版本)
    //MLSDKScene *scene = [[MLSDKScene alloc] initWithMLSDKPath:@"控制器对应的门路" source:nil params:customParams];
    // 依据门路、自定义参数结构 scene(3.0.0 以上版本,举荐)MLSDKScene *scene = [MLSDKScene sceneForPath:@"已在 Mob 后盾配置的须要还原的控制器对应的门路" params:customParams];

    // 申请 MobId
    __weak typeof(self) weakSelf = self;
   [MobLink getMobId:scene result:^(NSString *mobId, NSString *domain, NSError *error) {
        weakSelf.mobid = mobId;
        NSString *msg = mobId == nil ? @"获取 Mobid 失败" : @"获取 Mobid 胜利";
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提醒" message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];
    }];
}

参数阐明

  • path 本次生成的 mobid 所对应的控制器惟一门路,即在 Mob 后盾配置的须要还原的控制器对应的渠道标识。在场景还原时(即客户端还原网页内容)会返回 path 对应的类名或者依据 path 寻找匹配的控制器进行还原
  • source 起源标识, 可用于在场景还原时分别起源,例如:传入一个以后控制器名称。(3.0.0 版本后,废除)
  • params 字段类型, 此时传入的字典数据,在场景还原时可能重新得到,例如:传入一些回复控制器时须要的参数

回调值阐明

  • mobid 生成的 mobid 可用于拼接到须要进行推广的链接后 例如:http://www.abc.com/?mobid=123456 留神:该网站页面必须集成了 JS 模块的代码(下文将阐明),方可实现网页 - 利用无缝接合。
  • domain domain 拼接 mobid 应用,无网页跳转形式(domain 其实就是后盾生成的 Universal Link)。例如:https://7ne9.t4m.cn/NBjqIj(这种形式目前因为兼容性问题,暂不保护,倡议不要用)

场景还原
(1)设置代理 MobLink 在运行的时候会通过 delegate 将整个运作过程出现进去,所有的 delegate 办法都不是必须实现的,但这些 delegate 可能帮忙您实现更多自定义的操作。设定 delegate 对象的办法如下图:

在 app 启动的 didFinishLaunchingWithOptions 办法中减少

#import <MobLinkPro/IMLSDKRestoreDelegate.h>
#import <MobLinkPro/MobLink.h>
#import <MobLinkPro/MLSDKScene.h>@interface AppDelegate ()<IMLSDKRestoreDelegate>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

     // 设置 MobLink 代理
     [MobLink setDelegate:self]; // 必须增加代理

     return YES;
}

(2)实现场景还原回调(此回调里可获取到对应参数,能够自行获取参数做解决)

- (void) IMLSDKWillRestoreScene:(MLSDKScene *)scene Restore:(void (^)(BOOL, RestoreStyle))restoreHandler
{NSLog(@"path---%@",scene.path);
    NSLog(@"rawURL---%@",scene.rawURL);
    NSLog(@"params---%@",scene.params);
    NSLog(@"mobid---%@",scene.mobid);

    restoreHandler(YES, Default);

}

Web 集成

在开发者后盾找到 MobLink 的 页面配置  栏,在  援用 JS 文件 选项卡中,点击 一键复制 将 JS 代码复制到您本人写的前端页面中,加到 script 中执行即可

其中 path 的值需与后盾  路由配置  的  渠道标识 填写统一 params 可传本人自定义参数以上集成好,即可实现场景还原整个流程。

正文完
 0