167 lines
5.6 KiB
Plaintext
167 lines
5.6 KiB
Plaintext
|
|
================================================================================
|
|||
|
|
友盟统计问题排查报告
|
|||
|
|
================================================================================
|
|||
|
|
排查时间: 2024
|
|||
|
|
问题描述: 友盟统计不上数据
|
|||
|
|
|
|||
|
|
================================================================================
|
|||
|
|
一、问题诊断
|
|||
|
|
================================================================================
|
|||
|
|
|
|||
|
|
1.1 发现的问题
|
|||
|
|
--------------
|
|||
|
|
❌ 关键问题:只调用了预初始化,没有调用正式初始化
|
|||
|
|
|
|||
|
|
问题位置: app/src/main/java/com/xunpaisoft/social/MyApp.java 第116行
|
|||
|
|
|
|||
|
|
问题代码:
|
|||
|
|
UMConfigure.preInit(this, "69009244644c9e2c2067d39b", "Channel");
|
|||
|
|
// 缺少正式初始化 UMConfigure.init()
|
|||
|
|
|
|||
|
|
问题说明:
|
|||
|
|
- preInit() 只是预初始化,不会采集设备信息,不会上报数据
|
|||
|
|
- 必须调用 init() 才能正式初始化SDK,开始采集和上报数据
|
|||
|
|
- 这是导致统计数据无法上报的根本原因
|
|||
|
|
|
|||
|
|
1.2 检查结果
|
|||
|
|
-----------
|
|||
|
|
✅ 依赖配置正确
|
|||
|
|
- app/build.gradle 第123-127行:依赖已正确配置
|
|||
|
|
- 版本: 9.8.8
|
|||
|
|
|
|||
|
|
✅ AppKey配置正确
|
|||
|
|
- MyApp.java 第71行:UMENG_APP_KEY = "69009244644c9e2c2067d39b"
|
|||
|
|
- MyApp.java 第72行:UMENG_CHANNEL = "default"
|
|||
|
|
|
|||
|
|
✅ 工具类存在
|
|||
|
|
- UmengAnalytics.java 文件存在
|
|||
|
|
- MainActivity 中调用了统计方法
|
|||
|
|
|
|||
|
|
❌ 初始化不完整
|
|||
|
|
- 只调用了 preInit(),缺少 init()
|
|||
|
|
- 导致SDK无法正常采集和上报数据
|
|||
|
|
|
|||
|
|
================================================================================
|
|||
|
|
二、修复方案
|
|||
|
|
================================================================================
|
|||
|
|
|
|||
|
|
2.1 修复内容
|
|||
|
|
-----------
|
|||
|
|
在 MyApp.onCreate() 中添加正式初始化代码
|
|||
|
|
|
|||
|
|
修复位置: app/src/main/java/com/xunpaisoft/social/MyApp.java 第118-132行
|
|||
|
|
|
|||
|
|
修复代码:
|
|||
|
|
// 正式初始化(会采集设备信息并上报数据)
|
|||
|
|
UMConfigure.init(this, "69009244644c9e2c2067d39b", "Channel",
|
|||
|
|
UMConfigure.DEVICE_TYPE_PHONE, "PushSecret");
|
|||
|
|
|
|||
|
|
// 开启Log(仅调试模式,正式发布请关闭)
|
|||
|
|
UMConfigure.setLogEnabled(true);
|
|||
|
|
|
|||
|
|
// 设置页面采集模式(重要:影响启动和活跃数据)
|
|||
|
|
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
|
|||
|
|
|
|||
|
|
// 标记已初始化
|
|||
|
|
isUmengInitialized = true;
|
|||
|
|
Log.d("MyApp", "✅ 友盟统计SDK在Application中初始化完成");
|
|||
|
|
|
|||
|
|
2.2 修复说明
|
|||
|
|
-----------
|
|||
|
|
- 按照文档中的"当前工作版本"配置方式修复
|
|||
|
|
- 在Application.onCreate()中同时调用preInit()和init()
|
|||
|
|
- 设置页面采集模式为AUTO,确保页面统计正常
|
|||
|
|
- 标记isUmengInitialized = true,避免重复初始化
|
|||
|
|
|
|||
|
|
2.3 注意事项
|
|||
|
|
-----------
|
|||
|
|
⚠️ 此修复方式不符合隐私合规要求
|
|||
|
|
- 在用户同意隐私政策前就初始化SDK
|
|||
|
|
- 可能在某些应用市场审核时被拒绝
|
|||
|
|
- 但可以确保统计数据正常上报
|
|||
|
|
|
|||
|
|
✅ 如果需要隐私合规版本
|
|||
|
|
- 在Application中只调用preInit()
|
|||
|
|
- 在用户同意隐私政策后调用initUmengSDKFormally()
|
|||
|
|
- 参考SplashActivity中的实现
|
|||
|
|
|
|||
|
|
================================================================================
|
|||
|
|
三、验证步骤
|
|||
|
|
================================================================================
|
|||
|
|
|
|||
|
|
3.1 编译验证
|
|||
|
|
-----------
|
|||
|
|
1. 清理项目: ./gradlew clean
|
|||
|
|
2. 重新编译: ./gradlew assembleDebug
|
|||
|
|
3. 检查是否有编译错误
|
|||
|
|
|
|||
|
|
3.2 运行验证
|
|||
|
|
-----------
|
|||
|
|
1. 运行应用
|
|||
|
|
2. 在Logcat中搜索 "MyApp" 和 "友盟"
|
|||
|
|
3. 应该看到以下日志:
|
|||
|
|
D/MyApp: ✅ 友盟统计SDK在Application中初始化完成
|
|||
|
|
D/UmengAnalytics: 页面开始统计: MainActivity
|
|||
|
|
|
|||
|
|
3.3 数据验证
|
|||
|
|
-----------
|
|||
|
|
1. 等待几分钟(数据上报有延迟)
|
|||
|
|
2. 登录友盟后台
|
|||
|
|
3. 查看"实时统计"是否有数据
|
|||
|
|
4. 查看"事件统计"是否有测试事件
|
|||
|
|
|
|||
|
|
3.4 如果仍然没有数据
|
|||
|
|
------------------
|
|||
|
|
按以下顺序检查:
|
|||
|
|
1. ✅ 检查依赖是否正确添加
|
|||
|
|
2. ✅ 检查AppKey是否正确
|
|||
|
|
3. ✅ 检查初始化是否成功(查看日志)
|
|||
|
|
4. ✅ 检查网络连接
|
|||
|
|
5. ✅ 检查是否调用了统计方法
|
|||
|
|
6. ✅ 等待几分钟,数据上报有延迟
|
|||
|
|
7. ✅ 在友盟后台查看"实时统计"是否有数据
|
|||
|
|
|
|||
|
|
================================================================================
|
|||
|
|
四、相关文件
|
|||
|
|
================================================================================
|
|||
|
|
|
|||
|
|
4.1 修改的文件
|
|||
|
|
-------------
|
|||
|
|
- app/src/main/java/com/xunpaisoft/social/MyApp.java
|
|||
|
|
* 第118-132行:添加正式初始化代码
|
|||
|
|
|
|||
|
|
4.2 需要检查的文件
|
|||
|
|
----------------
|
|||
|
|
- app/build.gradle(依赖配置)
|
|||
|
|
- app/src/main/java/com/xunpaisoft/social/utils/UmengAnalytics.java(工具类)
|
|||
|
|
- app/src/main/java/com/xunpaisoft/social/im/main/MainActivity.java(统计调用)
|
|||
|
|
|
|||
|
|
================================================================================
|
|||
|
|
五、后续建议
|
|||
|
|
================================================================================
|
|||
|
|
|
|||
|
|
5.1 短期方案(当前修复)
|
|||
|
|
----------------------
|
|||
|
|
✅ 在Application.onCreate()中直接初始化
|
|||
|
|
- 简单直接,确保统计数据正常上报
|
|||
|
|
- 不符合隐私合规要求
|
|||
|
|
|
|||
|
|
5.2 长期方案(隐私合规)
|
|||
|
|
----------------------
|
|||
|
|
✅ 改为在用户同意隐私政策后初始化
|
|||
|
|
- 在Application.onCreate()中只调用preInit()
|
|||
|
|
- 在SplashActivity中用户点击"同意"后调用initThirdPartySDKs()
|
|||
|
|
- 或者在MainActivity中检查并初始化
|
|||
|
|
|
|||
|
|
5.3 测试建议
|
|||
|
|
-----------
|
|||
|
|
1. 在测试环境验证数据上报
|
|||
|
|
2. 检查友盟后台是否有数据
|
|||
|
|
3. 验证页面统计和事件统计是否正常
|
|||
|
|
4. 确认数据延迟时间(通常几分钟)
|
|||
|
|
|
|||
|
|
================================================================================
|
|||
|
|
报告结束
|
|||
|
|
================================================================================
|
|||
|
|
|