在android中关闭应用程序时不会显示推送通知
问题描述:
我有两个设备。一个是运行API 26,另一个是API 21.我正在使用Google的firebase进行通知。除非我先打开应用程序,否则API 26设备不会收到推送通知。然后它收到一切正常。我不必先打开应用程序以接收API 27设备上的推送通知。任何想法,即使不打开应用程序,如何始终接受推送?我希望只需打开手机即可通知用户。在android中关闭应用程序时不会显示推送通知
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());
}
答
添加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);
}
}
+0
Hello Genius。谢谢!不确定为什么这不包含在任何有关FireBase消息的教程中。 – RobOhRob
你是如何从firebase发送通知的?它来自控制台还是API? – zihadrizkyef
我使用api发送邮件请求 – RobOhRob