Push notification 如何从后端管理注册,以避免重新安装应用程序时设备上出现重复通知

Push notification 如何从后端管理注册,以避免重新安装应用程序时设备上出现重复通知,push-notification,google-cloud-messaging,firebase-cloud-messaging,azure-notificationhub,Push Notification,Google Cloud Messaging,Firebase Cloud Messaging,Azure Notificationhub,我正在寻找一种在用户重新安装应用程序(Android)时处理注册的方法 我使用安装方法从后端管理设备注册。这就是给我带来问题的场景 用户启动应用程序并呼叫后端以注册设备以获取通知。后端提供了从FCM接收的PNS句柄 使用CreateOrUpdateInstallationAsync(安装)方法在后端数据库和Azure通知中心中注册设备 该设备现在可以接收通知,并且工作正常 用户卸载应用程序 用户再次安装应用程序 应用程序调用后端并再次注册设备以获取通知。但是,与步骤1相比,将有一个新的PNS句柄

我正在寻找一种在用户重新安装应用程序(Android)时处理注册的方法

我使用安装方法从后端管理设备注册。这就是给我带来问题的场景

  • 用户启动应用程序并呼叫后端以注册设备以获取通知。后端提供了从FCM接收的PNS句柄
  • 使用CreateOrUpdateInstallationAsync(安装)方法在后端数据库和Azure通知中心中注册设备
  • 该设备现在可以接收通知,并且工作正常

  • 用户卸载应用程序
  • 用户再次安装应用程序
  • 应用程序调用后端并再次注册设备以获取通知。但是,与步骤1相比,将有一个新的PNS句柄从FCM检索
  • 在后端数据库的设备表中,同一设备现在有两行。 将通知推送到设备时,会有两个通知推送到同一设备

    我已经了解到,您可以使用Firebase云消息中提供的规范\u ID。 但是,我不知道在使用Azure通知中心时如何利用这一点

    NotificationOutcome outcome = await Hub.SendGcmNativeNotificationAsync(notification, tag);     
    
    响应类型为NotificationOutput,在响应中,我看不到任何可以帮助我查看注册是否有效的内容

    当我使用直接发布到FCM时,我会得到这样的响应,这会给我一个结果,可以用来处理服务器端的旧注册

    {
      "multicast_id": 4654657432518406292,
      "success": 1,
      "failure": 0,
      "canonical_ids": 1,
          "results": [
         {
           "registration_id": "APA91bHGMrMcVW6QNCgH62LiNIk4b1dd40Loz-aRkQUUKCUJz1HijWS2zIPJ5273dFy62u8hLEVZDBUbv-mU-WYRPF2xHMl2OUnDk73U_gSG9OcnewfQQKTkSupFfOTVG1Q0KDuWB-41",
      "message_id": "0:1490359752341398%624ba715f9fd7ecd"
    }
      ]
    }
    

    Azure通知中心自动使用FCM返回的规范\u id更新注册。除了更新注册之外,您还有什么理由想要检索规范的\u id吗

    谢谢


    Sateesh

    据我所知,在调用后端以使用安装模型注册设备通知时,您可以将
    InstallationId
    配置为Android客户端用户的唯一标识符(例如
    TelephonyManager.getDeviceId()
    )。您可以参考这一点来生成唯一的Android设备ID。

    除了跟踪注册之外,没有其他原因。必须与我的实现有关,因为注册似乎不会在我的中心自动更新。我正在使用方法CreateOrUpdateInstallationAsync(安装)创建安装服务器端