s***@cards-star.com
s***@cards-star.com
  • 发布:2023-05-31 14:37
  • 更新:2023-05-31 15:18
  • 阅读:506

【报Bug】uni统计的部分安卓设备deviceId为空

分类:uni-app

线上有一些自定义事件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等

2023-05-31 14:37 负责人:无 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

排查下一下业务逻辑 deviceId 基本上不可能出现空的情况。
建议查找到对应设备 使用uni.getSystemInfoSync().deviceId查看下返回值是什么

  • 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

要回复问题请先登录注册