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

我在android中的自定义通知中有问题

薛宜
2023-03-14

这是我的 Firebase 消息服务代码文件。我的服务未被调用。

public class NotificationService extends FirebaseMessagingService {
    String myTitle, myImage;
    
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {

        myTitle = remoteMessage.getData().get("title");
        myImage = remoteMessage.getData().get("body");
        Log.d("Service","Hi this is service");
        //bitmap = getBitmapfromUrl(myImage);
        //Toast.makeText(this,"Hi test",Toast.LENGTH_SHORT).show();
        showNotification(myTitle,myImage);
    }

    

    private void showNotification(String myTitle,String myImage) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.putExtra("Notification_Title", "yes");
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        //Toast.makeText(this,title,Toast.LENGTH_SHORT).show();
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
                PendingIntent.FLAG_ONE_SHOT);
        String channelId = "Custom_Notification";
        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder =
                new NotificationCompat.Builder(this, channelId)
                        .setSmallIcon(R.drawable.ic_notifications_none_white_24dp)
                        .setContentTitle(myTitle)
                        .setContentText(myImage)
                        .setSound(defaultSoundUri)
                        .setContentIntent(pendingIntent);
        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = new NotificationChannel(channelId,
                    "Custom Notification",
                    NotificationManager.IMPORTANCE_HIGH);
            notificationManager.createNotificationChannel(channel);
        }
        notificationManager.notify(0, notificationBuilder.build());
    }
}

共有1个答案

陆臻
2023-03-14

如果您没有收到任何远程消息或您的服务不工作,请查看 堆栈溢出 链接。

创建自定义通知频道

private void showNotification(String myTitle,String myImage) {
      Intent intent = new Intent(this, MainActivity.class);
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      intent.putExtra("Notification_Title", "yes");

      PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
        PendingIntent.FLAG_ONE_SHOT);

      String channelId = "Custom_Notification";
      Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
      NotificationCompat.Builder notificationBuilder =
      new NotificationCompat.Builder(this, channelId)
                .setSmallIcon(R.drawable.ic_notifications_none_white_24dp)
                .setContentTitle(myTitle)
                .setContentText(myImage)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent)
                .setDefaults(NotificationCompat.DEFAULT_ALL)
                .setAutoCancel(true)
                .setPriority(NotificationCompat.PRIORITY_HIGH);
NotificationManager notificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationChannel channel = new NotificationChannel(channelId,
            "Custom Notification",
            NotificationManager.IMPORTANCE_HIGH);
    notificationManager.createNotificationChannel(channel);
}
notificationManager.notify(0, notificationBuilder.build());      }     

收到远程消息后,上述代码工作正常。如果要添加任何自定义布局,请使用以下代码

    // Get the layouts to use in the custom notification
    RemoteViews notificationLayout = new RemoteViews(getPackageName(),           R.layout.notification_small);
     RemoteViews notificationLayoutExpanded = new RemoteViews(getPackageName(), R.layout.notification_large);

    // Apply the layouts to the notification
     Notification customNotification = new NotificationCompat.Builder(context, CHANNEL_ID)
            .setSmallIcon(R.drawable.notification_icon)
            .setStyle(new NotificationCompat.DecoratedCustomViewStyle())
            .setCustomContentView(notificationLayout)
            .setCustomBigContentView(notificationLayoutExpanded)
            .build();

通知自定义布局

注意:在android 10和以上的通知服务是不调用基本上在后台。你会收到通知,但自定义设计它不会反映。尽管如此,如果你想在后台接收通知也。然后听广播接收器的Firebase消息事件。那时候你必须唤醒你的应用程序到前台。

 类似资料:
  • 行中有错误: 错误:

  • 我试图自定义一个引发的异常,但它不在建议控件中。 2021-09-28 10:13:38.729错误25385---[nio-8080-exec-2]O.A.C.C.C.[.[.[/].[dispatcherServlet]:servlet.Service()对于路径[]上下文中的servlet[dispatcherServlet]抛出异常com.auth0.jwt.exceptions.Toke

  • 在自定义arrayAdapter中实现自定义getFilter时遇到问题。实际上,我不知道如何实现它。尝试了各种代码,但仍然没有成功。这是我的自定义阵列适配器。 这是ListTO课程。 这是布局图。 这里的搜索关键字来自“inputSearch”编辑文本。 这是文本更改的侦听器。 谢谢

  • 我正在从Firebase向我的Android应用程序发送推送通知,但它仅在收到通知时播放默认声音。 我在fcm通知对象中设置了自定义声音参数{“sound”:“notificationsound.mp3”},该文件根据(https://firebase.google.com/docs/cloud-messaging/http-server-ref)但它仍然在所有应用程序状态(背景、前景和终止)上播

  • 问题内容: 在Objective-C中,自定义通知只是一个普通的NSString,但是在Swift 3的WWDC版本中并不明显。 问题答案: 您也可以为此使用协议 然后将您的通知名称定义为所需的任何位置。例如: 并像这样使用 这样,通知名称将与基金会分离。而且您只需要修改协议,以防更改实现。

  • 我做了,有一个按钮,我想在通知和按钮点击上执行两个不同的