0

在正常情况下,应用程序处于活动状态,我收到通知并显示它。

{
    "to" : "xxxx",
     "notification": {
    "body": "Hello",
    "title" : "Hello world notification"
  },
    "data" : {
        "data1" : "dddddd",
    "data2" : "mmm"
    }
}

 <service
            android:name=".notifications.MyFirebaseMessagingService"
            android:directBootAware="true"
            android:exported="false"
            android:enabled="true"
            android:stopWithTask="false"
            >
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </service>

几天以来,我搜索了一个解决方案,以在我的应用程序不存在时接收通知 FCM。

我尝试在 FirebaseMessagingService / stopWithTask 创建其他服务来管理 FirebaseMessagingService 等。

但我没有找到好的方法和好的做法和技术解决方案。

最后,如果应用程序不存在,则无法接收通知?

当用户滑动时,将应用程序保持在后台而不是真正杀死应用程序的好方法是什么?

(我使用 API 29)

4

2 回答 2

0

在您的 Manifest 文件中添加此代码 OnMessageRecive 如果 App 是后台,则不会调用 请参阅此文档

https://firebase.google.com/docs/cloud-messaging/android/topic-messaging

<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/ic_stat_ic_notification" />
于 2021-03-09T06:54:09.683 回答
0

仅供参考,当应用程序处于后台或被杀死时,不会调用此方法,因为当应用程序处于后台或被杀死时,通知由设备操作系统处理。

因此,如果您不希望设备操作系统处理通知,并且希望即使在后台和终止状态下也能执行此方法,请按照以下步骤操作:

  1. 首先,通过删除所有不需要的代码来制作这样的 FCM 服务

         <service android:name=".push.MyFirebaseMessagingService">
    
             <intent-filter>
                 <action android:name="com.google.firebase.MESSAGING_EVENT" />
             </intent-filter>
    
         </service>
    
  2. 重要的是,通过删除通知对象以使 OnReceivedMethod 工作,像这样在 fcm json 有效负载中进行更改。

    {“to”:“xxxx”,“data”:{“bodyText”:“Hello”,“titleText”:“Hello world 通知”,“data1”:“dddddd”,“data2”:“mmm”,}}

于 2021-03-09T07:06:41.370 回答