iOS SDK 集成指南

如果您是第一次使用JMLink,建议您集成SDK之前,先熟悉 接入指南

一、基础配置

1.1 配置 Scheme

Xcode里选则 Target -> Info -> URL Types,填写你在极光控制台设置的 Scheme,xcode 里和控制台的scheme必须填写一致,如图所示: jmlink-ios

Xcode 里选择则 Target -> Capablities -> Associated Domains,填写极光魔链分配的域名,在控制台域名设置模块查看,把支持 universal link 的域名填入工程里。如图: jmlink-ios

如果不熟悉 universal link 的配置流程可查看 接入指南-iOS基础配置

注意:

  • 必须把支持 universal link 的域名都填写到项目工程里,记得加前缀applinks:
  • 建议把域名管理里面的域名都配置到工程里,避免前期不支持,后面又支持universal link 的域名没有配置,导致跳转失败

二、导入SDK

1. Cocoapods 导入

  • cd 到项目根目录,执行pod setup
  • 在 Podfile 文件中添加命令:pod 'JMLink'

注意:

  • 建议先pod update来升级本机pod库,然后pod 'JMLink'来获取sdk最新版本。
  • 如果还搜索不到JMLink,则需要同步一下索引,请按下面操作:
    • a) 先执行:pod setup
    • b) 再清空搜索索引,让pod重建索引(可能需要等待一会): rm ~/Library/Caches/CocoaPods/search_index.json

2. 手动导入

  • 在极光官网下载最新 SDK
  • 解压后,将Lib文件夹导入工程中(导入请选中 "Copy items if needed" )

三、SDK初始化

AppDelegate中,增加头文件的引用:

#import "JMLinkService.h"

application: didFinishLaunchingWithOptions方法中调用setupWithConfig方法来初始化 SDK,如下代码所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //如需使用 IDFA 功能请添加此代码并在初始化配置类中设置 advertisingId
    NSString *idfaStr = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];

    JMLinkConfig *config = [[JMLinkConfig alloc] init];
    config.appKey = @"your appkey";
    config.advertisingId = idfaStr;
    [JMLinkService setupWithConfig:config];
}

四、功能集成

4.1 一链拉起功能

在 app 已安装的情况下,从各平台、各种浏览器拉起 app 并传递动态参数。

//iOS9以下,通过url scheme来唤起app
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    [JMLinkService routeMLink:url];
    return YES;
}
//iOS9+,通过url scheme来唤起app
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(nonnull NSDictionary *)options{
    [JMLinkService routeMLink:url];
    return YES;
}
//通过universal link来唤起app
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
    [JMLinkService continueUserActivity:userActivity];
    return YES;
}
注意:当需要在openURL这个方法中处理第三方回调的时候(比如支付宝、微信回调等),请注意区分,例如以下示例:
// 处理 JMLink 一键唤起APP时传递的数据
[JMLinkService routeMLink:url];
//其他第三方回调
return YES;
4.1.2 获取一链拉起参数

建议是在启动APP时,就添加获取参数的回调方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    // SDK初始化
    ···

    // 注册通用的的获取参数回调方法
    [JMLinkService registerMLinkDefaultHandler:^(NSURL * _Nonnull url, NSDictionary * _Nullable params) {
        dispatch_async(dispatch_get_main_queue(), ^{
            // 拿到参数后,根据自身项目参数协议解析,处理跳转逻辑
        });
    }];
}

4.2 场景还原功能

在 app 未安装的情况下,从各平台、各种浏览器点击短链完成下载APP,当在有效时间内点击打开 app 时获取设置的参数。

4.2.1 获取场景还原参数

建议是在启动APP时,就添加获取参数的回调方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    // SDK初始化
    ···

    // 注册通用的的获取参数回调方法
    [JMLinkService registerMLinkDefaultHandler:^(NSURL * _Nonnull url, NSDictionary * _Nullable params) {
        dispatch_async(dispatch_get_main_queue(), ^{
            // 拿到参数后,根据自身项目参数协议解析,自行处理跳转逻辑
        });
    }];
}

注意:

  • 一链拉起和场景还原获取参数方法都可以用同一个接口获取
  • 还有一个通过短链服务key来注册回调获取参数,不推荐使用,查看iOS SDK API文档

4.3 无码邀请功能

场景中免除填写邀请码,规避用户操作繁琐而带来的影响,提高转化率。如:APP 需要安装参数/游戏间邀请好友/地推活动/建立上下级关系,快速安装打开应用完成业务的奖励.

4.3.1 获取无码邀请参数
// 获取无码邀请中传回来的相关值
[JMLinkService getMLinkParam:nil handler:^(NSDictionary * _Nullable params) {
    dispatch_async(dispatch_get_main_queue(), ^{
            // 拿到参数后,根据自身项目参数协议解析
    });
}];

注意:

  • 此接口可以在任意地方调用
  • 可重复调用会多次返回,后续不想再被触发,那么可以自己在业务调用成功时,设置一个标识。

五、更多API

其他 API 的使用方法请参考接口文档:iOS SDK API

六、演示Demo

七、技术支持


Copyright 2011-2020, jiguang.cn, All Rights Reserved.
粤ICP备12056275号-13 深圳市和讯华谷信息技术有限公司

Documentation built with MkDocs.