【发布时间】:2020-07-09 19:40:00
【问题描述】:
我在 Flutter 中为我的应用设置了 Firebase 云消息传递。我已经在控制台上设置了所有内容。我还用邮递员进行了测试,它也很好用。但是,我也想在 Flutter 中进行测试,我知道这也是可能的。
但这对我不起作用,因为我没有任何通知或错误消息。如何做到这一点?
Future<Map<String, dynamic>> sendAndRetrieveMessage() async {
print("Wdwd");
await firebaseMessaging.requestNotificationPermissions(
const IosNotificationSettings(sound: true, badge: true, alert: true, provisional: false),
);
await http.post(
'https://fcm.googleapis.com/fcm/send',
headers: <String, String>{
'Content-Type': 'application/json',
'Authorization': 'key = $serverToken',
},
body: jsonEncode(
<String, dynamic>{
'notification': <String, dynamic>{
'body': 'this is a body',
'title': 'this is a title'
},
'priority': 'high',
'data': <String, dynamic>{
'click_action': 'FLUTTER_NOTIFICATION_CLICK',
'id': '1',
'status': 'done'
},
'to': "tokenString",
},
),
);
final Completer<Map<String, dynamic>> completer =
Completer<Map<String, dynamic>>();
firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
completer.complete(message);
},
);
return completer.future;
}
我通过单击按钮启动此代码。没有得到任何回应。请帮帮我。
【问题讨论】:
-
在您发送给用户的应用程序中包含此
'Authorization': 'key = $serverToken'会带来严重的安全风险。顾名思义,该令牌只能在受信任的环境中使用,例如您的开发机器、您控制的服务器或 Cloud Functions。像您在此处所做的那样在应用程序中使用 FCM 服务器密钥意味着恶意用户可以从那里获取它,并使用它向 您的中的任何人发送他们想要的任何消息> 用户。安全地发送设备到设备消息需要您设置服务器,如下所示:stackoverflow.com/a/37993724
标签: flutter dart firebase-cloud-messaging