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]);
В противном случае вы просто устанавливаете его на новый объект, который никогда не используется.