无需登录如何将用户数据存入数据库?设备唯一token生成方案咨询
无需登录的设备唯一标识实现方案
完全不需要依赖Expo推送Token实现该需求,推送Token本身强依赖用户的推送授权,用户一旦拒绝就无法获取有效有效值,完全不适合作为稳定的设备标识,你可以选择以下两种无授权依赖的方案:
方案1:调用原生系统设备标识(无需权限)
你可以直接使用Expo官方的expo-application库获取系统原生提供的设备唯一标识,全程不需要申请任何用户权限:
- iOS端可获取
identifierForVendor:是苹果为同一开发者账号下的应用分配的设备唯一标识,只要用户不卸载该开发者账号下的全部应用,标识就不会发生变更 - 安卓端可获取
androidId:是安卓系统为每台设备上的单个应用分配的唯一标识,仅当用户恢复出厂设置时才会变更 - 该标识和应用签名、开发者账号强绑定,不会和其他应用的标识冲突,可直接作为数据库索引存储用户私有数据
方案2:本地生成UUID持久化存储(兼容性最高)
如果担心系统标识存在变更概率(比如用户刷机、恢复出厂设置等场景),可以自己生成唯一标识本地存储:
- 应用首次启动时,生成一个随机UUID字符串,通过
expo-secure-store持久化保存在设备本地 - 后续每次应用启动优先读取本地存储的UUID,读取成功则直接使用,读取失败再生成新的UUID
- 优势:完全不依赖系统接口,不需要任何权限,只要用户不卸载应用(安卓开启应用备份功能的前提下,卸载重装也可以恢复存储的UUID),标识稳定性极高
内容的提问来源于stack exchange,提问作者kalculated
相关产品推荐
相关产品推荐

