推送通知数据库管理
push notification DB managment
我即将在我的应用程序中为 android 使用 GCM,为 ios 使用 APNS。
在我的服务器端,我在我的数据库中保存了每次登录的设备 ID 和帐户 ID。
当用户注销时,我会删除该条目,这样用户就不会再收到它(即使它在同一设备上使用不同的帐户登录)
我考虑的场景是当用户在他仍处于登录状态时卸载应用程序。这意味着用户没有完成注销请求,即删除我的数据库上的设备 ID 条目的请求。
现在用户再次安装该应用,但使用不同的帐户登录。
在我的数据库中,我将拥有相同的设备 ID 和 2 个帐户 ID,这意味着用户将收到不属于他的推送通知(他的设备将继续收到之前登录帐户的通知)。
据我所知 android 获得了每个应用程序的设备 ID "instance" 所以我在这里没有问题(即使消息将发送到奇怪的幽灵设备),但是ios 我知道你发送给 apns 的设备 ID 对于每个设备都是唯一的...
底线 -
我是不是搞错了什么?
我考虑的解决方案是将设备超时设置为与登录超时相同(仍然是交错时间会收到来自 2 个帐户的通知)
这个问题看起来仍然很微不足道,那一定是一个更干净的解决方案。
对于 iOS,一种方法是向 NSUserDefaults
添加一个密钥,以检查该应用程序是否在其第一个 运行 上。
在连续的 运行 中,如果出现上述键,您什么都不做,因为这不是您的第一个 运行。如果密钥不存在(安装后第一个 运行),您将发送一个带有 deviceid 的请求,这会从您的服务器数据库中删除当前的 deviceid 及其所有登录条目。您将密钥设置为 true,然后您可以继续正常登录。
这仅在 deviceid 在安装之间不更改时才有效。
我想 Android 也有类似的机制。
我即将在我的应用程序中为 android 使用 GCM,为 ios 使用 APNS。
在我的服务器端,我在我的数据库中保存了每次登录的设备 ID 和帐户 ID。
当用户注销时,我会删除该条目,这样用户就不会再收到它(即使它在同一设备上使用不同的帐户登录)
我考虑的场景是当用户在他仍处于登录状态时卸载应用程序。这意味着用户没有完成注销请求,即删除我的数据库上的设备 ID 条目的请求。
现在用户再次安装该应用,但使用不同的帐户登录。
在我的数据库中,我将拥有相同的设备 ID 和 2 个帐户 ID,这意味着用户将收到不属于他的推送通知(他的设备将继续收到之前登录帐户的通知)。
据我所知 android 获得了每个应用程序的设备 ID "instance" 所以我在这里没有问题(即使消息将发送到奇怪的幽灵设备),但是ios 我知道你发送给 apns 的设备 ID 对于每个设备都是唯一的...
底线 -
我是不是搞错了什么?
我考虑的解决方案是将设备超时设置为与登录超时相同(仍然是交错时间会收到来自 2 个帐户的通知)
这个问题看起来仍然很微不足道,那一定是一个更干净的解决方案。
对于 iOS,一种方法是向 NSUserDefaults
添加一个密钥,以检查该应用程序是否在其第一个 运行 上。
在连续的 运行 中,如果出现上述键,您什么都不做,因为这不是您的第一个 运行。如果密钥不存在(安装后第一个 运行),您将发送一个带有 deviceid 的请求,这会从您的服务器数据库中删除当前的 deviceid 及其所有登录条目。您将密钥设置为 true,然后您可以继续正常登录。 这仅在 deviceid 在安装之间不更改时才有效。
我想 Android 也有类似的机制。