Firebase通知不会发出声音或颤动



所以我在我的futter应用程序上启用了firebase消息,一切都很好,但当我在应用程序中收到通知时,它不会发出声音或振动,无论是android还是ios。我相信FCM默认会这样做,我也有"IosNotificationSettings(声音:true,徽章:true,警报:true(",但通知只是静音。你们知道会发生什么吗?我找过这种情况,但找不到任何关于它的信息。事先感谢你的帮助。

class _HomeScreenState extends State<HomeScreen>
with SingleTickerProviderStateMixin {
String _homeScreenText = "Waiting for token...";
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
static const String contato = "contato";
TabController _tabController;
@override
void initState() {
_tabController = new TabController(length: 5, vsync: this);
super.initState();
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) {
print('on message $message');
},
onResume: (Map<String, dynamic> message) {
print('on resume $message');
},    
onLaunch: (Map<String, dynamic> message) {
print('on launch $message');
},
);
_firebaseMessaging.requestNotificationPermissions(
const IosNotificationSettings(sound: true, badge: true, alert: true));
_firebaseMessaging.onIosSettingsRegistered
.listen((IosNotificationSettings settings) {
print("Settings registered: $settings");
});
_firebaseMessaging.getToken().then((String token) {
assert(token != null);
setState(() {
_homeScreenText = "Push Messaging token: $token";
});
print(_homeScreenText);
});
_firebaseMessaging.getToken().then((token) {
Firestore.instance.collection("pushtokens").document().setData({"devtoken": token});
});
}

要在通知中启用声音,您需要在通知数据中添加sound: default部分,如下所示:

{
data: {
google.sent_time: 1588863942303, 
click_action: FLUTTER_NOTIFICATION_CLICK, 
google.original_priority: high,
collapse_key: YourPackageName,
google.delivered_priority: high,
sound: default,
from: YourSenderId,
google.message_id: 0:1588863942508709%a91ceea4a91ceea4,
google.ttl: 60
},
notification: {}
}

您可以为发送通知的http请求添加类似的内容。

但你需要检查的第一件事是你的手机是否允许应用程序通知这损失了我大部分的时间。

{
topic: topic,
android: {
priority: "high",
notification: {
defaultSound: true,
//sound: "default",
},
},
data: {
somedata: "value",
},
notification: {
title: title,
body: description,
imageUrl: "https://i.picsum.photos/id/999/536/354.jpg?hmac=xYKikWHOVjOpBeVAsIlSzDv9J0UYTj_tNODJCKJsDo4",
},
}

我正在从我的节点(Typescript(后端发送消息。我只需要将sound属性添加到消息有效载荷的notification部分。我使用的是Firebase Message flutter SDK,不需要添加任何特殊的配置。

以下是它在Typescript中的外观(但消息JSON才是最重要的(。

let tokens = ...
let message = {
message: {
notification: {
title: title,
body: body,
sound: 'default', // <----- All I needed
},
data: {
...
},
}
}
firebase.messaging().sendToDevice(tokens, message)