我即将在我的应用程序中使用GCM for android和APNS for ios。
在我的服务器端,我在每次登录时都会在我的数据库中保存设备ID和帐户ID。
当用户注销时,我删除了该条目,因此用户不再接收该条目(即使它在同一设备上使用其他帐户登录)
我想到的场景是当用户在他仍然登录时卸载应用程序。这意味着用户没有经历注销请求,这是删除我的数据库上的设备ID条目的请求。
现在,用户再次安装该应用,但使用其他帐户登录。
在我的数据库中,我将拥有相同的设备ID和2个帐户ID,这意味着用户将获得不属于他的推送通知(他的设备将继续收到以前登录帐户的通知)。< / p>
据我所知,android获得了每个应用程序的设备ID&#34;实例&#34;所以我这里没有问题(即使将消息发送到鬼设备这很奇怪),但是在ios上我知道你发送到apns的设备ID对于每个设备都是唯一的......
底线 -
我有什么不对吗?
我想到的解决方案是将设备超时设置为与登录超时相同(隔行扫描的时间仍会从2个帐户获得通知)
这个问题看起来仍然很简单,而且必须是一个更清洁的解决方案。
答案 0 :(得分:0)
对于iOS,一种方法是向NSUserDefaults
添加一个键,以检查应用是否在首次运行。
在连续运行中,如果存在上述键,则不执行任何操作,因为它不是您的第一次运行。如果密钥尚未出现(安装后首次运行),则使用deviceid发送请求,该请求将从服务器数据库中删除当前的deviceid及其所有已登录的条目。您将密钥设置为true,然后您可以继续正常登录。 这仅在deviceid不在安装之间更改时才有效。
我猜Android也有类似的机制。