当应用程序处于前台(在屏幕上可见)/后台(最小化应用程序)时,将调用 OnMessageReceived 函数并按预期显示通知消息。当我滑动应用程序或单击全部关闭时,我没有收到通知消息,而如果我也关闭,我会收到其他商业应用程序的通知..我正在使用仅数据消息
我正在使用 nuget Xamarin.Firebase.Messaging ,
Android 清单
<application android:label="MyTestingApp" android:theme="@style/MainTheme">
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
MyMessagingService 扩展 FirebaseMessagingService
[Service(Exported = false, Enabled = true, DirectBootAware =true)]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
[IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
public class MyMessagingService : FirebaseMessagingService{
}
MainActivity--> OnStart()
const int requestLocationId = 0;
string[] notiPermission =
{
Manifest.Permission.PostNotifications
};
string[] wakePermission =
{
Manifest.Permission.WakeLock
};
if ((int)Build.VERSION.SdkInt < 33) return;
if (activity.CheckSelfPermission(Manifest.Permission.PostNotifications) != Permission.Granted)
{
activity.RequestPermissions(notiPermission, requestLocationId);
activity.RequestPermissions(wakePermission, requestLocationId);
}
我已经使用 Sigin Identity 创建了 apk 文件并安装在 Samsung S23 中。使用邮递员通过 API 调用(旧版)进行测试。我收到成功响应,但应用程序没有显示任何内容。打开应用程序后也没有收到任何通知消息。
邮差人体
{
"to": "dpm-g36NSEaC5XFadT3ZnY:APA91bEIarlCxz6UEpyY7CYeBsnCSBpXApW6gHEOiVrvk0URkRP4FCqAHmApPFH4KQLDMfYhkkOTTUZ7ZEsRlyKzCPPS9CuLtet9pXi8_DUflE6h_g-iqtD_9DcVQ4amyb1CCfW05vN2",
"CollapseKey": "1",
"data": {
"body": "Hello,Good Morning! . Have a gr8 day ahead! message_web",
"title": "Good Morning!)",
"image": "https://images.pexels.com/photos/2055100/pexels-photo-2055100.jpeg",
"notificationSmallIcon": "macrokiosk.boldwallet.drawable.logo",
"notificationSmallIconColor": "#00ff00",
"notificationLargeIcon" : "https://media.istockphoto.com/id/1352603244/photo/shot-of-an-unrecognizable-businessman-working-on-his-laptop-in-the-office.jpg?s=1024x1024&w=is&k=20&c=mTABddPRSU1r_hCBpknMjJbCIrJAicjjXGSU42rx-YI=",
"click_action": "web",
"actionResult": "https://google.com/"
}
}
其他信息
Google Play 服务版本
118.2.0.5
依赖项/包
Xamarin.AndroidX.Core 1.12.0.4
Xamarin.AndroidX.Lifecycle.Common 2.7.0.1
Xamarin.Essentials 1.7.3
Xamarin.CommunityToolkit 2.0.2
Xamarin.Firebase.Messaging 123.3.1.1
Xamarin.Forms 5.0.0.2478
Xamarin.GooglePlayServices.Base 118.0.1
解决方案:当我们滑动应用程序关闭时需要收到通知
您可以尝试在通知请求中包含
"priority": "high"
字段。
{
"to": "dpm-g36NSEaC5XFadT3ZnY:APA91bEIarlCxz6UEpyY7CYeBsnCSBpXApW6gHEOiVrvk0URkRP4FCqAHmApPFH4KQLDMfYhkkOTTUZ7ZEsRlyKzCPPS9CuLtet9pXi8_DUflE6h_g-iqtD_9DcVQ4amyb1CCfW05vN2",
"CollapseKey": "1",
"data": {
"body": "Hello,Good Morning! . Have a gr8 day ahead! message_web",
"title": "Good Morning!)",
"image": "https://images.pexels.com/photos/2055100/pexels-photo-2055100.jpeg",
"notificationSmallIcon": "macrokiosk.boldwallet.drawable.logo",
"notificationSmallIconColor": "#00ff00",
"notificationLargeIcon" : "https://media.istockphoto.com/id/1352603244/photo/shot-of-an-unrecognizable-businessman-working-on-his-laptop-in-the-office.jpg?s=1024x1024&w=is&k=20&c=mTABddPRSU1r_hCBpknMjJbCIrJAicjjXGSU42rx-YI=",
"click_action": "web",
"actionResult": "https://google.com/"
},
"priority": "high"
}