案例是:
现在,在数据库中,一个用户有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个令牌)。 如果他们继续删除和安装应用程序(可能会发生:)),我会在数据库中为一个用户提供大量令牌,并认为他们拥有如此庞大的设备,而实际上,有很多无效令牌。
如何预防?
答案 0 :(得分:0)
Pushwoosh会定期从无效的令牌中清除其数据库(每天一次),因此拥有“大量”条目应该不是问题。至于将推送发送到一个用户的多个设备,这种情况有一个特定的Push by UserID功能。
我们的想法是在登录事件上设置特定的UserID,并使用以下方法将其重置为注销时的默认值:
[[PushNotificationManager pushManager] setUserId:@“external_user_1”]
设置UserID后,您可以使用“users”参数发送/ createMessage API请求:
{
"request": {
"application": "APPLICATION_CODE",
"auth": "API_ACCESS_TOKEN",
"notifications": [{
"send_date": "now",
"content": "Hello world!",
"users":["external_user_1"]
}]
}
}
此功能适用于所有付款方案,因此您可以随时访问。