如果设备令牌发生变化,如何向多个设备(属于一个用户)发送推送通知?

时间:2016-12-30 17:47:33

标签: ios push-notification apple-push-notifications pushwoosh

案例是:

  1. 用户在iPhone A上登录应用
  2. 用户登录iPhone B上的同一个应用
  3. 现在,在数据库中,一个用户有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个令牌)。 如果他们继续删除和安装应用程序(可能会发生:)),我会在数据库中为一个用户提供大量令牌,并认为他们拥有如此庞大的设备,而实际上,有很多无效令牌。

    如何预防?

1 个答案:

答案 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"]
    }]
  }
}

此功能适用于所有付款方案,因此您可以随时访问。