我正在使用最新版本的Ionic 3创建移动应用程序。我正处于需要实现推送通知的位置。我正在使用FCM。我已经设法使用此插件为Android手机完成了它:https://github.com/phonegap/phonegap-plugin-push。阅读此插件的文档,它说对于Android我应该只发送数据消息,这是最好的做法。它还说发送通知和数据有效负载将无法正常工作:
当您的应用处于前台时,您已注册的任何('通知')处理程序将被调用。如果您的应用位于后台,则通知将显示在系统托盘中。单击系统托盘中的通知将启动应用程序,并且不会调用您的on('notification')处理程序,因为具有通知有效负载的消息不会导致调用插件onMessageReceived方法。
但对于IOS,我需要发送带有数据有效负载的通知消息。如果我直接定位设备,这不会是一个问题,但我需要发送主题消息。所以我看到的方式是在我的服务器上我需要实现这个逻辑:
假设主题的名称为FOOD-AND-DRINKS
:
function onSomeEvent($data) {
// send push notification to topic ANDROID~FOOD-AND-DRIKS
// send push notification to topic IOS~FOOD-AND-DRINKS
}
此外,由于将来我的计划将包括多个城市,并非所有人都希望收听该人所居住的城市的通知,因此我的主题将是PLATFORM~CITY~CATEGORY
。
所以我的问题是,有没有更好的插件来处理通知,或者我的服务器和谷歌FCM之间的某些服务,该服务会处理这个,或者这是我提出的相当不错?
答案 0 :(得分:0)
您可以使用云功能发送通知,因为您还使用FCM
。
有关此内容的更多信息:https://firebase.google.com/docs/functions/
Firebase的云端功能可让您自动运行后端代码,以响应Firebase功能和HTTPS请求触发的事件。您的代码存储在Google的云中,并在托管环境中运行。无需管理和扩展自己的服务器。
使用云功能,您可以使用onWrite()
之类的数据库触发器,如果您有数据有效负载和/或通知,它将能够发送通知。
但是如果你单独使用数据负载,那么你也可以发送android设备也在后台。
关于主题:
如果您的应用程序中有多个城市,则可以让用户注册每个主题。你可以在数据库中这样做:
city-category
id_here
cityname: nameX
//other details
id_here1
cityname: nameY
//other details