• MobLink iOS端快速集成文档


    开发工具: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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    oc/swift

    #import 
    [MobSDK uploadPrivacyPermissionStatus:YES onResult:^(BOOL success) {
    }];
    
    • 1
    • 2
    • 3
    制作场景(getMobId)

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

    /**
     控制器初始化
    
     @param scene 场景参数
     @return 控制器对象
     */
    - (instancetype)initWithMobLinkScene:(MLSDKScene *)scene;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    示例代码

    #import 
    #import 
    @property (nonatomic, strong) MLSDKScene *scene;
    //实现带有场景参数的初始化方法,并根据场景参数还原该控制器:
    -(instancetype)initWithMobLinkScene:(MLSDKScene *)scene
    {
        if (self = [super init]) {
            self.scene = scene;
        }
        return self;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    关于实现带有场景参数初始化方法的补充:
    如果您的控制器采用xib的方式来初始化的,那么实现该初始化方法时请参考如下代码:

    // 根据场景信息初始化方法
    - (instancetype)initWithMobLinkScene:(MLSDKScene *)scene
    {
        // 使用xib进行初始化
        if (self = [super initWithNibName:@"xib 名称" bundle:nil])
        {
            self.scene = scene;
        }
        return self;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    
    /**
     获取MobId
    
     @param scene 当前场景信息(即传入您需要还原的场景)
     @param resultHandler 回调处理,返回mobid
     */
    + (void)getMobId:(nullable MLSDKScene *)scene result:(MLSDKResultHandler)resultHandler;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    示例代码

    - - (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];
        }];
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    参数说明

    • 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 )delegate;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    示例代码

    #import 
    #import 
    #import @interface AppDelegate ()
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
         // 设置MobLink代理
         [MobLink setDelegate:self]; //必须添加代理
    
         return YES;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    示例代码

    - (void) IMLSDKWillRestoreScene:(MLSDKScene *)scene Restore:(void (^)(BOOL, RestoreStyle))restoreHandler
    {
    NSLog(@"Will Restore Scene - Path:%@",scene.path);
    
    restoreHandler(YES, Default);
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    场景恢复完成示例代码
    /**
    完成场景恢复

    @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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    示例代码

    - (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];
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    Web集成
    请点击 这里

  • 相关阅读:
    ps2023最新版免费滤镜插件Exposure安装下载教程
    vue - Vuex
    TensorFlow详解
    【区块链 | Openzeppelin】探索Openzeppelin 新增的跨链功能
    R语言ggplot2可视化:使用ggpubr包的ggarrange函数将多幅图像组合起来、使用ncol参数指定组合图列的个数
    使用C#插件Quartz.Net定时执行CMD任务工具2
    钢化玻璃CE认证EN 12150
    基于标签的电影推荐算法研究_张萌
    Solidity - 安全 - 重入攻击(Reentrancy)
    《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(14)-Fiddler断点(breakpoints)实战,篡改或伪造数据
  • 原文地址:https://blog.csdn.net/apkkkk/article/details/126870642