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. 确认数据延迟时间(通常几分钟)
|
||
|
||
================================================================================
|
||
报告结束
|
||
================================================================================
|
||
|