共计 5171 个字符,预计需要花费 13 分钟才能阅读完成。
开发工具: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 性能之前调用即可。
oc/swift
#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 集成
请点击 [这里
](https://www.mob.com/wiki/deta…)