提示:以下代码(配置)由shareinstall根据当前应用动态生成,开发者可直接使用;按照以下步骤指引,10分钟即可完成IOS SDK集成。

一、产品原理

精确的App安装来源与携带参数安装 :shareInstall的核心价值在于,帮助Android/iOS开发者通过shareInstall提供的sdk,精确的获取app每一次安装的分享(或推广)来源。原理如下:开发者在分享的h5页面上集成 shareInstall web sdk,发布分享链接时在url上动态的拼接任意的自定义参数(如推广渠道号,邀请码等等);当某一终端访问该h5页面时,shareinstall web sdk将同时确定该设备的个性化信息和采集自定义参数,上传至shareInstall服务器, 待用户通过该h5页面安装app后首次打开时(如当前设备已安装该app,将直接拉起该app并传递参数),使用shareInstall Android/iOS sdk从shareInstall服务器再取回暂存的自定义参数。

一键拉起功能:shareInstall通过标准的scheme、universal link 等技术,在app已安装的情况下,从各种浏览器(包括微信、QQ、新浪微博、钉钉等主流社交软件的内置浏览器)拉起app并传递自定义参数,避免重复安装,如没安装则调至appStore或应用宝下载app,下载完毕唤起app的相应页面。

二、iOS SDK集成

1、导入SDK

下载并解压最新版SDK压缩包,将libShareInstall.a和ShareInstallSDK.h导入工程中。

2、初始化SDK

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


#import “ShareInstallSDK.h”

在-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    方法中调用setAppKey方法来初始化SDK,如下代码所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[ShareInstallSDK setAppKey:@"jgec0y" withDelegate:self WithOptions:launchOptions];
return YES;
}

注:AppKey需填写自己的AppKey,请到ShareInstall官网后台查看自己应用的AppKey。

3、个性化安装

当应用安装后首次打开时,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:[self DataTOjsonString:params] delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
    //弹出提示框(便于调试,调试完成后删除此代码)
    [alert show];
}

4、一键跳转

ShareInstall通过标准的scheme、universal link等技术,在app安装的情况下,从各种浏览器(微信、QQ、新浪微博、钉钉等主流社交软件的内置浏览器)唤醒 app 并传递自定义参数,避免重复安装。

5、 universal link 配置

Universal link是iOS9的一个新特性,通过Universal link,App可以通过各种浏览器跳转到App(例如微信内可不通过safari,一键跳转到App),真正实现一键跳转到相应界面。
备注:iOS9以上推荐使用Universal link。

5.1 配置developer.apple.com的相关信息

到苹果开发者中心,为当前的App ID开启Associated Domains服务:

5.2 配置Xcode

在Xcode中配置ShareInstall为当前应用生成的关联域名:Associated Domains 开关打开,添加Domains: applinks:.shareinstall.com

在AppDelegate中的continueUserActivity方法中调用,用来处理Universal link。


//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;
    }
}

5.3 配置App的URL Scheme

iOS系统中App之间是相互隔离的,通过URL Scheme, App之间可以相互调用,并且可以传递参数。
备注:iOS9以下通过Url Scheme实现拉起。

5.4 在Xcode里选中Target—Info—URL Types, 配置shareInstall为当前应用生成的Url Scheme,如图所示:

identifier 配置为 com.ShareInstall,URL Schemes从shareInstall获取()。

注:identifier 一定要配置为com.ShareInstall

5.5 URL Scheme相关代码配置

注意:当需要在shareInstall这个方法中处理第三方回调的时候(比如支付宝、微信回调等),请注意区分。


//iOS9以下 URI 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;
}

5.6获取唤醒参数,直达具体页

通过在url中附带具体的参数,唤醒app并跳转到具体页。


- (void)getWakeUpParamsFromSmartInstall: (id) params withError: (NSError *) error{
NSLog(@"唤醒参数params=%@",params);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL shceme 进来的" message:[self DataTOjsonString:params] delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
//弹出提示框(便于调试,调试完成后删除此代码)
[alert show];
}

5.7 其他代码配置

如果做测试,获取参数,则必须在Appdelegate.h加上如下测试代码。


#pragma mark 将oc数据类型转成NSString
-(NSString *)DataTOjsonString:(id)object
{
    if (!object) {
        return nil;
    }

    NSString *jsonString = nil;
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object
                                                       options:NSJSONWritingPrettyPrinted
                                                         error:&error];
    if (! jsonData) {
        NSLog(@"Got an error: %@", error);
    } else {
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }
    return jsonString;
}

6、注册量统计

使用Shareinstall 控制中心提供的渠道统计时,在App用户注册完成后调用,可以统计渠道注册量。

#warning 必须在注册成功的时调用[ShareInstallSDK reportRegister] 方法,否则可能导致注册统计不准。

下一步