线上有一些自定义事件device_id字段为空的记录,我用JQL查出来还不少,例如查询:
db.collection('uni-stat-event-logs').where('event_key == "USER_ERROR_EVENT" && (device_id == null || device_id == "") && device_os_name == "android"').get();
可得其中一条记录如下,啥都有就是没有device_id:
{
"_id": "64706e9bf5cf3a2df4d01438",
"appid": "__UNI__A28431B",
"channel": "1001",
"create_time": 1685089947257,
"device_language": "zh-CN",
"device_model": "JSN-AL00",
"device_os_name": "android",
"device_os_version": "8.1.0",
"device_pixel_ratio": 3,
"device_screen_height": 741,
"device_screen_width": 360,
"device_vendor": "huawei",
"device_window_height": 681,
"device_window_width": 360,
"event_key": "USER_ERROR_EVENT",
"page_id": "63e353cbf43e606dd87274a1",
"param": "{\"args\":\"[\\\"startProguard\\\",{\\\"code\\\":300103,\\\"msg\\\":\\\"未登录\\\"}]\",\"isDebug\":false,\"errorTrace\":\"Error\\n at e.loge (app-service.js:10:52903)\\n at app-service.js:9:726216\\n at f (app-service.js:10:830)\\n at Generator.<anonymous> (app-service.js:10:2168)\\n at Generator.throw (app-service.js:10:1193)\\n at n (app-service.js:10:273155)\\n at c (app-service.js:10:273402)\"}",
"platform": "android",
"platform_version": "",
"sdk_version": "",
"session_id": "64706e9628064a7587d62fe7",
"uid": "",
"version": "1.4.0"
},
并且这些没有device_id的手机,在我们APP内的登录过程也失败了,因为APP基于uni.getSystemInfoSync().deviceId做登录的,如果uni.getSystemInfoSync().deviceId为空值,则无法登录。有自定义事件显示这些设备的uni.getSystemInfoSync().deviceId返回很可能为空。
Uni Android SDK:3.7.8.81745_20230323
HBuilderX:3.7.12.20230331-alpha
问题机型:华为LIO-AN00, 华为ASK-AL00x, meizu 16th, Nokia X6等
s***@cards-star.com (作者)
uni统计上报的device_id字段和业务逻辑没有关系,通过JQL可以查询到很多device_id字段为空的日志,只不过恰好这些用户有无法登录的日志而已,所以推测这些用户uni.getSystemInfoSync().deviceId也是空的。
2023-05-31 15:29
s***@cards-star.com (作者)
补充下,uni统计上报的device_id是SDK的自身行为,是默认字段。
2023-05-31 15:30
DCloud_Android_ST
回复 s***@cards-star.com: 我说的是我们这边生成deviceId 的业务逻辑 基本杜绝了为空的可能 我认为不是uni.getSystemInfoSync().deviceId为空 而是其他逻辑影响了你的业务
2023-05-31 15:59
s***@cards-star.com (作者)
回复 DCloud_Android_ST: 好的,但是uni统计2.0的device_id确实存在为空的日志,这部分是APP控制不了的,麻烦排查下,因为我们发现这部分用户的日志和用户登录出错强相关;另一方面我们登录的请求字段有通过自定义事件上报,deviceId确实就是空
2023-05-31 16:58
DCloud_Android_ST
回复 s***@cards-star.com: 这个只能是你提供设备信息 我们找些相同设备进行uni.getSystemInfoSync().deviceId是否为空 来验证问题
2023-06-01 15:08