使用Ionic 2向不同用户发送不同的推送通知

时间:2016-12-19 16:27:18

标签: android angular push-notification ionic2 firebase-cloud-messaging

我是全新推送通知,FCM和Ionic。

我已按照此tutorial使用Ionic 2创建推送通知,但它可以正常工作。

  1. 感觉在此离子文档中没有使用服务器端的device-id(在客户端生成)。

  2. 我无法理解如何使用相同的应用和相同的服务器代码向不同的用户发送不同的推送通知?

  3. 此处还有FCM(服务器密钥和发件人ID)的用途吗?

  4. 确切的工作流程是什么,它是否像网络插座一样工作?

  5. 感谢您的指导:)

2 个答案:

答案 0 :(得分:2)

  

1。感觉就像在这个离子文档中没有使用服务器端的device-id(在客户端生成)。

device-id(又名注册令牌)是您要向其发送推送通知的特定设备的标识符。将此值保存在App Server中非常重要,这样您以后可以专门向它发送推送通知(如果您决定/需要)。

  

2。我无法理解如何使用相同的应用程序和相同的服务器代码向不同的用户发送不同的推送通知?

如上所述,这是device-id(注册令牌)发挥作用的地方。对于每个设备,都有一个相应的唯一ID,您必须在有效负载中指定。

  

3。还有FCM(服务器密钥和发件人ID)的用途吗?

您可以参考FCM docs了解这些内容:

  

服务器密钥 - 授权您的应用服务器访问Google服务的服务器密钥,包括通过Firebase Cloud Messaging发送邮件。您在创建Firebase项目时获取服务器密钥。您可以在Firebase控制台“设置”面板的Cloud Messaging标签中查看。

     

重要提示:请勿在客户端代码中的任何位置包含服务器密钥。此外,请确保仅使用服务器密钥来授权您的应用服务器。 FCM拒绝Android,iOS和浏览器密钥。

     

发件人ID - 创建Firebase项目时创建的唯一数字值,可在Firebase控制台“设置”窗格的“云消息传递”选项卡中找到。发件人ID用于标识可以向客户端应用程序发送邮件的每个应用服务器。

为了简短起见,服务器密钥用于身份验证,发件人ID用于识别邮件来自哪个项目。

  

4。什么是确切的工作流程,它是否像网络插座一样工作?

不是真的。拥有一个Web套接字意味着连接始终处于活动状态,直到决定关闭,在FCM中(甚至在GCM之前),lifecycle是这样的:

  

生命周期流程

     
      
  • 发送和接收下游消息。

         
        
    • 发送消息。应用服务器将消息发送到客户端应用:      
          
      1. 应用服务器sends a message到GCM连接服务器。
      2.   
      3. 如果设备处于脱机状态,GCM连接服务器会将消息排队并存储。
      4.   
      5. 当设备在线时,GCM连接服务器会将消息发送给设备。
      6.   
      7. 在设备上,客户端应用程序根据特定于平台的实现接收消息。有关详细信息,请参阅特定于平台的文档。
      8.   
    •   
    • 收到消息。客户端应用程序从GCM连接服务器接收消息。
    •   
  •   
  • 发送和接收上游消息。此功能仅在您使用XMPP connection server时可用。

         
        
    • 发送消息。客户端应用程序将消息发送到应用服务器:

           
          
      1. 在设备上,客户端应用程序将消息发送到XMPP连接服务器。有关客户端应用程序如何通过XMPP发送消息的详细信息,请参阅特定于平台的文档。
      2.   
      3. 如果服务器断开连接,XMPP连接服务器会将消息排队并存储。
      4.   
      5. 当重新连接应用服务器时,XMPP连接服务器会将消息发送到应用服务器。
      6.   
    •   
  •   
  • 收到消息。应用服务器从XMPP连接服务器接收消息,然后执行以下操作:

         
        
    1. 解析邮件标题以验证客户端应用程序发件人信息。
    2.   
    3. 向XMPP连接服务器发送“ack”以确认收到该消息。
    4.   
    5. 可选择解析客户端应用程序定义的消息有效负载。
    6.   
  •   

答案 1 :(得分:0)

  

我无法理解如何使用相同的应用和相同的服务器代码向不同的用户发送不同的推送通知?

这是你的任务。您的邮件必须包含所有必要的数据(即userId),因此您的应用知道哪些用户是该邮件的目标。