NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
| SDK 版本号 | 功能说明 | 下载地址 | | --- | --- | --- | | 1.1.0 | 1、可通过 identify 接口更新联系人生日和自定义字段 ;2、可通过 identify接口wechatInfo与微信公众号粉丝合并 ;3、事件autotrack字段新增ip、国家、省份、城市、网络类型 | [IOS SDK-1.1.0](https://static.linkflowtech.com/ios_sdk/21.08.R1/NzAnalytics.zip) | # 适用范围 Linkflow iOS SDK适用于iOS 7.0及以上操作系统。 ## 集成准备-创建应用并获取WriteKey WriteKey是Linkflow标识您的一个移动应用的唯一标识,集成SDK前需要在Linkflow中创建自定义渠道连接,并在自定义渠道中创建移动应用后获取参见《[创建自定义渠道》](https://help.linkflowtech.com/lfcs/977739) * * * ## 集成Linkflow iOS SDK ![](https://box.kancloud.cn/e3f71d461ac76381a2e119cd4f98fc3f_1440x934.png) 1. 下载最新[IOS SDK-1.1.0](https://static.linkflowtech.com/ios_sdk/21.01.R1/NzAnalytics.zip) 2. 将NzAnalytics文件夹拷贝到项目目录 3. 选择 File——Add Files to“Your Project” 4. 选择 NzAnalytics文件 5. 勾选 Copy items if needed 6. 确保所有要用到SDK的 targets 都处于选中状态。 ## 初始化SDK—Objective-C 在AppDelegate.m中引入 NzAnalytics.h文件,并在初始化方法 (BOOL) application:(UIApplication \*)didFinishLaunchingWithOptions:(NSDictionary \*)launchOptions 中初始化 SDK。 示例代码 ~~~ #import "NzAnalytics.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ NzAnalyticsConfiguration * sdkConfiguration = [[NzAnalyticsConfiguration alloc] init]; sdkConfiguration.writeKey = @"MS1mODdiMDkwMC1hNTI3LTQ2MWMtYTNmZS0xMWYyYWRmZjIyNzU=";// writeKey: 在linkflow的自定义渠道创建应用后,在“移动应用”列表页面里查看writeKey。 sdkConfiguration.endpoint = @"https://app.linkflowtech.com"; // 接收数据服务器地址,比如https://app.linkflowtech.com sdkConfiguration.launchOptions = launchOptions; sdkConfiguration.debugMode = YES; // 默认值为NO。如果您需要将事件数据标记为测试,请设置为YES。 sdkConfiguration.trackAppLifecycleEvents = YES; //设置值为YES情况下,SDK会采集移动应用的激活应用、启动应用、退出应用事件 sdkConfiguration.trackViewScreen = YES; //设置值为YES情况下,SDK会采集移动应用的打开页面事件 sdkConfiguration.trackAppClick = YES; //设置值为YES情况下,SDK会采集移动应用的点击控件事件 [NzAnalyticsSDK setupWithConfiguration:sdkConfiguration]; //other code } ~~~ ## 系统事件统计 正确完成初始化后,SDK会根据初始化中的配置,自动完成激活应用、启动应用、退出应用、浏览页面、点击元素事件的统计。 在Debug模式下产生的事件,Linkflow的iOS SDK会自动为事件打上debug标签,方便您在进行统计分析时,排除测试数据。请注意,不要在正式发布的 App 中使用 Debug 模式。 * * * ### 激活应用 当用户第一次安装启动移动应用时,Linkflow iOS SDK记录用户激活应用事件。 ### 启动应用 当用户将移动应用展示在前台,Linkflow iOS SDK记录用户启动应用事件,并记录以下事件属性。 | 属性 | 说明 | | --- | --- | | 是否首日访问 | 当日首次访问 | | 是否首次访问 | 激活应用后第一次访问 | | 是否从后台唤醒 | 是否从后台唤醒进入应用,与重新创建应用进程做区别 | ### 退出应用 当用户将移动应用退出到后台或杀掉应用进程,Linkflow iOS SDK记录用户退出应用事件,并记录以下事件属性。 | 属性 | 说明 | | --- | --- | | 是否首日访问 | 当日首次访问 | | 启动时长 | 此次启动应用到此次退出应用的时间 | ### 展示页面 当用户跳转移动应用新的页面时,Linkflow iOS SDK记录展示页面事件并记录以下事件属性。 | 属性 | 说明 | | --- | --- | | 是否首日访问 | 当日首次访问 | | 页面名称 | 表示 ViewController 的类名 | | 页面标题 | 表示 ViewController 的标题,Linkflow iOS SDK会先尝试获取ViewController的title,如果没有获取到,会获取NavigationItem的title。如果实现了获取页面标题的方法传入自定义页面标题,传入的自定义页面标题就会覆盖从ViewController和NavigationItem上获取到的title | ### 点击元素 当用户在应用页面点击按钮时,Linkflow iOS SDK记录点击元素事件并记录以下事件属性。 | 属性 | 说明 | | --- | --- | | 元素类型 | 控件的类型,如UIButton | | 元素内容 | 控件的内容 | ## 识别联系人接口 ### 1、用途和用法 识别联系人方法用于将匿名用户实名化。在未调用识别联系人方法前,系统事件全部作为匿名用户的行为事件,调用此方法实名化用户后,此实名用户之前发生的匿名事件也会一并作为此实名用户的事件。 Linkflow判断移动应用联系人为实名联系人的依据是:name、mobilePhone、email三个属性有一个属性有值,则此联系人为实名联系人。 为了确保您的用户不会被认为是匿名联系人(匿名联系人Timline不会展示事件),调linkflow iOS SDK 提供的识别联系人方法将用户name、mobilePhone、email发送给 Linkflow。 ### 2、接口及参数 接口: ~~~ - (void)identify:(NzIdentity *)identity // 识别联系人接口 ~~~ ### 3、示例 某用户输入用户名、密码登录,账户ID为:1234567,姓名为:Sun,手机为“13800000000。调用如下: ~~~ - (void)login { //登录成功后,调用以下代码 NzIdentity * identity = [[NzIdentity alloc] init]; identity.externalId = “1234567”; // externalId:您对登录用户的唯一标识 identity.email = “sun@linkflowtech.com”; //登录用户邮箱 identity.phone = “13800000000”; //登录用户手机 identity.name = “Sun”; //登录用户姓名 identity.birthday = “1990-09-09”; //生日 //设置联系人自定义字段 NSDictionary *props = [[NSMutableDictionary alloc]init]; [props setValue:@"普通会员" forKey:@"attr1"]; [props setValue:@"100" forKey:@"attr2"]; identity.props = props; //如果希望与微信公众号粉丝合并,请添加以下代码 NzIdentityWechatInfo * wechatInfo = [[NzIdentityWechatInfo alloc] init]; wechatInfo.openId = @""; //公众号粉丝openId,非必填。openId+appId可以定位到在linkflow创建连接的公众号粉丝,会将此公众号粉丝与此用户合并。 wechatInfo.appId = @""; //公众号appId(该公众号必须已在Linkflow绑定),非必填,如果openId有值,则此字段必填.openId+appId可以定位到在linkflow创建连接的公众号粉丝,会将此公众号粉丝与此用户合并。 wechatInfo.unionId:非必填,公众号粉丝unionId,如果传入该值,会和系统中相同unionId的微信公众号和小程序用户进行合并 identity. weChatInfo = wechatInfo; [[NzAnalyticsSDK shared] identify:identity]; } ~~~ ## 创建自定义事件接口 ### 1、用途和用法 其他事件类似登录事件,都需要先在自定义渠道先创建相应的事件,定义好事件的属性,并且获取系统生成的事件编码,然后就可以通过Linkflow的ios SDK中的trackEvent方法进行收集了。 ### 2、示例 ~~~ NzEvent *event = [[NzEvent alloc] init]; event.event = @"UDE_89497"; //需要传入您创建的自定义事件的事件编码 event.attr1 = @"704769368693"; //使用attr1-attr20来设置自定义事件的属性值 event.attr2 = @"35.8"; event.eventDate = ; //设置事件发生时间(时间戳,精确到毫秒),如果不设置,默认为系统当前时间 [NzAnalyticsSDK.shared trackEvent:event]; ~~~ 除了上述示例中的属性,剩余其他部分属性linkflow iOS SDK会自动帮您记录在事件上(参见自定义事件的系统预置字段),您如果手动设置也会被linkflow覆盖。 ## Linkflow iOS SDK上报事件数据配置 1、 用户发生启动应用、退出应用、激活应用、展示页面、点击元素等事件时,Linkflow iOS SDK将事件存在移动应用本地缓存 2、 达到数据上报时,做如下检查,判断是否向服务器上传数据 • 当前是否是 WIFI / 3G / 4G 网络 • 是否满足发送事件之一: 1. 与上次发送的时间间隔是否大于 flushInterval 2. 本地缓存的事件条目数是否大于 flushBulkSize 默认的 flushBulkSize 为 100 条,默认的 flushInterval 为 15 秒。满足条件后,SDK 批量发送到linkflow服务器。 3、 如果没有满足发送条件且数据条数大于设置本地数据库默认缓存最大条数,系统会删除缓存前100条数据,进行新数据的存储。 4、 您可设置以下属性进行flushInterval、flushBulkSize、缓存最大条数的调整。 ~~~ @property(nonatomic, assign) NSInteger flushInterval; // 30-300之间 单位秒 默认值60 @property(nonatomic, assign) NSInteger flushBulkSize; // 50-20之间 默认值100 @property(nonatomic, assign) NSInteger maxQueueSize; // 最大缓存 1000-5000之间 默认值1000 ~~~ 5、 如果追求数据采集的时效性,可以调用flush方法,强制将数据上传