| 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

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方法,强制将数据上传
- 首页
- 重置密码操作
- 首页情况介绍
- Linkflow浏览器要求
- 仪表盘
- 客户旅程
- 什么是客户旅程?
- 如何使用客户旅程
- 如何创建客户旅程
- 如何停止&删除客户旅程
- 如何重新编辑客户旅程
- 如何将客户旅程添加到目录
- 设置客户旅程
- 如何设置客户旅程转化目标
- 客户旅程模板说明
- 如何创建客户旅程模板
- 选择已有客户旅程模板
- 使用场景说明
- 使用逻辑说明
- 触发条件
- 定时触发条件
- 网页追踪
- 属性变更
- 执行动作
- 加入群组
- 移出群组
- 改变分数
- 延时器
- 变更属性
- A/B分配
- 终止旅程
- webhook
- 内部通知
- 条件分支
- 属性判断器
- 群组判断器
- 事件判断器
- 微信判断器(已下架)
- 时间判断器
- 企微判断器
- 管理客户旅程目录
- 所有用户
- 追踪用户与匿名访客
- 用户分组
- 用户列表
- 用户的创建、查重与合并
- 用户导出和导入
- 用户导出
- 用户导入
- 导出OpenID、UnionID
- 用户查看
- 批量编辑用户
- 互斥组(未上线)
- 用户属性
- 动态日期
- 年龄
- 用户识别
- 用户群组
- 动态标签组
- 静态标签组
- 前置标签组(微信公众号当前粉丝)
- 群组目录
- 用户标签【beta】
- 广告追踪
- 广告模块介绍
- 渠道分析
- 广告平台分析
- 广告时域分析
- 广告地域分析
- SEM广告分析
- 广告计划分析
- 广告单元分析
- 广告创意分析
- 广告关键词分析
- IP分析
- 一键生成通配符URL
- 关键词属性分析
- 广告设备分析
- 信息流广告分析
- 广告计划分析(信息流)
- 广告组分析
- 广告分析
- 广告组属性
- 返点
- 转化目标介绍
- 微信营销(对接公众号才会有此功能模块)
- 触达
- 群发
- 模板消息通知
- 订阅通知
- 二维码管理
- 带参二维码(原为普通二维码)
- 二维码创建路径
- 如何查找带参二维码
- 永久与临时二维码创建
- 带参二维码在触发条件中使用
- 带参二维码在执行条件中使用
- 扫码后回复、加组
- 批量创建/导出二维码
- 二维码分组管理
- 一人一码
- 如何使用一人一码
- 一人一码分组管理
- 基础设置
- 菜单管理
- 卡券管理
- 微信卡券管理
- 微信卡券功能申请条件
- 微信卡券功能开通
- 微信卡券使用
- 微信卡券核销方法
- 图⽂素材
- 菜单会话
- 给动态组用户打微信标签
- 微信分析
- 微信报表明细
- 图文分析
- 统计分析
- 分享转发分析
- 微信用户分析
- 粉丝数分析
- 报表分析
- 事件分析
- 什么是事件分析
- 公共筛选条件
- 如何创建事件分析
- 属性筛选条件说明
- 事件分析报表相关名字解释
- 支持图表
- 漏斗分析
- 用户分析
- 支持图表
- 用户画像
- 群体分析(此功能已下架)
- 时域分析
- 地域分析
- 分布分析【beta】
- 留存分析【beta】
- 路径分析【beta】
- 归因分析【beta】
- 报表管理
- 报表分析临时群组
- 连接管理
- 语音直播
- 千聊
- 千聊与Linkflow对接和设置
- 千聊常见问题
- 客户关系管理(salesforce、爱客/励销、纷享销客)
- 爱客/励销CRM
- 爱客/励销CRM连接和设置
- 爱客/励销-执行动作
- 纷享销客
- 纷享销客连接和设置
- 纷享销客-执行动作
- Salesforce
- Salesforce连接和设置
- Salesforce-执行动作
- 社交媒体(微信公众号、小程序&抖音)
- 微信公众号
- 微信公众号与Linkflow对接
- 同步微信公众号标签
- 批量为用户打标签
- 微信消息通知
- 微信客服会话管理
- Linkflow调用公众号接口列表
- 话题标签
- 微信执行条件
- 发送文本
- 发送图片
- 发送模板消息
- 发送H5
- 发送微信图文
- 发送微信语音
- 发送一人一码
- 发送小程序
- 发送卡券
- 发送微信视频
- 发送菜单会话
- 触发条件-微信
- 关注微信公众号粉丝的来源显示(对接前与对接后关注)
- 删除微信GDPR数据
- 微信开放平台
- 微信开放平台申请
- 微信开放平台认证
- 绑定微信公众号
- 绑定小程序
- 开放平台如何创建第三方平台
- 微信小程序
- 小程序与Linkflow对接
- Linkflow如何与小程序对接
- 小程序绑定公众号
- 小程序SDK接入指南
- 小程序触发条件&事件
- 管理小程序页面
- 扫码打开小程序接入指南
- 同步连接用户
- 批量为用户打标签
- 预置仪表盘
- 微信小程序FAQ
- 小程序相关问题
- 小程序模板消息设置
- 什么是微信小程序
- 公众号快速注册并认证小程序
- 小程序权限集
- 微信公众号申请&认证
- 微信公众号申请
- 微信公众号认证
- 抖音
- 抖音与Linkflow对接
- Webhooks请求网址URL设置
- 重新获取抖音企业号意向用户
- 抖音客户旅程触发条件
- 抖音客户旅程执行动作
- 抖音企业号认证
- 抖音常见问题
- 微博
- 微博与Linkflow的对接
- 微博授权短链接
- 设置消息回调
- 电子商务Saas
- 抖店
- 抖店与Linkflow对接
- 配置事件消息推送地址
- 抖店分析与营销
- 邮件服务
- WebPower
- WebPower与Linkflow连接
- 发送Webpower邮件
- SendCloud
- SendCloud连接和设置
- Sendcloud域名追踪
- webhook设置
- SendCloud-执行动作
- Sendcloud价格相关
- Sendcloud FAQ
- 有赞
- 有赞与Linkflow对接
- 有赞触发条件
- 微盟
- 微盟与Linkflow对接
- 微盟-触发条件(触发事件)
- 用户行为记录高级功能
- 短信服务(云片网&腾讯短信)
- 云片网
- 云片网连接和设置
- 申请短信签名&模板
- 云片网-执行动作
- 短信回复和退订
- 短信跳转小程序
- 短信推送状态报告设置
- 超级短信开通及使用
- 超级短信开通
- 如何使用超级短信
- 超级短信状态报告
- 云片网短链
- 腾讯短信
- 腾讯短信连接与设置
- 腾讯短信-执行动作
- 协同办公(企业微信、钉钉)
- 企业微信
- Linkflow与企业微信对接
- 企业微信连接和设置
- 设置客户联系接收事件服务器
- 同步成员数据
- 同步客户数据
- 聊天工具栏
- 群发客户消息
- 企业朋友圈
- 企业微信如何关联小程序
- 新客户欢迎语
- 「联系我」二维码
- 如何在Linkflow中获取企业微信相关数据
- 企业微信事件分析
- 客户旅程-企业微信
- 触发条件
- 执行动作
- 钉钉
- 钉钉连接和设置
- 钉钉-执行动作
- 钉钉-触发条件
- 视频会议直播
- 微吼
- 微吼连接和设置
- 微吼-触发条件
- 微吼-执行动作
- 目睹直播
- 目睹连接和设置
- 目睹触发条件
- 目睹事件分析
- 小鹅通(尚未上线)
- 小鹅通连接和设置
- 小鹅通-触发条件
- 小鹅通-直播短链接
- 广告投放
- 今日头条推广
- 微信广告
- 微信广告与Linkflow对接
- 获取微信朋友圈广告填单线索
- 神马推广
- 360推广
- 360推广与Linkflow的连接和设置
- 360广告API接口
- 搜狗推广
- 搜狗推广与Linkflow的对接和设置
- 百度推广
- 百度推广与Linkflow的对接和设置
- OneDesk(尚未上线)
- 表单数据
- 金数据
- 金数据连接和设置
- 金数据-触发条件
- 金数据表单映射以及相关功能
- 金数据如何绑定微信公众号
- 如何映射金数据表单
- 金数据扩展属性的使用
- 金数据表单推广功能
- 金数据相关应用场景
- 问卷星
- 问卷星连接和设置
- 问卷星-触发条件
- 问卷网
- 问卷网连接和设置
- 问卷网-触发条件
- 问卷网价格
- CMS(待上线)
- 如何在linkflow里面连接和设置CMS
- CMS表单映射
- CMS如何绑定微信公众号
- CMS设置数据推送
- 如何映射CMS中的表单
- 收钱吧(尚未上线)
- 收钱吧与Linkflow对接
- 收钱吧触发条件
- 驿氪
- 驿氪执行动作
- 同步连接用户
- 创蓝253(目前不对外开放)
- 句子互动(尚未上线)
- 悠易互通Yoyi(尚未上线)
- 内容素材
- 易企秀
- 易企秀内容中台与Linkflow对接
- 企微运营
- 微伴助手
- Linkflow与微伴助手对接
- 导出用户到微伴
- AI外呼_一知智能
- AI外呼_一知智能连接和设置
- AI外呼_一知智能-执行动作
- 元数据管理
- 用户属性
- 事件元数据
- 事件属性
- 自定义图元(所有自定义渠道的自定义图元)
- 虚拟事件
- 字典表
- 设置
- 网站追踪
- 短链接
- 短链接管理
- 短链接分组管理
- 批量创建/导出短链接
- App集成设置
- 私有App设置
- SFTP站点设置
- 授权设置
- 功能新增
- 我的账号
- 使用情况
- 通知中心
- 高级设置
- 员工
- 管理员工所属部门(暂不对外开放)
- 如何创建员工(含多因素验证)
- 角色
- 用户字段加密
- 操作日志
- JS SDK接入
- 网页埋点说明
- 微信表单页面埋点说明
- 微信网页分享裂变
- 自定义连接
- 如何在Linkflow连接和设置自定义渠道
- 如何修改自定义渠道的图标
- 自定义图元
- 自定义事件(事件元数据)
- IOS移动应用接入
- Android移动应用接入
- 同步连接用户
- 同步连接事件
- 删除用户数据
- Linkflow对接指南
- 账号信息
- 工单
- 常见问题
- 微信常见问题
- 微信公众平台服务号、订阅号、企业号的功能区别
- 模板消息是否支持英文版本
- 扫码签到后却发送两个签到通知消息
- 公众号模板消息
- 微信公众号发布了的文章如何删除
- 什么行为算是48小时内的活动,从而能够用客服消息触达
- 公众号提示:该公众号提供的服务出现故障,请稍后再试
- 在开放平台绑定公众号/小程序数量相关问题
- 同一个主体最多可以申请多少个微信公众号
- 留言功能
- 有多个微信公众号,客户身份如何合并?
- 公众号接口调整【关注公众号后无法获取用户昵称、头像】
- 问卷网常见问题
- 金数据常见问题
- 企业微信FAQ
- 微吼常见问题
- 系统登录问题
- 版本更新说明
- Linkflow以往的版本
- 2110 R1 版本更新说明
- 2111 R1 版本更新说明
- 2112 R1 版本更新说明
- 2201 R1 版本更新说明
- 联系客服在线咨询
- 广告运营分析(尚未上线)
