开发工具: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...)