写点什么

MobLink iOS 端快速集成文档

  • 2022 年 9 月 15 日
    上海
  • 本文字数:3751 字

    阅读完需:约 12 分钟

开发工具:Xcode 集成方式:手动导入 SDK 或者 Pod 集成 SDK 版本支持:SDK 支持 Xcode 9.1.0, iOS8.0+及以上版本

集成前准备

注册账号

使用 MobLink 之前,需要先在 MobTech 官网注册开发者账号,并获取 AppKey 和 AppSecret,详情可以点击查看创建应用流程

MobLink 后台与项目配置

注册完 Mob 账号后,需要在 Mob 后台以及项目里进行相关信息的配置,详情可以点击查看具体配置信息

MobLink 流程图



添加配置

下载 SDK 导入项目

(1)CocoaPods 方式引入

按需在 Podfile 文件中添加命令

pod 'mob_linksdk_pro'
复制代码

(2)手动下载 SDK 引入

i.将整个 SDK 文件,里面 MobLinkPro.framework,MOBFoundation.framework 拖到项目中,如下图:



ii.拖进去之后会出现如下图选项,选择以下 3 个选项:



添加依赖库




选择项目 Target - Build Phases - Link Binary With Libraries,然后选择“+”进行添加系统库:

- libsqlite3- libz1.2.5- libc++
复制代码

Xcode 配置

(1)在项目中的 info.plist 文件中添加键值对,键分别为 MOBAppKey 和 MOBAppSecret ,值为在之前在 MobTech 官网开发者后台申请的 AppKey 和 AppSecret:



接口调用

回传用户隐私授权结果(uploadPrivacyPermissionStatus)

为保证您的 App 在集成 MobSDK 之后能够满足工信部相关合规要求,您应确保 App 安装首次冷启动且取得用户阅读您《隐私政策》授权之后,调用 Mob 提交到的隐私协议回传函数 uploadPrivacyPermissionStatus 回传隐私协议授权结果。

反之,如果用户不同意您 App《隐私政策》授权,则不能调用 uploadPrivacyPermissionStatus 回传隐私协议授权结果。

相关隐私声明请参考链接合规指南

/** 上传隐私协议授权状态 @param isAgree 是否同意(用户授权后的结果) @param OnResult 执行回调结果,可为nil (注意业务逻辑不要依赖于这个success结果,建议业务逻辑在调用这个接口之后来写) */+ (void)uploadPrivacyPermissionStatus:(BOOL)isAgree                                                 onResult:(void (^_Nullable)(BOOL success))handler;
复制代码



示例代码

调用位置开发者可以自己指定,只需在使用 SDK 功能之前调用即可。

ocswift

#import <MOBFoundation/MobSDK+Privacy.h>[MobSDK uploadPrivacyPermissionStatus:YES onResult:^(BOOL success) {}];
复制代码

制作场景(getMobId)

(1)在需要恢复的控制器中实现 UIViewController+MLSDKRestore 的方法,如下:

/** 控制器初始化
@param scene 场景参数 @return 控制器对象 */- (instancetype)initWithMobLinkScene:(MLSDKScene *)scene;
复制代码



示例代码

#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;}
复制代码

关于实现带有场景参数初始化方法的补充:

如果您的控制器采用 xib 的方式来初始化的,那么实现该初始化方法时请参考如下代码:

// 根据场景信息初始化方法- (instancetype)initWithMobLinkScene:(MLSDKScene *)scene{    // 使用xib进行初始化    if (self = [super initWithNibName:@"xib 名称" bundle:nil])    {        self.scene = scene;    }    return self;}
复制代码

(2)获取 MobId,并将其用于分享。在场景数据还原时 MobLink 会根据 MobId 还原出场景数据,并回调用户进行特定的操作:

/** 获取MobId
@param scene 当前场景信息(即传入您需要还原的场景) @param resultHandler 回调处理,返回mobid */+ (void)getMobId:(nullable MLSDKScene *)scene result:(MLSDKResultHandler)resultHandler;
复制代码



示例代码

- (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

场景还原(IMLSDKWillRestoreScene)

(1)实现场景还原代理回调

MobLink 在运行的时候会通过 delegate 将整个运作过程呈现出来,所有的 delegate 方法都不是必须实现的,但这些 delegate 能够帮助您实现更多自定义的操作。设定 delegate 对象的方法如下图:

/** 设置场景恢复委托
@param delegate 委托对象 */+ (void)setDelegate:(id <IMLSDKRestoreDelegate>)delegate;
复制代码



示例代码

#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;}
复制代码

delegate 中各个方法的说明如下:

即将进行场景还原示例代码(所传的一些自定义的参数都可以在这里获取到,请务必执行 restoreHandler,为 YES 我们会帮场景还原,为 NO 可以自己进行场景还原)(必须实现,需要在这里获取到自己自定义的参数做操作)

/** 即将进行场景还原(注意: 一旦实现该方法,请务必执行restoreHandler)
@param scene 场景参数 @param restoreHandler 恢复回调 回调参数YES,或者不实现本方法,将会进行自动场景恢复;回调参数 NO,则不会进行自动恢复场景,请自行根据场景对象scene进行处理;style 为期望场景恢复方式,当传入的不是Default时MobLink会根据期望的方式去进行场景恢复,但前提是期望方式可行,如果期望方式无法达到时,MobLink会自动选择默认方式. */- (void)IMLSDKWillRestoreScene:(MLSDKScene *)scene Restore:(void (^)(BOOL isRestore, RestoreStyle style))restoreHandler;
复制代码



示例代码

- (void) IMLSDKWillRestoreScene:(MLSDKScene *)scene Restore:(void (^)(BOOL, RestoreStyle))restoreHandler{NSLog(@"Will Restore Scene - Path:%@",scene.path);
restoreHandler(YES, Default);
}
复制代码

场景恢复完成示例代码

/** 完成场景恢复
@param scene 场景参数 */- (void)IMLSDKCompleteRestore:(MLSDKScene *)scene;
复制代码



示例代码

- (void)IMLSDKCompleteRestore:(MLSDKScene *)scene  {      NSLog(@"Complete Restore -Path:%@",scene.path);  }
复制代码

无法进行场景恢复(通常原因是在恢复时找不到需要恢复的控制器,应检查后台填写的 ios 页面名称是否有填写,以及渠道标识是不是和前端的 path 传的一致)

/** 无法进行场景恢复,原因可能是以下几个: 1.需要恢复的控制器,没有实现 UIViewController+MLSDKRestore 中的相关方法; 2.没有找到场景对应的控制器;
@param scene 场景参数 */- (void)IMLSDKNotFoundScene:(MLSDKScene *)scene;
复制代码



示例代码

- (void)IMLSDKNotFoundScene:(MLSDKScene *)scene{    NSLog(@"Not Found Scene - Path :%@",scene.path);        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"没有找到路径"                                                       message:[NSString stringWithFormat:@"Path:%@",scene.path]                                                      delegate:self                                             cancelButtonTitle:@"OK"                                             otherButtonTitles:nil];    [alertView show];
}
复制代码

Web 集成

请点击 这里

用户头像

还未添加个人签名 2019.05.08 加入

还未添加个人简介

评论

发布
暂无评论
MobLink iOS端快速集成文档_ios_MobTech袤博科技_InfoQ写作社区