Android推送通知,当应用程序关闭时我会得到不同的风格

Posted

技术标签:

【中文标题】Android推送通知,当应用程序关闭时我会得到不同的风格【英文标题】:Android Push Notification, when app is closed I get a different style 【发布时间】:2017-06-27 10:36:40 【问题描述】:

我正在使用 FCM 进行通知,一切正常,但在应用程序打开之前,一旦我杀死(关闭)应用程序或在后台,我会收到默认样式的通知,谁能帮我设置此通知应用关闭时的样式(或任何其他建议)。 请帮我解决这个问题,提前谢谢您

这是我的代码

 @Override
public void onMessageReceived(RemoteMessage remoteMessage) 


    String title = "";
    if (remoteMessage.getNotification().getTitle() != null)
        title = remoteMessage.getNotification().getTitle();
    

    String message = "";
    if (remoteMessage.getNotification().getBody() != null)
        message = remoteMessage.getNotification().getBody();
    

    Log.e("notification","recieved");


    sendNotification(title, message);





private void sendNotification(String title, String message) 

    Intent intent = new Intent(this, MainActivity2.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0/*Request code*/, intent, PendingIntent.FLAG_ONE_SHOT);
    Uri notificationSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

    int color=getResources().getColor(R.color.dot_dark_screen2);

    NotificationCompat.Builder notifiBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.mipmap.account_outline)
            .setColor(color)
            .setDefaults(Notification.DEFAULT_SOUND)
            .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
            .setContentTitle(title)
            .setContentText(message)
            .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
            .setAutoCancel(true)
            .setSound(notificationSound)
            .setContentIntent(pendingIntent);


    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0 /*ID of notification*/, notifiBuilder.build());

【问题讨论】:

这个设备操作系统的版本是什么。 我的是安卓棒棒糖5.1 您也可以分享您的通知代码部分。至少您的通知的最少代码可能有助于分析这种情况。 对不起,我忘了,现在我也更新了我的代码...... 显然是因为你的方法显示了一个,第二个是从使用不同代码创建通知的 gms/firebase 库中显示的 【参考方案1】:

我已经在这里发布了很长的解释: android notification icon issue

TL;DR:

您的问题很可能是 notification-messagesdata-messages 之间的区别。

请阅读:https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages

当您希望 FCM 处理显示 代表您的客户端应用程序通知。当您使用数据消息时 想要在您的客户端应用程序上处理消息。

【讨论】:

当应用程序在后台或关闭时,是否有可能从后台服务保持 onMessageReceiver 运行? 我不明白你的评论。你能澄清一下吗?如果您想要让应用程序在后台运行(因为您需要下载文件,或者您需要做其他事情),您需要使用服务并从 onMessageReceived() 调用 startService 是的,使用 onMessageReceived() 调用 startService,所以当我发送 Firebase 消息时,通知会以设置样式显示。 (不是默认系统托盘一) ?? startService 与通知样式没有任何关系。请阅读我的回答并再次发表评论。

以上是关于Android推送通知,当应用程序关闭时我会得到不同的风格的主要内容,如果未能解决你的问题,请参考以下文章

如果用户不接受,也使用推送通知

即使App已关闭,也会收到Android推送通知

应用程序关闭或最小化时Android中的白色通知

Android:在应用程序关闭时从后台推送动态通知

当应用程序被杀死Android时无法接收解析推送通知

应用程序完全关闭时不出现 Android 推送通知(使用 node-gcm)