情况是:
- 用户在其iPhone A 上登录该应用程序
- 用户在其iPhone b 上登录到同一应用
现在,在数据库中,一个用户有2个令牌,这是正确的。
+---------+-------------------+
| user_id | device_token |
+---------+-------------------+
| 1 | 1st_device_token1 |
| 1 | 2nd_device_token1 |
+---------+-------------------+
说,该用户删除了该应用程序,再次安装了该应用程序(在两个设备上),这意味着,APN中的令牌更改了,因此在我们的数据库中,有4个唯一的令牌。
+---------+-----------------------+
| user_id | device_token |
+---------+-----------------------+
| 1 | 1st_device_token1 |
| 1 | 2nd_device_token1 |
| 1 | 1st_device_token1_new |
| 1 | 2nd_device_token1_new |
+---------+-----------------------+
现在,该用户的推送通知将发送到4个设备(4个令牌)。如果他们不断删除和安装应用程序(可能发生:)),我会在数据库中拥有大量的令牌,并认为他们拥有大量设备,而实际上,实际上有很多设备无效令牌。
如何预防?
PushWoosh会从无效的令牌(每天一次左右)中定期清除其数据库,因此拥有"大量"条目不应该是一个问题。对于将推送到一个用户的多个设备的发送,对于此情况,用户ID功能有一个特定的推动。
这个想法是在登录事件上设置特定的用户ID并将其重置为使用以下方法注销的默认值:
[[PushNotificationManager pushManager] setUserId:@“external_user_1”]
设置了用户ID后,您可以使用"用户"参数发送/createMessage API请求:
{
"request": {
"application": "APPLICATION_CODE",
"auth": "API_ACCESS_TOKEN",
"notifications": [{
"send_date": "now",
"content": "Hello world!",
"users":["external_user_1"]
}]
}
}
所有付款计划都可以访问此功能,因此应适合您。