uni-app个推问题,client_id在什么场景下会变更?

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app个推问题,client_id在什么场景下会变更?

问题说明

我们的业务不限制设备登录,却允许多平台登录,即同一个客户既可能用苹果,也可能用安卓,且可以保持登录同一账户同时使用;现在后端同学发现,在现有app上报的client_id信息中,会出现频繁变更的问题;即后端同学不清楚,到底给那一台设备去推送消息;安卓和苹果都会有这个问题。

RT,在什么场景下会变更?是否有文档?可以枚举出有哪些场景吗?

  1. 打新基座会 client_id 会变了?
  2. 打新版本正式包 client_id 会变吗?
  3. client_id 是不是有自动刷新的逻辑呢?

Image

Image


5 回复

所以现在的诉求是,希望官方明确告知 ,client_id 会在哪些场景下变更


client_id变更的可能性很低,只有在应用卸载后再重新安装才可能变更。

90天及以上客户端不联网才会过期,uni-id-pages 的做法是每次 本地token刷新(含 token 续期时和账号登录时)会把客户端的 push cid 上报到自己的服务器和 user_id 做一个映射管理

卸载,超期都会变 因为我们这边的后端是用的java,登录情况跟你是一样,也是什么设备都可以登录,也是可以多个人同时登录
我们这边的做法,就是获取设备的唯一码,但是有些设备获取不到就没办法了。
登录时,表里新增一条数据,有用户id,cid,设备唯一码等,
退出登录的时候会根据cid和设备唯一码去删除
登录的时候,也会去根据设备唯一码去库里查
获取设备唯一码,就根据下面这几个去判断安卓还是ios,或者是版本号啥的判断获取的 plus.device.imei

plus.device.getOAID

plus.device.getInfo

在uni-app中集成个推(Getui)进行消息推送时,client_id 是用于标识客户端设备的唯一标识符。了解 client_id 在哪些场景下会变更对于确保推送服务的稳定性和准确性至关重要。以下是一些可能导致 client_id 变更的场景及相应的代码处理示例:

1. 设备重新安装应用

当用户在设备上重新安装应用时,client_id 通常会重新生成。这是因为重新安装应用相当于清除了应用的所有本地数据和缓存,包括之前的 client_id

处理示例

// 在应用启动时初始化个推
uni.getSetting({
    success: function(res) {
        if (res.authSetting['scope.userInfo']) {
            // 获取新的 client_id
            const client = uni.requireNativePlugin('Getui');
            client.getClientId({
                success: function(clientIdResult) {
                    const clientId = clientIdResult.clientId;
                    // 保存 clientId 到服务器或本地存储
                    uni.setStorageSync('clientId', clientId);
                    console.log('New client_id:', clientId);
                },
                fail: function(err) {
                    console.error('Failed to get client_id:', err);
                }
            });
        } else {
            // 处理未授权情况
        }
    }
});

2. 设备恢复出厂设置

设备恢复出厂设置会清除所有用户数据和应用程序数据,因此 client_id 也会重新生成。

处理逻辑

与重新安装应用类似,在应用启动时重新获取并保存 client_id

3. 清理应用数据

用户手动清理应用数据(如通过设备设置中的“应用管理”清除数据)也会导致 client_id 变更。

处理逻辑

同样,在应用启动时重新获取并保存 client_id

4. 系统或应用升级

一般情况下,系统或应用升级不会改变 client_id,但如果在升级过程中涉及到数据迁移或清理,则可能导致 client_id 变更。

处理逻辑

在应用升级后的首次启动时,检查并重新获取 client_id

总结

为了确保推送服务的准确性,建议在每次应用启动时都尝试获取 client_id 并与服务器上的记录进行比对。如果 client_id 发生变化,及时更新服务器上的记录。上述代码示例展示了如何在 uni-app 中获取 client_id 并保存到本地存储,但实际应用中还需考虑网络请求、错误处理以及用户隐私保护等因素。

回到顶部