如何在颤振的背景上设置自定义声音通知?



我编写了一个颤振应用程序,但我无法使用自定义声音配置 Firebase 云消息。我收到通知,但当应用程序处于后台时,它们带有默认声音。在前台,我使用本地通知库并且效果很好,但我也需要在后台工作。

这是我为云消息传递发送的内容:

{
"to":"<firebase_token>",
"notification":{
"sound":"arrive",
"title":"My Title",
"body":"My body"
},
"data":{
"click_action":"FLUTTER_NOTIFICATION_CLICK",
"status":"done",
"screen":"screenA",
"message":"ACTION"
},
"apns":{
"headers":{
"apns-priority":"5",
"apns-push-type":"background"
},
"payload":{
"aps":{
"content-available":1
}
}
}
}

这是我的工作本地通知配置:

void showNotification({
String title,
String body,
}) {
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'your channel id',
'your channel name',
'your channel description',
importance: Importance.Max,
priority: Priority.Max,
ticker: 'ticker',
playSound: true,
sound: RawResourceAndroidNotificationSound('arrive')
);
var iOSPlatformChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics = NotificationDetails(
androidPlatformChannelSpecifics,
iOSPlatformChannelSpecifics,
);
notifications.show(0, title, body, platformChannelSpecifics,
payload: 'Custom_Sound',);
}

因此,本地通知库会看到我的自定义声音,但云消息传递将播放默认声音。可能是什么问题?

我的声音位于:android\app\src\main\res\raw\arrive.mp3

我的导入是:

flutter_local_notifications: ^1.4.3 
firebase_messaging: ^6.0.16

颤动医生:

[√] Flutter (Channel stable, v1.12.13+hotfix.9, on Microsoft Windows [Version 10.0.18362.836], locale hu-HU)
• Flutter version 1.12.13+hotfix.9 at C:flutter srcflutter
• Framework revision f139b11009 (8 weeks ago), 2020-03-30 13:57:30 -0700
• Engine revision af51afceb8
• Dart version 2.7.2

[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at C:UserskorosAppDataLocalAndroidsdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-29, build-tools 28.0.3
• Java binary at: C:Program FilesAndroidAndroid Studiojrebinjava
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
• All Android licenses accepted.
[√] Android Studio (version 3.4)
• Android Studio at C:Program FilesAndroidAndroid Studio
• Flutter plugin version 35.3.1
• Dart plugin version 183.6270
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
[√] VS Code (version 1.45.1)
• VS Code at C:UserskorosAppDataLocalProgramsMicrosoft VS Code
• Flutter extension version 3.10.2
[√] Connected device (1 available)
• SM A520F • 52003aa8f4ea64d5 • android-arm64 • Android 8.0.0 (API 26) (emulator)
• No issues found!

您可以为 Firebase 消息传递编写后台处理程序方法,然后可以在后台处理程序中调用 showNotification 方法。示例代码:

Future<dynamic> onBackgroundMessageHandler(Map<String, dynamic> message) async {
if (message['data'] != null) {
final data = message['data'];
final title = data['title'];
final body = data['message'];
showNotification(title, body);
} 
return Future<void>.value();
}

FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
_firebaseMessaging.configure(onBackgroundMessage: Platform.isIOS ? null : onBackgroundMessageHandler);

最新更新