Android推送通知消失

时间:2016-12-10 05:53:33

标签: android notifications

我想显示FCM消息的通知。应用程序运行时通知显示正常,但如果应用程序未运行,通知会暂时显示并消失,即使用户未单击它也会消失。

我希望我的通知在用户点击时消失。 我正在谷歌搜索并尝试使用此标志来通知我:

defaults = defaults | Notification.FLAG_NO_CLEAR;
defaults = defaults | Notification.FLAG_ONGOING_EVENT;

但这无济于事,这是我的代码:

    public static void showNotification(Context mContext, Intent resultIntent, String title, String text, String subtext) {
    PendingIntent resultPendingIntent = PendingIntent.getActivity(mContext, 0,
            resultIntent, PendingIntent.FLAG_ONE_SHOT);
    NotificationCompat.Builder mNotifyBuilder;
    NotificationManager mNotificationManager;
    mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);

    mNotifyBuilder = new NotificationCompat.Builder(mContext)
            .setContentTitle(title)
            .setContentText(text)
            .setTicker(title+" | "+text)
            .setPriority(Notification.PRIORITY_HIGH)
            .setShowWhen(true)
            .setSubText(subtext)
            .setSmallIcon(R.mipmap.ic_launcher);

    mNotifyBuilder.setContentIntent(resultPendingIntent);
    int defaults = 0;
    defaults = defaults | Notification.FLAG_SHOW_LIGHTS;
    defaults = defaults | Notification.DEFAULT_VIBRATE;
    defaults = defaults | Notification.DEFAULT_SOUND;
    defaults = defaults | Notification.FLAG_NO_CLEAR;
    defaults = defaults | Notification.FLAG_ONGOING_EVENT;
    mNotifyBuilder.setDefaults(defaults);
    mNotifyBuilder.setAutoCancel(true);
    mNotificationManager.notify(0, mNotifyBuilder.build());
}

请帮帮我。

2 个答案:

答案 0 :(得分:0)

我认为你的问题就在这里

<强> PendingIntent.FLAG_ONE_SHOT

正如此标志的官方文件所述

  

表示此PendingIntent只能使用一次的标志。        用于{@link #getActivity},{@ link #getBroadcast}和        {@link #getService}。

如果设置,之后        {@link #send()}被调用,它将自动进行        已取消,未来任何通过它发送的尝试都将失败。

所以尝试替换这个

PendingIntent resultPendingIntent = PendingIntent.getActivity(mContext, 0,
        resultIntent, PendingIntent.FLAG_ONE_SHOT);

以下内容:

PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, resultIntent, 0);

不要在未决意图中传递任何标记

答案 1 :(得分:0)

请参阅this回答。如果您通过USB连接,servlet可能会在您在手机上看到之前抓取推送通知。