欠伸展肢体,吟咏心自愉。这篇文章主要讲述对于Xamarin Android,我无法处理点击事件的后台通知相关的知识,希望能为你提供帮助。
我尝试使用Xamarin表单创建应用程序,可以在android上接收前景和背景通知。对于前景,它工作正常。我创建firebase服务来处理前台通知。但是,我找不到让背景通知工作的方法。
首先,我尝试更新清单以支持此事件。
文章图片
其次,我在splashactivity中添加了一些代码来处理后台通知。
文章图片
接下来,我使用以下php代码向Firebase server.
文章图片
发送通知
在我的设备上,我可以看到上面的通知.
文章图片
我点按通知即可打开我的应用。然而,没有任何事情发生,设备日志也没有让我知道发生了什么。
【对于Xamarin Android,我无法处理点击事件的后台通知】
文章图片
我的代码中有不正确的内容吗?
谢谢,
答案摘自Firebase文档:
在后台应用程序中处理通知消息当您的应用程序在后台时,Android会将通知消息定向到系统托盘。用户点按通知会默认打开应用启动器。这包括包含通知和数据有效负载的消息(以及从Notifications控制台发送的所有消息)。在这些情况下,通知将传递到设备的系统托盘,并且数据有效负载将在启动器活动的附加内容中传递。我能够通过使用FCM有效负载发送自定义数据然后在MainActivity OnCreate()方法中解决此问题:
var someValue = https://www.songbingjia.com/android/Intent.GetStringExtra("YourKey");
// if result not null then handle how you like...
就我而言,我想将用户重定向到通知所针对的视图。
Update:还有一种方法可以解决这个问题。
覆盖OnMessageReceived方法......
[Service]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
public class MyFirebaseMessagingService : FirebaseMessagingService
{
public override void OnMessageReceived(RemoteMessage message)
{
SendNotification(message?.Data);
}void SendNotification(IDictionary<
string, string>
data)
{
// handle your data that got passed
}
}
而不是在你的例子中这样做:
{
"noticiation" : {
"title" : "Test 456",
"text" : "Otra 123123"
}
}
传递数据:
{
"data" : {
"title" : "Test 456",
"text" : "Otra 123123"
}
}
现在,当您的应用程序位于后台和前台时,将调用OnMessageReceived。
请注意,此方法意味着您无法使用Firebase中的控制台发送消息,因为据我所知,它在有效负载中包含“通知”。
推荐阅读
- Android Oreo中的通知被延迟
- 有没有办法从桌面/服务器盒发送WhatsApp消息()
- Android Studio(带有ARGB的通知LED上的自定义颜色不起作用)
- Xamarin Android - 自定义通知托盘图标(状态栏)
- 所有移动设备制造商的启动器图标上的Android徽章编号
- android firebase通知不起作用
- Onesignal通知显示在OneSignal仪表板上,但未在通知栏中显示(android)
- Android - 构建通知,TaskStackBuilder.addParentStack不能正常工作
- 三星Android 7中未显示通知图标