如果设备令牌更改,如何将推送通知发送到多个设备(属于一个用户)



情况是:

  1. 用户在其iPhone A
  2. 上登录该应用程序
  3. 用户在其iPhone b
  4. 上登录到同一应用

现在,在数据库中,一个用户有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"]
    }]
  }
}

所有付款计划都可以访问此功能,因此应适合您。

相关内容

  • 没有找到相关文章

最新更新