我如何阻止从Android显示的FCM(Firebase Cloud Messing)接收消息



我编写了一个程序,该程序从firebase接收消息,直到程序运行,消息是由" Firebasemessagingservice"接收的消息,并且不会由Android生成通知,并且消息的管理不执行。我写的程序。

[Service]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
class MyFirebaseMessagingService : FirebaseMessagingService
{
    public override void OnMessageReceived(RemoteMessage message)
    {
    }
}

但是,当该程序关闭时," WawdfulBroadCastreceiver"收到了消息,但是Android也会创建通知,该通知向用户显示了收到的消息。

    [BroadcastReceiver(Enabled = true, Permission = "com.google.android.c2dm.permission.SEND")]
[IntentFilter(new[] { "com.google.android.c2dm.intent.RECEIVE" }, Categories = new string[] { "XamarinAppFCM.XamarinAppFCM" })]
public class BackgroundBroadcastReciever : Android.Support.V4.Content.WakefulBroadcastReceiver
{
    public override void OnReceive(Context context, Intent intent)
    {
        var service = new Intent(context, typeof(MyService));
        var title = intent.GetStringExtra("gcm.notification.title");
        var message = intent.GetStringExtra("gcm.notification.body");
        service.PutExtra("title", title);
        service.PutExtra("message", message);
        StartWakefulService(context, service);
    }
}
[Service]
public class MyService : IntentService
{
    public MyService() : base("MyService")
    {
    }
    protected override void OnHandleIntent(Intent intent)
    {
        BackgroundBroadcastReciever.CompleteWakefulIntent(intent);
    }

我希望用户不会生成和看不到此消息,并且可以通过我编写的程序管理消息的显示。有时,发送消息的目的是执行程序命令来执行下载和上传信息之类的事情。因此,用户看不到消息。请帮助我。

有两种类型的消息传递:

  1. 通知消息
  2. 数据消息

通知消息是由您的应用程序处于活动状态时处理的,但是当您的应用程序不活动时,它们会由系统处理。相反:数据消息始终由您的应用程序处理。

因此,为了确保它始终是您的代码处理消息,请发送数据消息(没有notification属性(。

还请参见Firebase文档中消息类型的部分。

只需发送数据消息即可防止Firebase客户处理FCM消息。如果FCM消息包含通知,则Firebase客户端对其进行处理并在通知栏中显示通知。

这是您需要在程序中构建数据消息的方式,该消息将FCM消息发送到FCM服务器以交付给Android客户端。

JsonElement dealsJson = getDealInJsonFormat();
JsonObject jsonObj = new JsonObject();
jsonObj.addProperty("topic", "deals");
jsonObj.add("data", dealsJson);
JsonObject msgObj = new JsonObject();
msgObj.add("message", jsonObj);
log.info("json  message "+msgObj.toString());
return msgObj.toString();

有关完整的示例,您可以检查http://www.zoftino.com/android-notification-data-messages-from-app-server-server-using-firebase-clous-cloud-cloud-messaging

相关内容

  • 没有找到相关文章

最新更新