Android 7.1.1推送通知和FirebaseMessagingService无法正常运行

时间:2018-09-10 01:17:17

标签: android push-notification

我正在开发与FirebaseMessagingService和NotificationCompat一起使用的应用程序。我的目标API是26。我遇到的问题是android 7.1.1中的通知会立即显示并关闭,它们不会保存在通知栏中。但是,在Android 7.0中它可以完美运行。我看到了许多教程,并且所有这些教程都执行与我相同的操作。我想知道我可能会缺少什么。

我的服务

public class MyFirebaseMessagingService extends FirebaseMessagingService {

public void onMessageReceived(RemoteMessage remoteMessage) {

    Log.d(TAG, "From: " + remoteMessage.getFrom());

    Map data = remoteMessage.getData();

    if (SinchHelpers.isSinchPushPayload(data)) {
        //comentario                
    } else {            
        if (remoteMessage.getData().size() > 0) {
            Log.d(TAG, "Message data payload => " + remoteMessage.getData());
            Map<String, String> params = remoteMessage.getData();
            JSONObject object = new JSONObject(params);
            try {
                sendNotification(object.get("message").toString(), object.get("chatId").toString(), object.get("user").toString());
                if (/* Check if data needs to be processed by long running job */ true) {
                    // For long-running tasks (10 seconds or more) use Firebase Job Dispatcher.
                    scheduleJob();
                } else {
                    // Handle message within 10 seconds
                    handleNow();
                }
            } catch (JSONException e) {
                e.printStackTrace();
                Log.d(TAG, "JSONException => " + e.getMessage());
            }

        }

        // Check if message contains a notification payload.
        if (remoteMessage.getNotification() != null) {
            Log.d(TAG, "Message Notification Body => " + remoteMessage.getNotification().getBody());
        }

    }
}

}

private void sendNotification(String messageBody, String chatId, String userName) {
    try {
        Intent intent = new Intent(this, ChatActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.putExtra("EXTRA_CHAT_ID", chatId);
        intent.putExtra("EXTRA_USER", userName);

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

        String channelId = "fcm_default_channel";
        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, channelId)
                        .setSmallIcon(R.mipmap.ic_launcher_foreground)
                        .setContentTitle(userName)
                        .setContentText(messageBody)
                        .setAutoCancel(true)
                        .setGroup(userName)
                        .setSound(defaultSoundUri)
                        .setPriority(NotificationCompat.PRIORITY_MAX)
                        .setContentIntent(pendingIntent);

        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        // Since android Oreo notification channel is needed.
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = new NotificationChannel(channelId,
                    "Channel human readable title",
                    NotificationManager.IMPORTANCE_HIGH);
            notificationManager.createNotificationChannel(channel);
        }

        notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
    } catch (Exception e) {
        Log.e(TAG, "userName => " + userName + " => " + e.getMessage());
    }
}

1 个答案:

答案 0 :(得分:0)

通知频道:Android 8.0引入了通知频道,可让您为要显示的每种通知类型创建用户可定制的频道。

请看看documentation.

构建一个notification.