基础功能
一、SDK预初始化
为保证您的在集成【友盟+】统计SDK之后,能够满足工信部相关合规要求,您应确保在App安装后首次冷启动时,在Applicaiton.onCreate函数中调用预初始化函数UMConfigure.preInit(),并弹出隐私授权弹窗给您的App用户。
预初始化函数不会采集设备信息,也不会向友盟后台上报数据,同时preInit耗时极少,不会影响冷启动体验。所以务必在Applicaiton.onCreate函数中调用,否则统计日活是不准确的!
1.1
public static void preInit(Context context,String appkey,String channel)1.2示例:
UMConfigure.preInit(this,"您的appkey","您的渠道");1.3参数解释:
1.3.1 appkey:Appkey是友盟+为每一个应用生成的唯一标识码,用来在数据计算时,区分数据是哪个应用的,非常重要!请勿填写出错!创建或查看链接:应用管理列表 
1.3.2 channel:标识设备安装时的来源渠道。设备仅记录首次安装激活的渠道,在其他渠道再次安装不会重复计量。 所以在测试不同的渠道的时候,需查看集成测试中的“本次安装渠道”,但是在产品中计算是“初次安装渠道”
1.3.3 Channel渠道的命名规范
可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。
首尾字符不可以为空格。
不要使用纯数字作为渠道ID。
最多256个字符。
“unknown” 及其各种大小写形式,作为【友盟+】保留的字段,不可以作为渠道名。
在您查看数据时,渠道会作为一个数据细分的维度。

1.3.4 账号统计及用户属性上报
【友盟+】在统计用户时以设备为标准,如果需要统计应用自身的账号,请参考 高级功能 完成账号统计的集成。
设置上报用户上报后,在U-App中的应用及实践场景可参考文档:用户账号及用户属性
U-App以友盟生成的设备ID(友盟ID)为唯一标识进行指标计算,因此我们强烈建议您同时完成账号统计的集成,集成后,用户使用您App时登录的用户账号将和行为日志同时上报,方便后续分析、导出明细日志时您能通过用户登录账号识别用户,并扩展、关联到您业务的其他系统中。
二、SDK初始化
确保App首次冷启动时,在用户阅读您的《隐私政策》并取得用户授权之后,才调用正式初始化函数UMConfigure.init()初始化统计SDK,此时SDK才会真正采集设备信息并上报数据。反之,如果用户不同意《隐私政策》授权,则不能调用UMConfigure.init()初始化函数。
一旦App获取到《隐私政策》的用户授权,后续的App冷启动,开发者应该保证在Applicaiton.onCreate函数中调用预初始化函数UMConfigure.preInit()。正式初始化函数UMConfigure.init可以按需调用(可以在预初始化函数之后紧接着调用,也可以放到后台线程中延迟调用,但还是必须调用,不能遗漏)。
2.1初始化接口:
/**
* 注意: 即使您已经在AndroidManifest.xml中配置过appkey和channel值,也需要在App代码中调
* 用初始化接口(如需要使用AndroidManifest.xml中配置好的appkey和channel值,
* UMConfigure.init调用中appkey和channel参数请置为null)。
*/
UMConfigure.init(Context context,String appkey,String channel,int deviceType,String pushSecret);或者
/**
* 注意:如果您已经在AndroidManifest.xml中配置过appkey和channel值,可以调用此版本初始化函数。
*/
UMConfigure.init(Context context,int deviceType,String pushSecret);2.2示例:
UMConfigure.init(this,"您的appkey","您的渠道",UMConfigure.DEVICE_TYPE_PHONE, "");2.3参数解释:
2.3.1 appkey和channl必须保持和预初始化一致!!!
2.3.2 deviceType:设备类型,UMConfigure.DEVICE_TYPE_PHONE为手机、UMConfigure.DEVICE_TYPE_BOX为盒子
2.3.3 pushSecret:Push推送业务的secret
三、程序退出时,用于保存统计数据的API。
如果开发者调用kill或者exit之类的方法杀死进程,或者双击back键会杀死进程,请务必在此之前调用MobclickAgent.onKillProcess方法,用来保存统计数据。
public static void onKillProcess(Context context);参数 | 含义 |
context | 当前宿主进程的ApplicationContext上下文。 |
四、完整代码示例
详细可见友盟+SDK集成Demo
public class App extends Application {
SharedPreferencesHelper sharedPreferencesHelper;
@Override
public void onCreate() {
super.onCreate();
sharedPreferencesHelper=new SharedPreferencesHelper(this,"umeng");
//设置LOG开关,默认为false
UMConfigure.setLogEnabled(true);
//友盟预初始化
UMConfigure.preInit(getApplicationContext(),"59892f08310c9307b60023d0","Umeng");
/**
* 打开app首次隐私协议授权,以及sdk初始化,判断逻辑请查看SplashTestActivity
*/
//判断是否同意隐私协议,uminit为1时为已经同意,直接初始化umsdk
if(sharedPreferencesHelper.getSharedPreference("uminit","").equals("1")){
//友盟正式初始化
UmInitConfig umInitConfig=new UmInitConfig();
umInitConfig.UMinit(getApplicationContext());
}
}
}五、集成校验
如果初始化正确,那您已经完成了基础统计,在产品中以下模块是可以正常统计显示数据分析结果的,包括产品中的“实时”和“统计”除“功能使用”外都会有数据。

为了帮助您判断初始化是否正确,为您提供测试工具,包括集成测试、日志打印和合规检测。
5.1集成测试
通过集成测试您可以看到打开App后,上传至友盟+服务端的所有用户行为日志,通过这些日志可以确认集成、自定义事件埋点和页面采集是否符合您的预期。
集成测试的配置详见:埋点验证配置
打开app后,页面显示如下表示集成成功

5.2日志显示
可通过UMConfigure.setLogEnabled(boolean)接口控制【友盟+】LOG的输出。默认情况下SDK运行调试日志关闭,需要用户手动打开。注意: App正式上线前请关闭SDK运行调试日志,避免无关Log输出。
/**
*设置组件化的Log开关
*参数: boolean 默认为false,如需查看LOG设置为true
*/
UMConfigure.setLogEnabled(true);注意: 如果查看初始化过程中的LOG,一定要在调用初始化方法前将LOG开关打开。
日志分为四种等级,方便用户查看:
Error(打印SDK集成或运行时错误信息)。
Warn(打印SDK警告信息)。
Info(打印SDK提示信息)。
Debug(打印SDK调试信息)。
5.3合规检测
集成U-APM即可免费使用合规检测能力,帮助您查看您的App是否合规集成友盟+SDK,以及是否还有别的合规问题。详见:U-APM隐私合规检测功能