【问题标题】:Setting different 'click_action' for web and ionic apps为 web 和 ionic 应用程序设置不同的“click_action”
【发布时间】:2020-01-28 22:09:39
【问题描述】:

我有一个 Web 应用程序 (Angular 6) 和一个移动应用程序 (Ionic 4),它们都连接到同一个数据库。我正在使用 FCM ( Firebase Cloud Message ) 进行推送通知。我关注了 2 个链接 1.https://www.djamware.com/post/5c6ccd1f80aca754f7a9d1ec/push-notification-using-ionic-4-and-firebase-cloud-messaging 2.https://medium.com/@selvaganesh93/firebase-cloud-messaging-important-rest-apis-be79260022b5

我为每个用户创建了 FCM“组”。这意味着用户可以使用多个设备(浏览器或移动设备)登录应用程序,并且该用户将拥有一个“fcm_notification_key”,其中包含来自不同设备的 FCM 令牌。

所以现在,当应用程序向这个唯一的“fcm_notification_key”键推送任何通知时,与该键连接的所有设备(网络和离子应用程序)都将收到。这是完美的工作。

  "notification":{
    "title":"Notification Title",
    "body":"Notification Body",
    "click_action" : "myweb.com/specific_url",
  }
  "notification":{
    "title":"Notification Title",
    "body":"Notification Body",
    "click_action" : "FCM_PLUGIN_ACTIVITY",
  }

第一个是使用网络,当用户单击通知时,“click_action”处指定的 URL 在浏览器中打开。哪个是正确的。

第二个是使用 Ionic 应用程序。当用户单击通知时,它会打开 Ionic 应用程序,因为为“click_action”指定了“FCM_PLUGIN_ACTIVITY”。这也是正确的。

但问题是,现在我正在向 Group 发送通知(其中将包含 web 应用程序和 ionic 应用程序)。我应该如何发送数据以便它同时适用于 web 和 ionic?

【问题讨论】:

  • 您向哪个组发送通知

标签: angular firebase-cloud-messaging ionic4


【解决方案1】:

您可以在 json 中有一个方法,并根据类型,从函数中处理事件

"notification":{
   "title":"Notification Title",
   "body":"Notification Body",
   "click_action: ()" : "click_action()",
}

TS:

click_action() {
  if(app) {

  } else {   
}

【讨论】:

  • 我没有从客户端处理任何事情......我发送通知后端,当用户点击通知时,他们(网络和离子)会自动处理事件
【解决方案2】:

您想处理不同类型的click_action 以及每个设备的其他参数属于属于用户的特定设备组,

如果是这样,那么这个问题的答案是:您可以合并通知有效负载选项,如下所示,通过自定义每个设备属于特定组的参数,for reference official documentation of group messaging

{
  "name": string,
  "data": {
    string: string,
    ...
  },
  "notification": {
    object (Notification)
  },
  "android": {
    object (AndroidConfig)
  },
  "webpush": {
    object (WebpushConfig)
  },
  "apns": {
    object (ApnsConfig)
  },
  "fcm_options": {
    object (FcmOptions)
  },

  // Union field target can be only one of the following:
  "token": string,
  "topic": string,
  "condition": string
  // End of list of possible types for union field target.
}

所以回答How should I send the data so that it will work for both web and ionic ?

如下所示

{
  "name": string | key,
  "notification":{
    "title":"Notification Title",
    "body":"Notification Body",
  },
  "android": {
      "notification": {
          "click_action" : "FCM_PLUGIN_ACTIVITY",
      }
   },
  "webpush": {
      "notification": {
          "click_action" : "myweb.com/specific_url",
      }
   },
    
  ...,
  ...,
  ...,
}

For reference documentation.

希望对你有帮助,干杯:)

【讨论】:

  • 嗨,对于 android 和 iphone,它工作正常。但是对于 webpush,浏览器不会打开链接。解决方案是什么?
猜你喜欢
  • 1970-01-01
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 2012-09-24
  • 1970-01-01
  • 2019-02-19
相关资源
最近更新 更多