Ios 如果设备令牌发生更改,如何向多个设备(属于一个用户)发送推送通知?
情况是这样的:Ios 如果设备令牌发生更改,如何向多个设备(属于一个用户)发送推送通知?,ios,push-notification,apple-push-notifications,pushwoosh,Ios,Push Notification,Apple Push Notifications,Pushwoosh,情况是这样的: 用户在iPhone A上登录应用程序 用户在其iPhone B上登录到相同的应用程序 现在,在数据库中,一个用户有2个令牌,这是正确的 +---------+-------------------+ | user_id | device_token | +---------+-------------------+ | 1 | 1st_device_token1 | | 1 | 2nd_device_token1 | +---------+---
+---------+-------------------+
| 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会定期清除其数据库中的无效令牌(每天一次左右),因此拥有“大量”的条目应该不是问题。对于向一个用户的多个设备发送推送,这种情况有一个特定的特性 其思想是在登录事件上设置特定的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"]
}]
}
}
此功能适用于所有付款计划,因此您应该可以访问它。推送服务器的反馈信息历来都不是很好,但我认为它现在已经有了很大的改进。您是否查看了最新文档,了解了服务器在发送推送时返回的信息,以确定推送令牌是否无效或推送是否无法交付?但无论如何,这是一个相当边缘的情况,不是吗。虽然这是可能的,但谁真的会删除并重新安装该应用程序如此多次,从而导致数据库中出现“大量”条目?