跳转到主要内容
PRODUCT DOCUMENTS

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

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

6.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 如果您为手动集成SDK6.x.x

  1. 删除工程libs目录下umeng-analytics-6.1.4.jar文件,同时删除工程build.gradle中对应依赖项。

  2. 删除原工程中老版本【友盟+】统计SDK包及utdid4all包

  3. 在工程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/' }
}
}

4. 在工程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能力
    
}
注意

推荐使用自动集成方式集成,如您无法自动集成,可查看手动集成操作。

如您曾申请过海外SDK,请提交工单获取最新海外SDK,并按照上面手动集成操作集成。

2.1.2 如果您为自动集成SDK6.0.0

在工程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在用户同意隐私政策前不可以获取任何个人信息,所以友盟+修改初始化为以下操作:

  1. 请务必确保您已经将友盟+SDK升级到满足监管新规的最新版本。各类最新SDK下载链接:https://developer.umeng.com/sdk

  2. 请务必在《隐私政策》中向用户告知使用友盟SDK,参考条款如下:

    1. 使用SDK名称:友盟SDK

    2. 服务类型:请按SDK功能填写,如统计分析

    3. 收集个人信息类型:设备信息(IMEI/MAC/Android ID/IDFA/OpenUDID/GUID/IP地址/SIM 卡 IMSI 信息等) 隐私权政策链接:https://www.umeng.com/page/policy

(该部分的改动是为了适用更多的App,若您之前已经添加过了友盟+的隐私透出,可以不用修改)

3. 在用户同意隐私政策后才可以正式初始化友盟+SDK,具体技术操作如下:

    1. 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、操作指南:

    2、操作指南:

    由于版本迭代原因,Android页面采集分为四种。为了避免大家混淆,在common SDK 9.4.2版本中,删除了两种采集模式,和iOS采集功能拉齐,分为自动采集和手动采集两种模式。在7.x.x版本升级至9.4.2版本时,若您:

    1. 调用过MobclickAgent.openActivityDurationTrack(false);

    因为MobclickAgent.openActivityDurationTrack接口已经废弃,如果App调用过MobclickAgent.openActivityDurationTrack(false);需要在新版本SDK初始化后调用MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.MANUAL);并删除所有activity页面的onResume/onPause函数中调用的MobclickAgent.onResume / MobclickAgent.onPause 函数。

    1. 未调用过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 错误分析(稳定性)

    错误分析在9.3.8版本中,已经独立为了单独的jar包,因为错误分析变为了独立的产品U-APM(移动性能监测产品),加强了错误捕获和分析能力,新增了启动分析、卡顿分析等能力。

    集成U-APM的jar包可以点击查看文档

    移动统计错误分析升级到U-APM的集成文档

    2.3.5 在线参数

    在9.3.8版本中,该能力独立为单独的jar包,您可以按需导入。

    2.3.6 集成测试

    1. 新版集成测试仅适配9.4.0及以上版本的Android SDK

    2. 新版集成测试需要配置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后,页面显示如下表示升级成功20210811112417

    集成视频