我使用firebase_messaging
进行推送通知并发送我使用POST
请求的消息。
将消息发送到FCM token
时,一切正常,但是将消息发送到topic
时(我基本上修改了我用于token
消息的请求),这些消息将无法传递。
我检查了该主题是否正确,并且在物理Android设备上我正确地对该主题进行了下标,因为从FCM控制台发送主题消息时,它会立即发送。 你能在这里发现我做错了吗?
非常感谢。
void sendOrderCollected(Order order) async {
var customerName = order.customerName;
var customerFcmToken = order.customerFcmToken;
await post('https://fcm.googleapis.com/fcm/send',
headers: <String, String>{
'Content-Type': 'application/json',
'Authorization': 'key=$firebaseServerKey'
},
body: jsonEncode({
'notification': <String, dynamic>{
'title': sprintf(
AppLocalizations.instance.text('ORDER_COLLECTED_PUSH_SUBTITLE'),
[order.shopName]),
'body': sprintf(
AppLocalizations.instance.text('ORDER_COLLECTED_PUSH_BODY'),
[customerName]),
'sound': 'true'
},
'priority': 'high',
'data': <String, dynamic>{
'click_action': 'FLUTTER_NOTIFICATION_CLICK',
'id': '1',
'status': 'done'
},
'to': customerFcmToken
})).whenComplete(() {
// print('sendOrderCollected(): message sent');
}).catchError((e) {
print('sendOrderCollected() error: $e');
});
}
void sendNewPromotion(Promotion promotion,String topic) async {
print('sendNewPromotion() web started.\n topic: $topic, promotion : ${promotion.toMap().toString()}'); // correct topic
await post('https://fcm.googleapis.com/fcm/send',
headers: <String, String>{
'Content-Type': 'application/json',
'Authorization': 'key=$firebaseServerKey'
},
body: jsonEncode({
'notification': <String, dynamic>{
'title': sprintf(
AppLocalizations.instance
.text('PROMOTION_PUSH_SUBTITLE'),
[promotion.productName]),
'body': sprintf(
AppLocalizations.instance.text('PROMOTION_PUSH_BODY'),
[promotion.productName, promotion.price, promotion.availableQuantity]),
'sound': 'true'
},
// 'priority': 'high',
'android':{
'priority' : 'high'
},
'apns':{
'headers':{
'apns-priority': '5'
}
},
'webpush': {
'headers': {
'Urgency': 'high'
}
},
'data': <String, dynamic>{
'click_action': 'FLUTTER_NOTIFICATION_CLICK',
'id': '1',
'status': 'done',
// parameter to pass with the message
// 'promotionId': promotion.promotionId,
// 'imageUrl': promotion.imageUrl,
// 'isPromotion' : promotion.isPromotion,
// 'productName': promotion.productName,
// 'productCategory': promotion.category,
// 'vendor': promotion.vendor,
// 'price': promotion.price,
// 'description': promotion.productDescription
},
'to': topic // correct
// 'topic': topic // throws error 400
})).whenComplete(() {
print('sendNewPromotion(): message sent');
}).catchError((e) {
print('sendNewPromotion() error: $e');
});
}
}
答案 0 :(得分:0)
您所做的一切在主题消息传递中都是正确的,但是您必须为此修改"to"
键:
"to":"/topics/yourtopicyousubscribed"