iOS_SDK_接入说明文档
一、说明
1.适用范围
热云灵犀产品作为国内多维度的用户行为分析平台,能够更好的帮助客户基于用户数,精细化了解用户、寻找增长点、搭建多维数据分析模型,帮你实现数据驱动。
本文档适用于IOS 7.0及以上的操作系统。
2.统计说明
为了能够在接入过程中保持概念统一,针对通用概念做如下说明
- 设备
指某台安装了Android应用的终端,例如SAMSUNG Galaxy Note 8、HTC U11、SAMSUNG Galaxy S8等。
- 账号
指用户在某台设备上安装了应用之后,在应用中的唯一标识。
通常用作账号的标识符可以是用户注册应用时的唯一用户名(如邮件地址),也可以是用户注册时自动生成的唯一字符串。
二、接入流程
1.申请APPKEY
1)打开http://io.reyun.com/login.html,使用您的热云灵犀账号进行登录。
2)进入“产品中心”,点击左上方“+新建产品”,完成产品创建,您将获得一串32位的16进制APPKEY;
如果您已经完成产品创建,请在如下位置获取APPKEY:“全部产品按钮”-“对应产品”-APPKEY
3)APPKEY为应用的唯一标识,用于集成到SDK中。
注:为了保证您的数据安全,请勿泄露您的APPKEY。
2.导入SDK
1)前往http://iodoc.reyun.com/sdkwen-dang.html下载SDK压缩包,解压至本地目录。
2)将目录中的ReYunIO.a和ReYunIO.h导入到您的工程中。
导入方法:在工程目录结构中,右键选择Add->Existing Files...,选择ReYunIO.a和ReYunIO.h(或将文件拖入Xcode工程目录结构中)文件,在弹出的界面中勾选Copy items into destination group's folder(if needed),并确保Add To Targets勾选相应target。
3.接入SDK
详见“三、接入方法说明”
4.测试
1)在开发环境中进行Debug测试:
+(void) setPrintLog :(BOOL)print;
注:热云SDK所有API接口的http response均以status:0表示成功,若不成功,会在返回的json里提示详细错误信息。
三、接入方法说明
1.添加SDK所需依赖框架
使用Security.framework来存储设备标识,
使用CoreTelephony.framework来获取运营商信息,
使用AdSupport.framework来获取Advertising Identifier信息,
使用SystemConfiguration.framework来检查当前网络环境,
使用CoreMotion.framework来获取陀螺仪数据
使用CoreLocation.framework来获取位置信息
使用libsqlite3.dylib用来存储数据。
添加方法:
在工程目录中,选择
TARGETS-->Build Phases-->Link Binary With Libraries-->+ -->选择Security.framework、CoreTelephony.framework、AdSupport.framework、libsqlite3.dylib
新版xcode .dylib以.tbd为后缀,添加对应动态库。
注:
1)如上动态库请全部配置,避免报错。
2)xcode 7及以上版本,.dylib后缀结尾的系统库均更改为.tbd后缀结尾
2.初始化热云SDK
- 方法用途:
用于应用启动后,初始化热云SDK。报送应用安装或启动事件。
- 使用方法:
在application:didFinishLaunchingWithOptions方法中调用initWithAppKey: withChannelId:方法进行初始化
- 方法接口:
(void)initWithAppKey:(NSString *)appKey withChannelId:(NSString *)channelId;
- 参数说明:
参数 | 类型 | 是否必填 | 长度 | 说明 |
---|---|---|---|---|
appKey | NSString | 是 | 创建产品时获得的32位字符长度的APPKEY | |
channelId | NSString | 是 | 最长64位 | 填写_default_ |
- 示例代码:
#import “ReYunIO.h”
-(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[ReYunIO initWithAppKey:@"your app key"withChannelId:@"_default_"];
}
3.统计用户注册数据
- 方法用途:
用于用户注册完成,报送应用注册事件。
- 使用方法:
在用户注册完成时调用ReYunIOsetRegisterWithAccountID方法。
- 方法接口:
(void)setRegisterWithAccountID:(NSString *)account;
- 参数说明:
参数 | 类型 | 是否必填 | 长度 | 说明 |
---|---|---|---|---|
account | NSString | 是 | 最长64位 | 账号唯一标识,支持英文、数字、下划线 |
示例代码:
[ReYunIO setRegisterWithAccountID:@"hero"];
4.统计用户登录数据
- 方法用途:
用于用户登录完成、切换账号时,报送应用登录事件。
- 使用方法:
调用ReYunIOsetLoginWithAccountID方法。
- 方法接口:
(void)setLoginWithAccountID:(NSString *)account;
- 参数说明:
参数 | 类型 | 是否必填 | 长度 | 说明 |
---|---|---|---|---|
account | NSString | 是 | 最长64位 | 账号唯一标识,支持英文、数字、下划线 |
- 示例代码:
[ReYunIOsetLoginWithAccountID:@"hero"];
5.统计用户充值成功数据(统计付费以此为准)
- 方法用途:
用于用户充值成功,统计充值数据,所有付费相关分析的数据报表均依赖此方法。
注:前端报送支付有掉单风险,收入数据会出现误差,为确保支付数据准确,建议使用服务器报送支付(请参考“REST”文档)。
- 使用方法:
用户充值成功且后端发货成功后调用ReYunIO setRyzf方法。
- 方法接口:
+(void)setRyzf:(NSString *)ryTID ryzfType:(NSString*)ryzfType hbType:(NSString*)hbType hbAmount:(float)hbAmount;
- 参数说明:
参数 | 类型 | 是否必填 | 长度 | 说明 |
---|---|---|---|---|
ryTID | NSString | 是 | 最长64位 | 交易流水号,请确保唯一。 |
ryzfType | NSString | 是 | 最长16位 | 支付类型,例如支付宝(alipay),银联(unionpay),微信支付(weixinpay),易宝支付(yeepay),paymentType不能填写:FREE(FREE不统计付费) |
hbType | NSString | 是 | 最长3位 | 货币类型,按照国际标准组织ISO 4217中规范的3位字母,例如CNY人民币、USD美金等 |
hbAmount | float | 是 | 最长16位 | 支付的真实货币金额,人民币单位:元 |
- 示例代码:
[ReYunIO setRyzf:@"trans-id-123"ryzfType:@"alipay"hbType:@"CNY"hbAmount:12.5];
6.统计用户自定义事件
- 方法用途:
用于统计用户在应用内的任意行为,如打开某个面板、点击某个Button、参与某个活动等。
- 使用方法:
在自定义用户行为的地方,调用ReYunIO setEvent方法。
- 方法接口:
+(void)setEvent:(NSString *)eventName andExtra:(nullableNSDictionary *)extra;
- 参数说明:
参数 | 类型 | 是否必填 | 长度 | 说明 |
---|---|---|---|---|
eventName | NSString | 是 | 最长32位 | 自定义事件名称,支持英文、数字、下划线 |
extra | NSDictionary | 否 | 键值对不能超过80 | extra参数的key支持NSString(英文、数字、下划线)类型,不能以“_”开头value,支持字符串、数字、日期、布尔类型 |
- 示例代码:
[ReYunIOsetEvent:@"endTutorial"andExtra:NULL];
- 使用场景:
示例:使用自定义事件追踪玩家失败情况,记录失败地点、失败原因、失败行程等信息。
NSMutableDictionary * extra = [NSMutableDictionarydictionary];
[extrasetValue:@"时光湖" forKey:@"place"];
[extrasetValue:@"误杀"forKey:@"reason"];
[extrasetValue:@"100"forKey:@"metre"];
[ReYunIOsetEvent:@"fail"andExtra:extra];
7.统计用户的profile
- 方法用途:
用于统计用户的profile信息。
- 使用方法:
统计用户profile的地方,调用ReYunIO setProfile方法。
- 方法接口:
+(void)setProfile:(nullableNSDictionary *)dataDic;
- 参数说明:
参数 | 类型 | 是否必填 | 长度 | 说明 |
---|---|---|---|---|
dataDic | NSDictionary | 是 | 提交用户profile数据,可使用参数参考如下表格。key支持NSString(英文、数字、下划线)类型value,支持字符串、数字、日期、布注:以“_”开头的属性为内置属性;自定义属性不可添加“_”。 |
- 用户属性
通用用户属性 | key:value | 数据类型 |
---|---|---|
用户名 | "_name":"李明" | NSString |
昵称 | "_nickname":"小明" | NSString |
生日 | "_birthday":"1988-11-11" | NSString |
性别 | "_gender":"男" | NSString |
婚姻状况 | "_marital_status":"未婚" | NSString |
家乡 | "_hometown":"北京" | NSString |
职业 | "_profession":"程序员" | NSString |
行业 | "_industry":"IT" | NSString |
学校 | "_school":"清华大学" | NSString |
学历 | "_degree":"本科" | NSString |
手机号 | "_tel":"13000000000" | NSString |
身份证号 | "_citizen_id":"330328194812280616" | NSString |
邮箱 | "_email":"[email protected]" | NSString |
微信 | "_wechat":"3782173321" | NSString |
微博 | "_weibo":"dsahiduwqio" | NSString |
"_qq":"12345" | NSString | |
第一语言 | "_first_language":"汉语" | NSString |
城市 | "_city":"长沙" | NSString |
省份 | "_province":"湖南" | NSString |
国家 | "_country":"中国" | NSString |
来源 | "_source":"爱奇艺DSP" | NSString |
自定义用户属性 | ||
爱好 | "hobby":"音乐" | NSString |
- 示例代码:
NSMutableDictionary * tempDict = [NSMutableDictionary dictionary];
[tempDict setValue:@"长沙" forKey:@"_city"];
[tempDict setValue:@"音乐" forKey:@"hobby"];
[ReYunIO setProfile:tempDict];
8.获取设备ID
- 方法用途:
用于获取已缓存到钥匙链的设备广告标识符。
- 使用方法:
统计用户profile的地方,调用getDeviceid方法。
- 方法接口:
+(NSString*)getDeviceId;
- 注:
1)该接口返回首次调用initWithAppKey:withChannelId:函数时获取的系统idfa,只要安装过应用且调用过初始化函数,通过该接口返回的字符串基本不会变化(包括删除APP,重置idfa,开启、关闭广告追踪等操作),此值作为首次安装设备标识符参考。
2)如需获取实时idfa,请勿使用该接口,用户需自行通过系统函数获取。
四、技术支持
如有任何问题,请及时联系我们的技术支持工程师:
技术支持邮箱:[email protected]
技术支持QQ:2785608528