【问题标题】:Push notification not displayed when app is closed in android [duplicate]在android中关闭应用程序时不显示推送通知[重复]
【发布时间】:2018-03-21 06:20:31
【问题描述】:

我有两个设备。一个正在运行 API 26,另一个是 API 21。我正在使用 Google 的 firebase 进行通知。除非我先打开应用程序,否则 API 26 设备不会收到推送通知。然后它接收一切正常。我不必先打开应用程序即可在 API 27 设备上接收推送通知。即使不打开应用程序,关于如何始终接收推送的任何想法?我希望用户只需打开手机即可收到通知。

private void sendNotification(String title, String messageBody, String clickAction) {

    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    String id = "";
    if (Build.VERSION.SDK_INT >= 26) {
        id = "my_channel_01";
        // The user-visible name of the channel.
        CharSequence name = "myChannel";
        // The user-visible description of the channel.
        String description = "";
        int importance = NotificationManager.IMPORTANCE_HIGH;
        NotificationChannel mChannel = new NotificationChannel(id, name,importance);
        // Configure the notification channel.
        mChannel.setDescription(description);
        mChannel.enableLights(true);
        // Sets the notification light color for notifications posted to this
        // channel, if the device supports this feature.
        mChannel.setLightColor(Color.RED);
        mChannel.enableVibration(true);
        mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
        notificationManager.createNotificationChannel(mChannel);
    }


    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
            PendingIntent.FLAG_ONE_SHOT);

    String channelId = getString(R.string.default_notification_channel_id);
    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder =
            new NotificationCompat.Builder(this, id)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle(title)
                    .setContentText(messageBody)
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setContentIntent(pendingIntent);


    notificationManager.notify(1 /* ID of notification */, notificationBuilder.build());


}

【问题讨论】:

  • 你是如何从 firebase 发送通知的?是来自控制台还是 API?
  • 我使用 api 使用 post 请求发送它

标签: android firebase push-notification android-8.0-oreo


【解决方案1】:

在 Manifest 文件中添加 BootBroadcastReceiver

<receiver
            android:name=".OnBootBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
</receiver>

创建以下 Java 文件。在其中调用 FirebaseMessagingReceiveService。

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class OnBootBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent("com.demo.FirebaseMessagingReceiveService");
        i.setClass(context, FirebaseMessagingReceiveService.class);
        context.startService(i);
    }
}

【讨论】:

  • 你好天才。谢谢!不知道为什么这没有包含在任何有关 FireBase 消息传递的教程中。
  • 适用于 Android Lollipop 6.0 中的 android API 27 不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多