Звук / вибрация от Firebase при работе в фоновом режиме с Android Oreo - PullRequest
0 голосов
/ 16 октября 2018

Я не могу получить звук или вибрацию, когда приложение в фоновом режиме с Android Oreo.С приложением на переднем плане звук и вибрация работают нормально.

С предыдущими версиями андроида и без Nofication Channel все работало нормально, но сейчас я не нахожу способ сделать это.

Это мойкод:

private void showNotification(String title, String body) {

    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    String NOTIFICATION_CHANNEL_ID = "com.example.name.notification.test";

    Uri sound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getPackageName() + "/" + R.raw.my_sound);

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "Notification", NotificationManager.IMPORTANCE_MAX);

        AudioAttributes audioAttributes = new AudioAttributes.Builder()
                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
                .build();

        notificationChannel.setDescription("EDMT Channel");
        notificationChannel.enableLights(true);
        notificationChannel.setLightColor(Color.BLUE);
        notificationChannel.enableVibration(true);
        notificationChannel.setVibrationPattern(new long[]{0,1000,500,1000});           
        notificationChannel.setSound(sound, audioAttributes); // This is IMPORTANT            
        notificationManager.createNotificationChannel(notificationChannel);

    }

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder( this,NOTIFICATION_CHANNEL_ID);

    notificationBuilder.setAutoCancel(true)
            .setDefaults(Notification.DEFAULT_ALL)
            .setWhen(System.currentTimeMillis())
            .setSmallIcon(R.drawable.ic_notification)
            .setContentTitle(title)
            .setContentText(body)
            .setContentInfo("Info");

    notificationManager.notify(new Random().nextInt(),notificationBuilder.build());

}

1 Ответ

0 голосов
/ 16 октября 2018

Я нашел это в документации.Может быть, это поможет вам:

  • На Android 8.0 (уровень API 26) и выше, важность уведомления определяется важностью канала уведомлениябыл размещен на.Пользователи могут изменить важность канала уведомлений в настройках системы (рисунок 12).В Android 7.1 (уровень API 25) и ниже важность каждого уведомления определяется приоритетом уведомления.

  • Android O вводит каналы уведомлений для создания единой системычтобы помочь пользователям управлять уведомлениями.Когда вы нацелены на Android O, вы должны внедрить один или несколько каналов уведомлений для отображения уведомлений вашим пользователям.Если вы не настроили таргетинг на Android O, ваши приложения будут работать так же, как на Android 7.0, при работе на устройствах Android O.

1 .Отдельные уведомления теперь должны быть размещены в определенном канале.

2 .Теперь пользователи могут отключать уведомления для каждого канала вместо отключения всех уведомлений из приложения.

3 .Приложения с активными уведомлениями отображают значок «значок» в верхней части значка приложения на экране домашней страницы / панели запуска.

4 .Теперь пользователи могут отложить уведомление из ящика.Вы можете установить автоматический тайм-аут для уведомления.

5 .Некоторые API, касающиеся поведения уведомлений, были перемещены из NotificationChannel.Например, используйте NotificationChannel.setImportance () вместо NotificationCompat.Builder.setPriority () для Android 8.0 и выше.

...