当前位置: 首页 > 知识库问答 >
问题:

Android中关闭app不显示推送通知“重复”

郗唯
2023-03-14

我有两个装置。一个是运行API26,另一个是API21。我正在使用Googles firebase进行通知。API26设备不会收到推送通知,除非我先打开应用程序。然后它接收一切都很好。我不需要首先打开应用程序来接收API27设备上的推送通知。有什么想法,如何总是收到推送,即使没有打开应用程序?我希望通知到达用户只需打开他们的电话。

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());


}

共有1个答案

冯渝
2023-03-14

在清单文件中添加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);
    }
}
 类似资料:
  • 我的应用程序生成了一个通知,但我为该通知设置的图标没有显示。取而代之的是一个白色的方块。 我试过调整图标的png大小(尺寸720x720,66x66,44x44,22x22)。奇怪的是,当使用较小的尺寸时,白色的正方形更小。 我搜索了这个问题,以及生成通知的正确方法,从我读到的代码来看,应该是正确的。不幸的是,事情并不像他们应该的那样。

  • 我正在使用React Native推送通知(本地通知)[https://github.com/zo0r/react-native-push-notification]。 显示通知的逻辑如下所示。 我在react native中使用了“onSnapshot”函数来检查firestore数据是否更改。 如果更改,我在应用程序中显示本地通知。 当应用程序在前台或后台时,它运行良好。(Android和iO

  • 根据Firebase文档: 我的问题是,当应用程序在后台时,通知系统不显示通知。 我没有使用Firebase控制台,因为我无法将数据添加到通知负载中。所以我使用了RESTful客户机API,但还是同样的问题。 请求:

  • 这是舱单 这是我的注册令牌类 这是我的Firebase服务类

  • 我今天一直在谷歌上搜索,但什么也找不到。我的场景如下: 我有一个Android应用程序可以自动回复收到的消息。我有下面的代码来创建一个持久的(不可刷的)通知,然后当应用程序通过onDestroy被销毁时,通知被移除。然而,当我打开recents面板并将我的应用程序扫走时,应用程序会停止自动回复服务,广播接收器也会停止,但onDestroy没有被调用,通知仍然可见。 我想简单地销毁通知,如果应用程序

  • 如果应用程序关闭,我将如何使其发送通知?我正在制作一个从web服务器读取数据的应用程序,只有当该应用程序关闭且web服务器上的值更改时,我才需要向用户发送通知。