React Native Firebase: нет собственного звука, нет вибрации

Я пытаюсь реализовать функцию, когда приходит уведомление, телефон должен вибрировать и воспроизводить какой-то звонкий звук.

Как бы то ни было, я мог воспроизводить только звук уведомления по умолчанию на телефоне.

Версии, которые я использую:

    "react": "16.6.0-alpha.8af6728",
    "react-native": "0.57.8",
    "react-native-firebase": "^5.2.1",

Код:

Сначала я создаю канал

        const channel = new firebase.notifications.Android.Channel(
                'my_channel_id', 
                'My channel', 
                firebase.notifications.Android.Importance.Max
            )
            .setDescription('My Notif')
            .setSound("mysound.mp3")
      .setVibrationPattern([400, 800, 600, 800, 800, 800, 1000]) 
            .setLockScreenVisibility(firebase.notifications.Android.Visibility.Public)

        this.channel.enableVibration(true);

        firebase.notifications().android.createChannel(channel);

Затем я создаю уведомление

const notification = new firebase.notifications.Notification()
                .setNotificationId('notificationId')
                .setTitle('Some notification')
                .setBody('Some body')

                notification.android.setSmallIcon('ic_launcher');
                notification.android.setLargeIcon('ic_launcher');
                notification.android.setChannelId('my_channel_id');

                notification.android.addAction(new firebase.notifications.Android.Action("answer", "ic_launcher", "Open"))

                notification.android.setColorized(true)
                notification.android.setColor('#00a8ff')
                notification.android.setOnlyAlertOnce(true)
                notification.android.setPriority(firebase.notifications.Android.Priority.Max)
                notification.android.setVibrate([400, 800, 600, 800, 800, 800, 1000]);

                firebase.notifications().displayNotification(notification);

Уведомление отображается со звуком по умолчанию. Файл mp3 находится по адресу /android/app/src/main/res/raw/. Он всегда воспроизводит звук уведомления "по умолчанию".

В консоли не отображаются ошибки.

adb logcat говорит что-то вроде этого, но я не уверен, что они связаны с этим:

02-22 21: 20: 30.848 4916 4916 D EdgeLightingManager: showForNotification: isInteractive = true, isHeadUp = true, цвет =0, sbn = StatusBarNotification(pkg=com.my user=UserHandle{0} id=788267878 tag= нулевой ключ =0|com.my|788267878|null|10188: Уведомление (channel=my_channel_id pri=2 contentView= нулевой вибрация = нулевой звук = нулевые значения по умолчанию =0x0 flags=0x8 color=0xff00a8ff actions=1 number=0 vis=PRIVATE semFlags=0x0 semPriority=0 semMissedCount=0))

Эти настройки находятся в AndroidManifest.xml

<uses-permission-sdk-23 android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.VIBRATE" />

Я проверил настройки телефона, все звуки включены и вибрации включены.

Так должен ли мой код работать? Спасибо!

Кстати, я не слышу ни звука в iOS, но там я не использую firebase:)

0 ответов

По поводу вибрации у меня работает

.android.setVibrate([1000, 1000])
.android.setDefaults([firebase.notifications.Android.Defaults.Vibrate])

Проблема может заключаться в том, что вы не переназначаете объект уведомления. Например:

notification = notification.android.setVibrate([300]);

В противном случае вы просто устанавливаете его на новый объект, который никогда не используется.

Другие вопросы по тегам