跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

6.X集成文档

集成流程示意图

1

补充知识

发送策略

设置发送策略说明

发送策略设定了用户产生的数据发送回友盟+服务器的频率,此发送策略的数据都是离线计算。

iOS平台数据发送策略包括BATCH(启动时发送)和SEND_INTERVAL(按间隔发送)两种,友盟+默认使用退出时发送(更省流量)

组件化SDK不同以以前非组件化的SDK,用户现在不需要在SDK端显式的设置发送策略。 组件化SDK默认使用BATCH(启动时发送),减少用户的网络发送请求。 同时在用户做前后台切换的时候,组件化SDK也会触发网络请求,批量的把数据发送出去,以节约网络请求的流量。

  • 启动时发送:新增、活跃、启动次数、使用时长、自定义事件等数据在APP本次启动或退出时即刻发送,错误统计产生的消息数据会在下次启动应用时发送。如果应用程序启动时处在不联网状态,那么消息将会缓存在本地,下次再尝试发送。
  • 按间隔发送:按特定间隔发送数据,间隔时长介于90秒与1天之间。新增、活跃、启动次数等数据在APP本次打开时即刻发送,使用时长、自定义事件、错误统计等在使用过程中产生的所有数据都按间隔发送,如果应用程序启动时处在不联网状态,那么消息将会缓存在本地,下次再尝试发送。

发送策略设置方法

在后台 统计分析->设置->发送策略 页面自定义发送间隔。具体如下图:

analytics1点击发送策略之后,可以看到设置页面:

analytics2

注意:

(1)在没有获取到在线配置时,默认使用启动时发送的策略;

(2)在打开debug调试模式或者使用集成测试时,不受发送策略控制。

(3)在iOS应用中,可以通过代码设置发送策略,也可以在后台进行设置,后台配置的优先级高于本地配置(即代码中的配置)

IDFA说明

从组件化产品开始,【友盟+】SDK默认采集idfa标识,用来更准确的分析核对数据。对于应用本身没有获取idfa的情况,建议将应用提交至AppStore时按如下方式配置:(以避免被苹果以“应用不含广告功能,但获取了广告标示符IDFA”的而拒绝其上架。)

创建应用,获取Appkey

集成【友盟+】SDK之前,您首先需要到 【友盟+】官网注册并且添加新应用,获得AppKey。

特别提醒 :我们建议开发者在注册账号时使用企业邮箱,避免使用个人邮箱注册,防止由于个人离职带来的问题,建议使用的账号形式:umeng@企业域名、apps@企业域名、dev@企业域名。

12

常见问题

问题1 :应用的安卓版和iOS版能否共用一个AppKey。

答案:不同平台的应用禁止使用相同的AppKey,需要分开注册。

问题2 :注册应用时,提示应用名称已存在。

答案 :【友盟+】后台的应用名与实际应用名和包名无关,建议命名为应用名+平台(iOS/Android)。更多集成问题可点我进入[常见问题]

Cocoapods集成(推荐)

更新Pod环境

在终端执行pod setup命令,拉取最新pod库时间较长。

  1. $ pod setup

集成组件化各业务SDK

Cocoapods集成友盟+可灵活配置所需SDK,如工程target名为UMPlusDemo,可选添下面的SDK,如在项目根目录的Podfile的格式:

  1. target 'UMPlusDemo' do
  2. pod ‘<友盟+SDK名>'
  3. end

升级说明:如果现有项目已经通过 Pod 集成过友盟相关SDK,需要检查替换相关 Pod 名,参考页面最后一节「较早Cocoapods集成版本升级说明」进行相应 Pod 替换。

由于 pod search 命令对新增项目可能出现无法找到的情况,建议直接使用 pod update 命令进行直接更新。

pod search的解决方案请在本页最后[常见问题]中查看

统计 SDK

依赖库

  1. pod 'UMCCommon'

统计 SDK

  1. pod 'UMCAnalytics'

可在项目中加入 “基础库-日志库” 中的 UMCCommonLog 进行开发调试。

日志库(调试)

开发阶段进行调试SDK及相关功能使用,可在发布 App 前移除

  1. pod 'UMCCommonLog'

手动集成

依赖库

  1. CoreTelephony.framework 获取运营商标识
  2. libz.tbd 数据压缩
  3. libsqlite.tbd 数据缓存
  4. SystemConfiguration.framework 判断网络状态

工程配置

集成步骤如下:

  1. 选择SDK功能组件并下载,解压.zip文件得到相应组件包(例如:UMCommon.framework,UMAnalytics.framework, UMPush.framework等)。

  2. XcodeFile —> Add Files to "Your Project",在弹出Panel选中所下载组件包->Add。(注:选中“Copy items if needed”)

  1. 添加依赖库,在项目设置target -> 选项卡General ->Linked Frameworks and Libraries如下:

初始化

1.说明和用途

组件化SDK用来聚合(移动统计 SDK,消息推送 SDK,社会化分享 SDK等)业务的初始化接口,方便对各个业务的初始化统一调用。

2.接口函数

接口:

  1. /** 初始化友盟所有组件产品
  2. @param appKey 开发者在友盟官网申请的appkey.
  3. @param channel 渠道标识,可设置nil表示"App Store".
  4. */
  5. + (void)initWithAppkey:(NSString *)appKey channel:(NSString *)channel;

参数:

参数 类型 描述 备注
appKey NSString 在 App Analytics 创建应用后,进入数据报表页中, 在“统计分析->设置->应用信息” 页面查看。 AppKey为必需,为了根据您的AppKey查看后台的实时和离线统计数据,帮助您了解目前您的产品的详细情况。
channel NSString channel为您应用的推广渠道。channel为nil或@””时,默认会被当作@”App Store”渠道 渠道命名规范:可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。 首尾字符不可以为空格 最多256个字符 “App Store” 及其各种大小写形式,作为友盟保留的字段,不可以作为渠道名。

提示每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上。 所以在测试不同的渠道时,请使用不同的设备来分别测试。也可使用集成测试功能进行测试,了解更多集成测试请点击这里。

3.示例代码

  1. #import <UMCommon/UMCommon.h>
  2. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  3. [UMConfigure initWithAppkey:@"Your appkey" channel:@"App Store"];
  4. }

AppKey填写

将[UMConfigure initWithAppkey:@”Your appkey” channel:@”App Store”]; 中的”Your AppKey”替换为您在【友盟+】后台申请的应用Appkey(Appkey可在统计后台的 “统计分析->设置->应用信息” 页面查看)。

Channel填写

将[UMConfigure initWithAppkey:@”Your appkey” channel:@”App Store”] 中的App Store 替换为您应用的推广渠道。channelId为nil或@””时,默认会被当作@”App Store”渠道。

渠道命名规范:

可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。首尾字符不可以为空格最多256个字符“App Store” 及其各种大小写形式,作为友盟保留的字段,不可以作为渠道名。

提示:每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上。 所以在测试不同的渠道时,请使用不同的设备来分别测试。也可使用集成测试功能进行测试,了解更多集成测试[请点击这里]

IDFA说明

从组件化产品开始,【友盟+】SDK默认采集idfa标识,用来更准确的分析核对数据。对于应用本身没有获取idfa的情况,建议将应用提交至AppStore时按如下方式配置:(以避免被苹果以“应用不含广告功能,但获取了广告标示符IDFA”的而拒绝其上架。)

场景设置

1.说明和用途

组件化统计SDK用户不同业务场景设置(目前支持普通统计场景和游戏场景)

游戏场景需设置,否则调用相对应的统计api无法使用

2.接口函数

接口:

  1. /** 设置 统计场景类型,默认为普通应用统计:E_UM_NORMAL
  2. @param 游戏统计设置为:E_UM_GAME
  3. */
  4. + (void)setScenarioType:(eScenarioType)eSType;

参数:

参数 类型 描述 备注
eSType eScenarioType 设置适用场景 默认为普通应用场景,目前还支持游戏统计场景

注意:如需要支持多个场景,则以 | 分隔,例如:

  1. [MobClick setScenarioType:E_UM_NORMAL];//支持普通场景

3.示例代码

  1. [MobClick setScenarioType:E_UM_GAME];//支持游戏场景

4.常见问题

设置日志

1.说明和用途

设置是否在console输出sdk的log信息。详细集成

2.接口函数

接口:

  1. /** 设置是否在console输出SDK的log信息.
  2. @param bFlag 默认NO(不输出log); 设置为YES, 输出可供调试参考的log信息. 发布产品时必须设置为NO.
  3. */
  4. + (void)setLogEnabled:(BOOL)bFlag;

日志格式如下:

举例:如果用户传入的AppKey为空的话,打印日志如下图:

UMCommLog_invalidAppkeyLog

  • 2018-02-08 20:19:44: 指当前的打印的时间;

  • UMengCommon: 指组件化SDK(UMCommon.framework)的名字;

  • <1.4.3>: 指组件化SDK(UMCommon.framework)的版本号;

  • (Error): 指日志等级是Error的日志;

  • [CIE10001]: 指日志的FAQ的代号,也可通过FAQ文档找到对应的解决方法;

  • 用户传入的AppKey不合法,请到官网申请AppKey,以免影响自己App的统计数据。: 指提示开发者的错误信息,帮助开发者找到错误原因。

3.示例代码

  1. #import <UMCommonLog/UMCommonLogHeaders.h>
  2. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  3. // Override point for customization after application launch.
  4. //开发者需要显式的调用此函数,日志系统才能工作
  5. [UMCommonLogManager setUpUMCommonLogManager];
  6. }

账号统计

1.说明和用途

用于用户进行账户统计

2.接口函数

  1. + (void)profileSignInWithPUID:(NSString *)puid;
  2. + (void)profileSignInWithPUID:(NSString *)puid provider:(NSString *)provider;
  3. + (void)profileSignOff;

参数:

参数 类型 描述 备注
puid NSString 用户ID
provider NSString 账号来源 不能以下划线”_”开头,使用大写字母和数字标识; 如果是上市公司,建议使用股票代码。

3.示例代码

友盟+在统计用户时以设备为标准,若需要统计应用自身的账号,下述两种API任选其一接口:

  1. // PUID:用户账号ID.长度小于64字节
  2. // Provider:账号来源。不能以下划线"_"开头,使用大写字母和数字标识,长度小于32 字节 ;
  3. [MobClick profileSignInWithPUID:@"UserID"];
  4. [MobClick profileSignInWithPUID:@"UserID" provider:@"WB"];

Signoff调用后,不再发送账号内容。

  1. [MobClick profileSignOff];

常见问题

[账号统计问题]

页面统计

页面统计两种方式对比

1

集成方式

手动集成

1.接口函数

  1. + (void)logPageView:(NSString *)pageName seconds:(int)seconds;
  2. + (void)beginLogPageView:(NSString *)pageName;
  3. + (void)endLogPageView:(NSString *)pageName;

参数:

参数 类型 描述 备注
pageName NSString 统计的页面名称
seconds int 时长 单位为秒

注意:

必须配对调用beginLogPageView:和endLogPageView:两个函数来完成自动统计,若只调用某一个函数不会生成有效数据;

在该页面展示时调用beginLogPageView:,当退出该页面时调用endLogPageView。

2.示例代码

在ViewController类的viewWillAppear: 和 viewWillDisappear:中配对调用如下方法:

  1. - (void)viewWillAppear:(BOOL)animated
  2. {
  3. [super viewWillAppear:animated];
  4. [MobClick beginLogPageView:@"Pagename"]; //("Pagename"为页面名称,可自定义)
  5. }
  1. - (void)viewWillDisappear:(BOOL)animated
  2. {
  3. [super viewWillDisappear:animated];
  4. [MobClick endLogPageView:@"Pagename"];
  5. }

自动采集

1.接口函数

  1. + (void)setAutoPageEnabled:(BOOL)value;

2.示例代码

  1. //设置为自动采集页面
  2. [MobClick setAutoPageEnabled:YES];

常见问题

[页面统计问题]

事件统计

如何理解自定义事件

用于追踪用户行为,记录行为发生的具体细节。

字段说明

event id:自定义事件id。
key:自定义事件下的参数。
value:自定义事件参数下的参数值。

注意事项

  • 根据您使用事件的不同选择注册不同的事件类型,计数事件请选择“多参数类型事件”类型,计数事件选择“计数事件”类型
  • event id或者key请使用(英文、数字、下划线、中划线、小数点及加号)进行定义,使用其中一种或者几种都可以,为保证数据计算的准确性,非这些“合法”以外的字符无法添加
  • event id长度不能超过128个字节,key不能超过128个字节,value不能超过256个字节
  • id、ts、du是保留字段,不能作为event id 及key的名称
  • 每个应用至多添加500个event,一个event下支持100个key同时计算,若超过100个,需要开发者手动指定哪些参数需要计算
  • 一个key下支持可传1000个value,value不建议使用特殊字符定义(建议使用标准ASCII码中可见字符部分进行定义)
  • 为方便使用者理解及使用,可通过显示名称进行重命名(支持中文),进入【应用设置-事件-编辑】进行操作;
  • 埋码完成后,建议使用集成测试进行验证

    使用自定义事件的依赖条件和限制

  • 使用自定义事件功能请先登陆 【友盟+】官网 ,在 【统计分析】->【设置】->【事件】 (子账户由于权限限制可能无法看到”设置”选项,请联系主帐号开通权限。)页面中添加相应的事件id,然后服务器才会对相应的事件请求进行处理。

  • 请在sdk初始化之后调用事件统计接口。

事件的类型分为计算事件和计数事件两种
如何理解计算事件和计数事件:计算事件在计数事件的基础上增加数值型参数的统计(计数事件只支持字符型参数的统计),如果您统计的范围不涉及到数值型参数,建议直接使用计数型事件

计数事件

在您希望跟踪的代码部分,调用如下方法:
复制代码到剪切板

  1. + (void)event:(NSString *)eventId;
  2. + (void)event:(NSString *)eventId label:(NSString *)label;
  3. + (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes;
  4. + (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes counter:(int)number;
参数 类型 描述 备注
eventId NSString 网站上注册的事件Id
label NSString 分类标签 不同的标签会分别进行统计,方便同一事件的不同标签的对比,为nil或空字符串时后台会生成和eventId同名的标签。
attributes NSDictionary 自定义属性 属性中的key-value必须为String类型, 每个应用至多添加500个自定义事件,key不能超过100个。
counter int 自定义数值

示例1:
统计微博应用中”转发”事件发生的次数,那么在转发的函数里调用:
复制代码到剪切板

  1. [MobClick event:@"Forward"];

示例2:
统计电商应用中“购买”事件发生的次数,以及购买的商品类型及数量,那么在购买的函数里调用:
复制代码到剪切板

  1. NSDictionary *dict = @{@"type" : @"book", @"quantity" : @"3"};
  2. [MobClick event:@"purchase" attributes:dict];

计算事件

统计一个数值类型的连续变量(该变量必须为整数),用户每次触发的数值的分布情况,如事件持续时间、每次付款金额等,可以调用如下方法:
复制代码到剪切板
字符串型:

  1. + (void)beginEvent:(NSString *)eventId;
  2. + (void)endEvent:(NSString *)eventId;
  3. + (void)beginEvent:(NSString *)eventId label:(NSString *)label;
  4. + (void)endEvent:(NSString *)eventId label:(NSString *)label;
  5. + (void)beginEvent:(NSString *)eventId primarykey :(NSString *)keyName attributes:(NSDictionary *)attributes;
  6. + (void)endEvent:(NSString *)eventId primarykey:(NSString *)keyName;
  7. + (void)event:(NSString *)eventId durations:(int)millisecond;
  8. + (void)event:(NSString *)eventId label:(NSString *)label durations:(int)millisecond;
  9. + (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes durations:(int)millisecond;

数值型:

  1. + (void)event:(NSString *)eventId attributes:(NSDictionary *)attributes counter:(int)number;
参数 类型 描述 备注
eventId NSString 网站上注册的事件Id
label NSString 分类标签 不同的标签会分别进行统计,方便同一事件的不同标签的对比,为nil或空字符串时后台会生成和eventId同名的标签。
attributes NSDictionary 自定义属性 属性中的key-value必须为String类型, 每个应用至多添加500个自定义事件,key不能超过100个 。
primarykey NSString 唯一标识 这个参数用于和event_id一起标示一个唯一事件,并不会被统计;对于同一个事件在beginEvent和endEvent 中要传递相同的eventId 和 primarykey。
durations int 时长 传入自己统计的时长(单位:毫秒)。

注意:
beginEvent需要和endEvent配对使用,需要传入相同的eventId。
示例:
购买《Swift Fundamentals》这本书,花了110元
复制代码到剪切板

  1. [MobClick event:@"pay" attributes:@{@"book" : @"Swift Fundamentals"} counter:110]

FAQ

[自定义事件无数数据]

错误统计

1.说明和用途

  1. 收集app适用过程中产生的Crash信息,统计SDK默认是开启Crash收集机制的

2.接口函数

  1. ** 开启CrashReport收集, 默认YES(开启状态).
  2. @param value 设置为NO,可关闭友盟CrashReport收集功能.
  3. @return void.
  4. */
  5. + (void)setCrashReportEnabled:(BOOL)value;

3.示例代码

  1. ```
  2. [MobClick setCrashReportEnabled:NO]; // 关闭Crash收集
  3. ```
  4. **注意:**
  5. 此函数需在common sdk初始化前适用,默认是开启状态

常见问题

[如何设置错误分析]

设置加密

1.说明和用途

设置是否对要发送的统计信息进行加密 详细文档

2.接口函数

接口:

  1. /** 设置是否对统计信息进行加密传输, 默认NO(不加密).
  2. @param value 设置为YES, umeng SDK 会将日志信息做加密处理
  3. */
  4. + (void)setEncryptEnabled:(BOOL)value;

3.示例代码

  1. #import <UMCommon/UMCommon.h>
  2. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  3. [UMConfigure setEncryptEnabled:YES];//打开加密传输
  4. [UMConfigure setLogEnabled:YES];//设置打开日志
  5. [UMConfigure initWith
  6. :@"Your AppKey" channel:@"App Store"];
  7. }

友盟+SDK升级说明

为了更好的SDK接入体验和性能、结构优化,以及兼容系统升级的变化,SDK 在迭代升级的过程中进行的不同程度的重构及接口的增删改,使得可能原接入过 SDK 的开发者需要有部分修改。下面将几项业务 SDK 的接口和接入方式的变动进行说明,开发者需要对说明中的版本对比项目中 SDK 的版本查看是否要进行调整。

升级到组件化SDK特别说明

老版本升级到新版本后组件化SDK的升级后,会多一个库UMCommon.framework,此库为UMeng所有业务库必须依赖的基础功能库,为每个业务模块提供初始化功能,数据传输等功能,把老版的每个业务的初始化APPKey的函数统一到UMCommon.framework库中,用户只需要调用UMCommon的初始化接口即可初始化对应APPKey。

UMCommon.framework

新增接口

  1. /** 初始化友盟所有组件产品
  2. @param appKey 开发者在友盟官网申请的appkey.
  3. @param channel 渠道标识,可设置nil表示"App Store".
  4. */
  5. + (void)initWithAppkey:(NSString *)appKey channel:(NSString *)channel;
  6. /** 设置是否在console输出sdk的log信息.
  7. @param bFlag 默认NO(不输出log); 设置为YES, 输出可供调试参考的log信息. 发布产品时必须设置为NO.
  8. */
  9. + (void)setLogEnabled:(BOOL)bFlag;
  10. /** 设置是否对日志信息进行加密, 默认NO(不加密).
  11. @param value 设置为YES, umeng SDK 会将日志信息做加密处理
  12. @return void.
  13. */
  14. + (void)setEncryptEnabled:(BOOL)value;
  15. /** 获得umid
  16. */
  17. + (NSString *)umidString;
  18. /**
  19. 集成测试需要device_id
  20. */
  21. + (NSString*)deviceIDForIntegration;

统计 SDK

主要以 4.2.4s 版本升级到组件化版本(5.0以上)的接口变化

新增接口

  1. + (void)onDeepLinkReceived:(NSURL *)link;
  2. //仅5.4.1版本新增DeepLink功能
  3. + (void)setScenarioType:(eScenarioType)eSType;//设置场景

删除接口

  1. + (void)setAppVersion:(NSString *)appVersion;
  2. //设置版本
  3. + (void)setEncryptEnabled:(BOOL)value;
  4. //设置加密
  5. //此接口已经在转移到UMCommon.framework组件里面,请查看UMConfigure.h头文件
  6. + (void)setLogSendInterval:(double)second;
  7. //设置间隔发送时间
  8. + (void)startSession:(NSNotification *)notification;
  9. //模块启动

初始化变动

原 4.2.4 初始化形式为:

  1. UMConfigInstance.appKey = @"appkey";
  2. UMConfigInstance.channelId=@"App Store";
  3. UMConfigInstance.eSType=E_UM_NORMAL;
  4. UMConfigInstance.ePolicy=SEND_INTERVAL;
  5. [MobClick startWithConfigure:UMConfigInstance];

升级到组件化更新为:

  1. [UMConfigure initWithAppkey:@"appkey" channel:@"App Store"];
  2. // 以及接口
  3. + (void)setScenarioType:(eScenarioType)eSType;//设置场景

注:组件化已没有代码设置发送策略(间隔发送) UMConfigInstance.ePolicy=SEND_INTERVAL;

更改到核心库UMCommon中

  1. + (void)setLogEnabled:(BOOL)value;
  2. //打印log