我尝试在通知到达时实现该功能,手机应该振动并播放某种铃声。
但是,我只能播放手机的默认通知声音。
我正在使用的版本:
"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 /。它始终播放默认的通知“ bling”声音。
控制台中未显示任何错误。
adb logcat表示类似这样的内容,但我不确定它们是否与此有关:
02-22 21:20:30.848 4916 4916 D EdgeLightingManager: showForNotification:isInteractive = true,isHeadUp = true,color = 0,sbn = StatusBarNotification(pkg = com.my user = UserHandle {0} id = 788267878 tag = null key = 0 | com.my | 788267878 | null | 10188: 通知(channel = my_channel_id pri = 2 contentView = null振动= null 声音=空默认值= 0x0标志= 0x8颜色= 0xff00a8ff操作= 1 = 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 :(得分:0)
您的问题可能是您没有重新分配通知对象。例如:
notification = notification.android.setVibrate([300]);
否则,您只是将其设置在从未使用过的新对象上。
答案 1 :(得分:0)
关于振动,这对我有用
.android.setVibrate([1000, 1000])
.android.setDefaults([firebase.notifications.Android.Defaults.Vibrate])