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 | +---------+---

情况是这样的:

  • 用户在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会定期清除其数据库中的无效令牌(每天一次左右),因此拥有“大量”的条目应该不是问题。对于向一个用户的多个设备发送推送,这种情况有一个特定的特性

    其思想是在登录事件上设置特定的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"]
        }]
      }
    }
    

    此功能适用于所有付款计划,因此您应该可以访问它。

    推送服务器的反馈信息历来都不是很好,但我认为它现在已经有了很大的改进。您是否查看了最新文档,了解了服务器在发送推送时返回的信息,以确定推送令牌是否无效或推送是否无法交付?但无论如何,这是一个相当边缘的情况,不是吗。虽然这是可能的,但谁真的会删除并重新安装该应用程序如此多次,从而导致数据库中出现“大量”条目?