使用后置请求向 FCM 主题发送的消息未送达 颤振



我使用firebase_messaging进行推送通知,并使用POST请求发送消息。

当向FCM token发送消息时,一切都能正常工作,但当向topic发送消息时(我基本上修改了用于token消息的请求(,它们不会被传递。

我检查了一下,主题是正确的,在物理安卓设备上,我被正确地记下了该主题的下标,就像从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');
});
}
}

您在主题消息传递中所做的一切都是正确的,但您必须将"to"密钥修改为:

"to":"/topics/yourtopicyousubscribed"

相关内容

  • 没有找到相关文章