7.X升级至最新
1 SDK9.4.4版本优势
合规优化:符合5月1日 监管新规
新增隐私授权结果上传API
新版集成测试支持(点击查看新版集成测试优势)
优势适配Android 10、11系统
该版本SDK支持搭配友盟+其他新SDK使用:如U-APM(原错误分析升级,独立崩溃分析SDK,丰富崩溃捕获类型,增加错误细查、崩溃回调和卡顿分析)、友盟超链(U-LInk)、ABtest和在线参数;
修复版本号隔离问题
支持5G采集
跟随Android 系统新特征,做自身优化
简化了页面模式选择,降低sdk集成或升级时错误的可能性。
2 升级操作教程
友盟+SDK的使用主要分为三部分:集成->初始化->功能使用。其中集成和初始化为必要步骤,完成后您即可使用U-App的新增启动活跃等基础统计分析。如需要事件分析或其他功能,需要单独进行代码开发。接下来会根据这三部分,分别介绍升级操作。
如您同时接入过友盟+多款SDK,为保障整体合规和不报错,请将所集成的SDK同时升级。
2.1 集成SDK
该文档推荐使用自动集成方式,即您当初使用手动集成或者自动集成,以下文档都会教您如果更改为自动集成。
2.1.1 如果您为手动集成SDK7.x.x
删除工程libs目录下umeng-analytics-7.x.x.jar、umeng-common-1.x.x.jar文件,同时删除工程build.gradle中对应依赖项。
在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】SDK新maven仓库地址:
maven{url'https://repo1.maven.org/maven2/'}
buildscript {
repositories {
google()
jcenter()
maven { url 'https://repo1.maven.org/maven2/' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://repo1.maven.org/maven2/' }
}
}3. 在工程App 对应build.gradle配置脚本dependencies段中添加统计SDK库和其它库依赖
dependencies {
implementation fileTree(include:['*.jar'], dir:'libs')
// 下面各SDK根据宿主App是否使用相关业务按需引入。
// 友盟统计SDK
implementation 'com.umeng.umsdk:common:9.4.4'// 必选
implementation 'com.umeng.umsdk:asms:1.4.1'// 必选
//下列组件可选用
implementation 'com.umeng.umsdk:apm:1.2.0'//错误分析升级为U-APM产品,关注crash数据需集成
implementation 'com.umeng.umsdk:abtest:1.0.0'//U-App中ABTest能力
}2.1.2 如果您为自动集成SDK7.x.x
在工程build.gradle配置脚本中buildscript和allprojects段中修改【友盟+】SDK新maven仓库地址为:maven{url'https://repo1.maven.org/maven2/'}
buildscript {
repositories {
google()
jcenter()
maven { url 'https://repo1.maven.org/maven2/' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://repo1.maven.org/maven2/' }
}
}2. 在工程App 对应build.gradle配置脚本dependencies段中添加统计SDK库和其它库依赖
dependencies {
implementation fileTree(include:['*.jar'], dir:'libs')
// 下面各SDK根据宿主App是否使用相关业务按需引入。
// 友盟统计SDK
implementation 'com.umeng.umsdk:common:9.4.4'// 必选
implementation 'com.umeng.umsdk:asms:1.4.1'// 必选
//下列组件可选用
implementation 'com.umeng.umsdk:apm:1.2.0'//错误分析升级为U-APM产品,关注crash数据需集成
implementation 'com.umeng.umsdk:abtest:1.0.0'//U-App中ABTest能力
}2.2 初始化友盟+
由于工信部的合规要求App在用户同意隐私政策前不可以获取任何个人信息,所以友盟+修改初始化为以下操作:
请务必确保您已经将友盟+SDK升级到满足监管新规的最新版本。各类最新SDK下载链接:https://developer.umeng.com/sdk
请务必在《隐私政策》中向用户告知使用友盟SDK,参考条款如下:
使用SDK名称:友盟SDK
服务类型:请按SDK功能填写,如统计分析
收集个人信息类型:设备信息(IMEI/MAC/Android ID/IDFA/OpenUDID/GUID/IP地址/SIM 卡 IMSI 信息等) 隐私权政策链接:https://www.umeng.com/page/policy
(该部分的改动是为了适用更多的App,若您之前已经添加过了友盟+的隐私透出,可以不用修改)
3. 在用户同意隐私政策后才可以正式初始化友盟+SDK,具体技术操作如下:
SDK预初始化
//在Applicaiton.onCreate函数中调用预初始化函数UMConfigure.preInit(),预初始化函数不会采集设备信息,也不会向友盟后台上报数据。
// SDK预初始化函数
// preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验
public static void preInit(Context context,String appkey,String channel)b. 同意隐私协议后的正式初始化
一旦App获取到《隐私政策》的用户授权,后续的App冷启动,开发者应该保证在Applicaiton.onCreate函数中调用预初始化函数UMConfigure.preInit()。正式初始化函数UMConfigure.init可以按需调用(可以在预初始化函数之后紧接着调用,也可以放到后台线程中延迟调用,但还是必须调用,不能遗漏)
//初始化方法一,优先级最高
UMConfigure.init(Context context,String appkey,String channel,int deviceType,String pushSecret);
/**
* 初始化方法二
* 注意:如果您已经在AndroidManifest.xml中配置过appkey和channel值,可以调用此版本初始化函数。
*/
UMConfigure.init(Context context,int deviceType,String pushSecret);c. 初始化后,即可使用集成测试进行集成校验。
2.3 功能变动
2.3.1 页面采集
1、接口变动:
废弃:
接口 | 归属类 | 用途 |
|---|---|---|
openActivityDurationTrack | MobclickAgent | 使能/禁止默认的页面统计功能 |
新增:
接口 | 归属类 | 用途 |
|---|---|---|
setPageCollectionMode | MobclickAgent | 设置页面统计模式 |
2、操作指南:
由于版本迭代原因,Android页面采集分为四种。为了避免大家混淆,在common SDK 9.4.2版本中,删除了两种采集模式,和iOS采集功能拉齐,分为自动采集和手动采集两种模式。在7.x.x版本升级至9.4.2版本时,若您:
调用过MobclickAgent.openActivityDurationTrack(false);
因为MobclickAgent.openActivityDurationTrack接口已经废弃,如果App调用过MobclickAgent.openActivityDurationTrack(false);需要在新版本SDK初始化后调用MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.MANUAL);并删除所有activity页面的onResume/onPause函数中调用的MobclickAgent.onResume / MobclickAgent.onPause 函数。
未调用过MobclickAgent.openActivityDurationTrack(false);或者设置为true。
如果您需要页面路径分析,可以选择AUTO模式。如果您不需要页面分析,可以改页面模式为Manual,节省您用户使用App时的流量消耗。
页面采集模式的详细介绍,可以点击查看文档。
2.3.2 自定义事件
1、接口变动:
新增
接口 | 归属类 | 用途 |
|---|---|---|
onEventObject | MobclickAgent | 支持Key(String)-Value(Object)类型Map参数的自定义事件接口 |
废弃
接口 | 归属类 | 用途 |
|---|---|---|
setScenarioType | MobclickAgent | 设置场景 |
2、操作指南
参数值可以是如下几种类型之一:String、Long、Integer、Float、Double、Short。代码:
public static void onEventObject(Context context, String eventID, Mapmap)
参数 | 含义 |
|---|---|
context | 当前宿主进程的ApplicationContext上下文。 |
eventId | 为当前统计的事件ID。 |
map | 对当前事件的参数描述,定义为“参数名:参数值”的HashMap“<键-值>对”。 |
例子:
Map<String, Object> music = new HashMap<String, Object>();
music.put("music_type", "popular");//自定义参数:音乐类型,值:流行
music.put("singer", "JJ"); //歌手:(林俊杰)JJ
music.put("song_name","A_Thousand_Years_Later"); //歌名:一千年以后
music.put("song_price",100); //价格:100元
MobclickAgent.onEventObject(this, "play_music", music);备注:
多参数类型事件能满足原来计算事件/计数事件的分析场景;
对于计算型事件不同的参数类型对应不同的计算方式,总共可以分为两大类,数值型和字符型
数字型:支持累加值、最大值、最小值、平均值和去重数计算
字符型:支持去重数计算
2.3.3 Android Q适配
统计SDK 9.3.8及以上版本自带oaid模块和三方oaid库(联想、小米、oppo、vivo、华为)不会发生包名冲突,开发者可同时集成两者。开发者可以通过如下api获得oaid:
UMConfigure.getOaid(mContext,newOnGetOaidListener());样例代码:
import com.umeng.commonsdk.listener.OnGetOaidListener;
UMConfigure.getOaid(mContext,newOnGetOaidListener(){
@Override
public void onGetOaid(String oaid){
android.util.Log.i("mob","oaid"+oaid);
}
}2.3.4错误分析(crash分析)
在9.3.8版本中,已经独立为了单独的jar包,因为错误分析变为了独立的产品U-APM(移动性能监测产品),加强了错误捕获和分析能力,新增了启动分析、卡顿分析等能力。
集成U-APM的jar包可以点击查看文档。
移动统计错误分析升级到U-APM的集成文档
2.3.5 在线参数
在9.3.8版本中,该能力独立为单独的jar包,您可以按需导入。
2.3.6 集成测试
新版集成测试仅适配9.4.0及以上版本的Android SDK
新版集成测试需要配置URL Schemes
新版集成测试需要在manifest.xml文件中配置,您需要在其中找到响应android.intent.action.MAIN的activity(也就是应用可以被外部唤起的第一个Activity),加上如下代码,让应用能被指定连接scheme唤起。
//1.唤起码默认为“um.该app对应的appkey”,不可改变
//2.请使用单独intent-filter,和其他intent-filter并列,不要将上述代码填入其他intent-filter里;
//3.该功能仅9.4.0及以上版本的SDK支持
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="um.该app对应的appkey" />
</intent-filter>
</activity>打开app后,页面显示如下表示升级成功