Firebase推送通知在后台震动

3

我正在使用com.google.firebase:firebase-messaging:10.0.1来开发Android应用程序,并尝试在应用程序处于后台且接收到推送通知时使设备振动。

我向FCM服务器发送以下JSON:

to: 'topics/...',
notification: {
    title: 'New Message',
    body: 'top security body',
    sound: 'mysound',
    action_click: 'top_security'
}

当应用程序处于前台时,将触发FirebaseMessagingServiceonMessageReceived方法,并且我可以添加振动。 但是,当应用程序在后台运行时,onMessageReceived不会被调用,并且我无法控制振动。 我最初的想法是对于背景和前景都使用data块,但是如果没有notification块,iOS客户端在后台不会收到推送。

那么,当应用程序在后台运行时,如何在推送通知中添加振动? 附注:当我在设备上打开振动模式时,推送通知会导致振动而不是播放声音。


因为您需要发送静默通知,请按照这个链接(https://dev59.com/QloU5IYBdhLWcg3wV14Z)操作。 - mahmoud moustafa
请参考我在此链接中的回答:http://stackoverflow.com/a/42505362/1404798 - Thirumalvalavan
@mahmoudmoustafa 我正在使用Android,查看标签。 - IliaEremin
参见此答案和此答案,以及此答案 - Kato
1个回答

2

使用数据有效负载而不是通知有效负载,因为数据有效负载将触发onMessageReceived,即使应用程序在后台或前台。您的请求将如下所示。

data: {
    title: 'New Message',
    body: 'top security body',
    sound: 'mysound',
    action_click: 'top_security'
}

要从onMessageReceived中的data负载中检索数据,请调用remoteMessage.getData();,它将返回一个Map<String,String>类型的结果。

例如:

Map<String, String> data = remoteMessage.getData();
String title = data.get("title");
String body = data.get("body");

然后,您可以使用这些数据自定义通知,以满足您的需求。
希望对您有所帮助 :)

我们同时使用推送通知来支持Android和iOS。如果没有“通知”块,iOS客户端将无法在后台显示推送通知。 - IliaEremin
你也可以将通知和数据两种载荷组合在一个请求中。你尝试过吗?@IlyaEremin - Wilik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接