# 快速集成
通过以下方式可以快速完成SDK的集成,更多方式请查SDK集成文档
## 集成配置
>[info]集成
1. 安装CocoaPods
2. 工程目录下创建`Podfile`文件,并添加`pod 'AnalysysAgent'`,示例如下:
```objectivec
platform :ios, '8.0'
use_frameworks!
target 'YourApp' do
pod 'AnalysysAgent'
end
```
3\. 关闭Xcode,在工程目录下执行`pod install`或`pod install --verbose --no-repo-update`,完成后打开xxx.xcworkspace工程
>[info] 手动集成
>
登录GitHub或者Gitee获取SDK Releases 包
打开Xcode
1. 选择 工程 - 右键 - `Add Files to "ProjectName"`
2. 选择 `AnalysysAgent.framework`文件
3. 勾选 `Copy items if needed`、`Create groups`- `Add` 完成添加类库
4. 添加`AnalysysAgent.bundle`资源文件:`Targets`->`ProjectName` -> `Build Phases` -> `Copy Bundle Resources` -> 添加文件
5. 若使用手动集成,请添加如下依赖框架:
选择工程 - `Targets` - “项目名称” - `Build Phase` - `Link Binary With Libraries` 依赖库如下:
| 类库 | 用途 |
| ------------------------------- | ------------------------- |
| `AdSupport.framework` | 广告标识 |
| `CoreTelephony.framework` | 运营商信息 |
| `SystemConfiguration.framework` | 网络状态 |
| `libz.tbd` | 数据压缩(Xcode7以下:libz.dylib) |
| `libicucore.tbd` | websocket可视化连接 |
| `libsqlite3.tbd` | 数据存储 |
* 为支持SDK中category,请在`Targets` - “项目名称” - `Build Settings` - `Other Linker Flags`,添加`-ObjC`选项(注意大小写)
* 若使用 `Swift` 语言工程开发集成,则除上述配置外还需要添加桥接文件,该文件可以使用以下两种方式之一创建:
* 在工程中添加 `XXX-Bridging-Header.h` 文件(`XXX`为工程名称),并在 `Build Setting` - `Objective-C Bridging Header` 中添加桥接文件路径。
* 在工程中创建 Objective-C 文件,系统会提示是否创建桥接文件,选择创建即可生成桥接文件
创建完成之后,在 `XXX-Bridging-Header.h` 文件并引入类库:
```
#import <AnalysysAgent/AnalysysAgent.h>
```
## 获取上报地址
登录易观方舟系统后点击”管理“——”数据接入管理“——”集成SDK接入数据”——“获取数据接收地址”
点击后即可获取您的数据上报地址。

## 基础模块介绍
以下接口生效依赖于基础SDK模块,需集成基础SDK相关`AnalysysAgent.framework`文件,请正确集成。
### 初始化接口
在Xcode工程文件`~AppDelegate.m` 中导入头文件`"#import <AnalysysAgent/AnalysysAgent.h>"`。接口如下:
>[info]请确保初始化SDK在 (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary)launchOptions中主线程初始化
```objectivec
+ (AnalysysAgent *)startWithConfig:(AnalysysAgentConfig *)config;
```
### 设置上传地址
自定义上传地址,接口设置后,所有事件信息将上传到该地址。接口如下:
```objectivec
+ (void)setUploadURL:(NSString *)uploadURL;
```
### Debug 接口
Debug 接口主要用于开发者测试。可以开/关日志,查看tag为`[analysys]`的Log日志。接口如下:
```objectivec
+ (void)setDebugMode:(AnalysysDebugMode)debugMode;
```
### 初始化示例代码
```objectivec
// 导入SDK
#import <AnalysysAgent/AnalysysAgent.h>
//在主线程中开始初始化代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// AnalysysAgent 配置信息
// 设置key,77a52s552c892bn442v721为样例数据,请根据实际情况替换相应内容
AnalysysConfig.appKey = @"77a52s552c892bn442v721";
// 设置渠道默认App Store
//AnalysysConfig.channel = @"App Store";
// 使用配置初始化SDK
[AnalysysAgent startWithConfig:AnalysysConfig];
//开启DeBug模式,并在控制台输出日志
#ifdef DEBUG
[AnalysysAgent setDebugMode:AnalysysDebugButTrack];
#else
//关闭Debug模式,并关闭控制台输入日志
[AnalysysAgent setDebugMode:AnalysysDebugOff];
#endif
// 设置上传地址,http://example.com为您上报地址
[AnalysysAgent setUploadURL:@"htts://example.com"];
// 开启全埋点
[AnalysysAgent setAutoTrackClick:YES];
return YES;
}
```
## 自定义事件接口
自定义事件接口,可以设置自定义属性。接口如下:
```objectivec
+ (void)track:(NSString *)event;
+ (void)track:(NSString *)event properties:(NSDictionary *)properties;
```
* event:事件ID,以字母或 `$` 开头,只能包含字母、数字、下划线和 `$`,字母不区分大小写,`$` 开头为预置事件/属性,最大长度 99字符,不支持乱码和中文
* properties:自定义属性,用于对事件描述。properties最多包含100对,且 key 以字母或 `$` 开头,只能包含字母、数字、下划线和 `$`,字母不区分大小写,`$` 开头为预置事件/属性,key长度 1 - 99 字符且不支持乱码和中文;value 支持类型:`NSString`/`NSNumber`/`NSArray<NSString *>`/`NSSet<NSString *>`/`NSDate`/`NSURL`,若为字符串,取值长度为1-255个字符
代码示例:
>[info]objective-c
```objectivec
// 收藏事件
[AnalysysAgent track:@"collect"];
....
// 用户购买手机
NSMutableDictionary *properties = [NSMutableDictionary dictionary];
properties[@"type"] = @"Phone";
properties[@"name"] = @"iPhone XS Max";
properties[@"money"] = [NSNumber numberWithFloat:9599.0];
properties[@"count"] = @1;
[AnalysysAgent track:@"pay" properties:properties];
```
>[info]Swift
```objectivec
let properties = ["type": "Phone",
"name": "iPhone XS Max",
"money": 9599.0,
"count": 1] as [String: Any]
AnalysysAgent.track("pay", properties: properties)
```
## 账号关联
用户关联的主要作用是打通用户登录前后的行为,做过用户关联的用户在登录前后的行为在方舟系统里面会被认为是一个用户。**建议在用户注册成功或者登录成功后客户端需要调用 alias 接口。**
用户账号关联接口。
```objectivec
+ (void)alias:(NSString *)aliasId;
```
* aliasId:需要关联的用户ID。 取值长度为1-255个字符
代码示例:
>[info]objective-c
```objectivec
//登陆账号时调用,只设置当前登陆账号即可和之前行为打通
[AnalysysAgent alias:@"sanbo"];
```
>[info]Swift
```objectivec
//登陆账号时调用,只设置当前登陆账号即可和之前行为打通
AnalysysAgent.alias("zhangsan")
```
## 设置用户属性
给用户设置单个或多个属性,如果之前不存在,则新建,否则覆盖。接口如下:
```objectivec
+ (void)profileSet:(NSDictionary *)property;
+ (void)profileSet:(NSString *)propertyName value:(id)propertyValue;
```
* propertyName:属性名称,约束见[属性名称](./#userPropertyKey)
* propertyValue:属性值,约束见[属性值](./#userPropertyValue)
* property:属性列表,约束见[属性名称](./#userPropertyKey),[属性值](./#userPropertyValue)
代码示例:
>[info]objective-c
```objectivec
// 设置用户的 `Job` 是 `Engineer`
[AnalysysAgent profileSet:@"Job" propertyValue:@"Engineer"];
```
>[info]Swift
// 统计用户昵称和爱好信息
NSDictionary *properties = @{@"nickName":@"小叮当",@"hobby":@[@"Singing", @"Dancing"]};
[AnalysysAgent profileSet:properties];
//Swift代码示例:
AnalysysAgent.profileSet(["nickName": "小叮当", "hobby": ["Singing", "Dancing"]])
```
## 验证数据
开启Debug模式后,用户可以通过Xcode的控制台中查看tag为`[analysys]`的Log日志

* 检查上报地址是否正确
* 检查是否发送成功
* 检查事件名称及内容与预期相同
- 产品简介
- 快速上手
- Step 1 安装部署
- Step 2 激活系统创建项目
- Step 3 开启您的分析旅程
- 1. 集成 SDK
- 2. 可视化埋点
- 3. 创建分析模型
- 附:埋点方案设计
- 附:数据分析思路
- 产品更新日志
- V5.5 新增LTV分析功能等
- V5.3 UI 升级、分布分析重构、维度表动态更新、细节优化等
- V5.2 新增归因分析、消息中心、重构埋点方案、优化看数据体验……
- V5.1.0317 体验优化& Bug修复
- V5.1 升级可视化埋点、增强权限控制……
- Part I 产品功能说明
- 名词解释
- 指标说明
- 看板
- 5.3.3 看板 UI 重构
- 分析
- 事件分析
- 渠道分析
- 渠道相关名词解释
- 来源识别规则
- 搜索引擎
- 社交媒体
- 小程序场景值
- Session 分析
- Session 规则
- 实时分析
- 留存分析
- 转化漏斗
- 智能路径
- 归因分析
- 热图分析
- Web/H5 热图
- APP 热图
- 分布分析
- 间隔分析
- 属性分析
- LTV 分析
- 多主体分析
- 自定义查询
- 用户
- 用户分群
- 用户探查
- 用户标签
- 标签体系应用概览
- 标签体系
- 标签生命周期管理
- 标签加工
- 如何自定义SQL创建标签
- 单用户档案
- 运营
- 广告跟踪
- 微信小程序渠道追踪
- 预置广告媒介和渠道
- App 推广监测(Beta版本)
- 电子邮件(即将下线)
- 短信(即将下线)
- 消息通知(即将下线)
- 项目管理
- 项目概览
- 项目角色管理
- 项目成员管理
- 数据接入管理
- 埋点方案
- 可视化埋点
- 集成SDK接入数据
- 数据验证
- 用户数据导入
- 微信小程序全埋点事件定义
- 元数据管理
- 元事件
- 虚拟事件
- 事件属性
- 用户属性
- Session 管理
- 页面组管理
- 维度表
- 服务集成配置
- 监控告警
- 智能监控
- 自定义监控
- 平台管理
- 企业概览
- 项目管理
- 成员管理
- 安全设置
- 企业设置
- 日志管理
- 帐号设置
- Part II 技术文档
- 技术接入准备工作
- 部署环境检测工具
- 数据模型
- 数据格式
- 预置事件和属性
- App预置事件/属性
- JS 预置事件/属性
- 如何准确识别用户
- 如何设计埋点方案
- 分平台上报数据 vs 跨平台打通
- SDK 指南
- Android SDK
- 快速集成
- 全埋点模块
- 消息推送模块
- Android Hybrid模式
- SDK Gradle集成方式
- 多渠道打包
- 易观小工具
- 合规相关
- iOS SDK
- 快速集成
- 全埋点介绍
- iOS Hybrid模式
- 消息推送模块
- JS SDK
- 快速集成
- JS SDK基础版
- JS SDK插件
- uni-app SDK
- 快速集成
- 打包原生APP
- 开启移动端全埋点
- uni-app SDK标准版
- 微信小程序 SDK
- 快速集成
- 微信小程序标准版
- 微信小程序插件版
- 微信小程序通用框架版
- 支付宝小程序 SDK
- 支付宝小程序标准版
- 支付宝小程序通用框架版
- 字节跳动小程序 SDK
- 字节跳动小程序标准版
- 字节跳动小程序通用框架版
- 百度小程序 SDK
- 百度小程序标准版
- 百度小程序通用框架版
- 钉钉小程序 SDK
- 钉钉小程序标准版
- 钉钉小程序通用框架版
- QQ小程序 SDK
- QQ小程序标准版
- QQ小程序通用框架版
- 快应用 SDK
- 华为WeCode小程序
- WeCode SDK 标准版
- WeCode SDK插件
- PhoneGap SDK
- mPaaS SDK
- ReactNative SDK
- Flutter SDK
- Java SDK
- Python SDK
- PHP SDK
- C++ SDK
- C# SDK
- Node JS SDK
- Lua SDK
- Golang SDK
- SDK FAQ
- identify与alias的区别
- 爬虫数据如何识别?
- 页面停留如何获取时间?
- 如果获取SDK及更新日志
- 代码埋点和无埋点有什么区别
- Web页面中发现丢失某一个事件
- 自研 SDK 注意事项
- 页面时长统计功能
- 飞书小程序 SDK
- 飞书小程序标准版
- 飞书小程序通用框架版
- Unreal Engine SDK
- 数据验证
- 客户端埋点验证
- Debug 数据验证
- 数据入库验证
- 数据导入
- 接口导入
- JAVA工具包
- 标准json文件导入
- csv格式导入
- 数据导入FAQ
- 数据导出
- JAVA工具包
- 事件数据导出
- 用户数据导出
- 直接从Kafka中消费数据
- 使用程序访问数据库
- 脚本工具
- API
- 分析API
- 事件分析
- 留存分析
- 自定义查询
- 转化漏斗
- 属性分析
- Session分析
- 渠道分析
- 分布分析
- 用户API
- 分群查询
- 用户档案
- 分群管理
- 管理API
- 权限管理
- 元数据管理
- 埋点方案管理
- 维度表管理
- 运营API
- 广告跟踪
- APP推广监测
- 平台管理API
- 项目管理
- 成员管理
- 第三方登录
- OAuth2.0登录
- LDAP登录
- GDPR 合规
- Part III 常见问题
- License 许可
- 产品试用及采购
- 参与贡献