这是我的有效载荷。当我发送它时,我可以收到通知,但是 click_action 被忽略并启动启动器活动。但是,当我将" click_action"放置时,在通知块中工作。为什么 Android Block 被忽略了?
{
"to": "my tocken",
"data": {
"url": "dfhdfh",
"action": "fhdfg",
},
"notification": {
"title": "dfgsdfg",
"body": "dfgdg"
},
"android": {
"notification": {
"click_action": "NOTIFICATION_ACTIVITY"
}
}
}
firebase推送通知中有三种类型的消息
- 通知消息
- 数据消息
- 带有通知和数据有效载荷的消息
和在Android方面的这些类型的访问级别彼此不同,因此您需要了解,在实现后端和Android侧的推送通知之前,您需要了解这一点
您可以通过阅读此博客https://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-cloud-messaging-messaging-gcm-php-and-mysql/
我认为您应该仅发送数据消息,然后在FirebaseMessagingService
的onMessageReceived
中,您可以生成自定义通知并从RemoteMessage
对象中检索数据。
public class CloudMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage){
//Extract data from remote message
//trigger notification
}
}
在数据对象下,您可以拥有多个键值对,用于通知和您要执行的所有其他操作。
还将CloudMessagingService
声明为AndroidManifest.xml
中的intent-filter
的服务为
<service android:name=".fcm.CloudMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>