2. IOS 集成
1) 导入 SDK
下载并解压最新版SDK压缩包,导入工程(导入请选中 “Copy items if needed” )
2) 初始化 SDK
在 AppDelegate 中,增加头文件的引用:
#import <ShareInstallSDK/ShareInstallSDK.h>
在 - (BOOL)application: didFinishLaunchingWithOptions:方法中调用setAppKey方法来初始化SDK,如下代码所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[ShareInstallSDK setAppKey:@"A2BKKFEHE2HFAF" withDelegate:self WithOptions:launchOptions clearCustomParams:NO];
return YES;
}
注: +(void)setAppKey:(NSString *)appKey withDelegate:(id)delegate WithOptions:(NSDictionary *)launchOptions clearCustomParams:(BOOL)customParams;
@ customParams BOOl值 如只需在首次安装启动获取参数,可将customParams设置为YES,设置为NO,可重复获取。
swift版本
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
ShareInstallSDK.setAppKey("A2BKKFEHE2HFAF", withDelegate: self, clearCustomParams: true)
return true
}
注:@ customParams BOOl值 如只需在首次安装启动获取参数,可将customParams设置为true,设置为false,可重复获取。
Swift 版本
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
ShareInstallSDK.setAppKey("shareinstall为当前应用分配的appkey", withDelegate:self, clearCustomParams: true)
return true
}
}
注:@ customParams BOOl值 如只需在首次安装启动获取参数,可将customParams设置为true,设置为false,可重复获取。
3) 功能集成
1. 快速下载
如果只需要快速下载功能,无需其它功能(携带参数安装、渠道统计、一键拉起),完成初始化即可。
2. 携带参数安装
2.1 当应用安装后首次打开时,iOS sdk 会收到网页端通过 js sdk 传来的自定义动态参数,精确的获取 app 每一次安装的分享(或推广)来源。比如通过在分享链接 url 中附带 app 邀请人的用户 id,就可达到免填邀请码的效果;url 中可拼接自定义的参数。在 AppDelegate 中,添加获取安装参数的回调方法,代码如下所示:
#pragma mark ShareInstallDelegate
//通过ShareInstall获取自定义参数,数据为空时也会调用此方法
- (void)getInstallParamsFromSmartInstall:(id) params withError: (NSError *) error{
NSLog(@"安装参数params=%@",params);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"直接点击App进来的" message: params
delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
//弹出提示框(便于调试,调试完成后删除此代码)
[alert show];
}
Swift 版本
func getInstallParams(fromSmartInstall params: Any!, withError error: Error!) {
print("ShareInstallParams 自定义数据:\(String(describing: params))")
//获取到参数后可保存到本地,等到需要使用时再从本地获取。
UserDefaults.standard.set(params, forKey: "ShareInstallParams")
2.2 用户也可在具体的业务场景需要参数的位置主动调用下面的方法获取参数。(根据业务场景来调用该 api 方法),调用 getInstallCallBackBlock 方法,获取自定义参数。不要自行保存动态参数。
[[ShareInstallSDKgetInitializeInstance] getInstallCallBackBlock:^(NSString*jsonStr){
if(jsonStr){//动态安装参数
//拿到参数,处理客户自己的逻辑
}
}];
Swift 版本
ShareInstallSDK.getInitializeInstance()?.getInstallCallBack({(jsonStr: String?)
in
print("ShareInstallParams:\(String(describing: jsonStr))")
})
注:客户可根据具体的业务场景,需要参数的位置调用该方法(在业务场景时,网络一般都是通畅的)。例如可选择在用户注册成功后调用该方法获取参数。原因是 iOS 首次安装、首次启动的 app,会询问用户获取网络权限,用户允许后 SDK 才能正常联网去获取参数。如果调用过早,可能导致网络权限还未允许就被调用,导致参数无法及时拿到,误以为参数不存在。
3. 一键拉起
ShareInstall 通过标准的 scheme、universal link 等技术,在 app 安装的情况下,从各种浏览器(微信、QQ、新浪微博、钉钉等主流社交软件的内置浏览器)唤醒 app 并传递自定义参数,避免重复安装。
3.1 配置 App 的 URL Scheme(适用于 ios 各个系统版本)
3.1.1 iOS 系统中 App 之间是相互隔离的,通过 URL Scheme,App 之间可以相互调用,并且可以传递参数。 选中 Target-Info-URL Types,配置 URL Scheme。 注:identifier 要一定配置为 com.ShareInstall,URL Schemes 从 shareInstall 获取()。
在 Safari 中输入 URL Scheme :// ,如果可以唤起 App,说明 URL Scheme 配置成功。
3.1.2 在 AppDelegate 中添加 URL Scheme 回调方法,委托给 ShareInstallSDK 来处理
注意:当需要在 shareInstall 这个方法中处理第三方回调的时候(比如支付宝、微信回调等),请注意区分。
//iOS9以下 URL [Scheme
-(BOOL)application:(UIApplication *)application openURL:(NSURL
*)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
//判断是否通过ShareInstall URL Scheme 唤起App
if ([ShareInstallSDK handLinkURL:url]) {
return YES ;
}else{
//其他代码
return YES ;
}
return YES ;
}
//iOS9以上 URL Scheme
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
options:(nonnull NSDictionary *)options
{
//判断是否通过ShareInstall URL Scheme 唤起App
if ([ShareInstallSDK handLinkURL:url]) {
return YES ;
}else{
//其他代码
return YES ;
}
return YES ;
}
Swift 版本
//ios9以下 URI Scheme 唤起app
func application(_ application: UIApplication, open url:URL, sourceApplication: String?, annotation: Any) -> Bool {
//判断是否通过ShareInstall URL Scheme 唤起App
if ShareInstallSDK.handLinkURL(url){
return true ;
}
else {
//其他代码;
return true ;
}
}
//iOS9以上 URL Scheme 唤起app
func application(_ app: UIApplication, open url: URL, options: [AnyHashable: Any]) -> Bool {
//判断是否通过ShareInstall URL Scheme 唤起App
if ShareInstallSDK.handLinkURL(url){
return true ;
}
else {
//其他代码;
return true ;
}
}
3.1.3 在 AppDeletegate 中遵守协议,添加一键拉起的回调,获取来自 H5 页面的动态参数,根据参数值直达具体页。
- (void)getWakeUpParamsFromSmartInstall: (id) params withError: (NSError *) error{
NSLog(@"唤醒参数params=%@",params);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL shceme 进来的" message: params delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
//弹出提示框(便于调试,调试完成后删除此代码)
[alert show];
}
Swift 版本
func getWakeUpParams(fromSmartInstall params: Any!, withError error: Error!) {
print("ShareInstall 唤醒参数:\(String(describing: params))")
//获取到参数后可保存到本地,等到需要使用时再从本地获取。
UserDefaults.standard.set(params, forKey: "ShareInstallWakeUpParams")
}
3.2 配置 Universal link(通用链接),只适用于 ios9.0 以上。
3.2.1 Universal link 是 ios9 的一个新特性,通过 Universal link 实现一键直达。如果使用 URL Scheme 的话,需要先打开 Safari,用户体验变得很差。如果未安装 app,还会出现下面错误的对话框:
所以为了用户更好的体验,我们强烈推荐配置 Universal link。
3.2.2 配置 developer.apple.com 的相关信息 登录 https://developer.apple.com,选择Certificate, Identifiers & Profiles,选择相应的 AppID,开启 Associated Domains 服务。
3.2.3 配置 Xcode 在 Xcode 中配置 ShareInstall 为当前应用生成的关联域名:Associated Domains 开关打开,添加 Domains:
在 AppDelegate 中添加通用链接(Universal Link)回调方法,委托给 ShareinstallSDK 来处理。
//Universal Links 通用链接
- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity
*)userActivity restorationHandler:(void (^)(NSArray *
_Nullable))restorationHandler
{
//判断是否通过ShareInstall Universal Links 唤起App
if ([ShareInstallSDK continueUserActivity:userActivity]) {
return YES ;
}else{
//其他代码
return YES ;
}
}
Swift 版本
func application (_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool{
//判断是否通过ShareInstall生成的universal link唤起App
if ShareInstallSDK.continue(userActivity){
return true
}
else {
//其他第三方唤醒回调;
return true
}
}
在 AppDeletegate 中遵守协议,添加一键拉起的回调,获取来自 H5 页面的动态参数,根据参数值直达具体页。
- (void)getWakeUpParamsFromSmartInstall: (id) params withError: (NSError *) error{
NSLog(@"唤醒参数params=%@",params);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL shceme 进来的" message: params delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
//弹出提示框(便于调试,调试完成后删除此代码)
[alert show];
}
Swift 版本
func getWakeUpParams(fromSmartInstall params: Any!, withError error: Error!) {
print("ShareInstall 唤醒参数:\(String(describing: params))")
//获取到参数后可保存到本地,等到需要使用时再从本地获取。
UserDefaults.standard.set(params, forKey: "ShareInstallWakeUpParams")
}
- 渠道统计
使用 Shareinstall 控制中心提供的渠道统计时,在 App 用户注册完成后调用,可以统计渠道注册量。
必须在注册成功的时调用[ShareInstallSDK reportRegister] 方法,否则可能导致注册统计不准。
[ShareInstallSDK reportRegister];
Swift 版本
ShareInstallSDK.reportRegister();