我使用Fire Base消息传递为另一个设备发送消息。我得到了另一个设备的密钥和令牌,但该职位只是在 Postman 工作,我在我的设备上成功接收通知。但当我使用下面这样的代码时,它返回空值为什么发送消息函数中从职位请求返回的值为空。职位请求在 Postman 工作正常,我没有'我看不出有什么逻辑错误,希望有人能帮我解决这个问题
import 'package:dio/dio.dart';
class DioHelper{
static Dio ?dio ;
static init(){
dio = Dio(
BaseOptions(
baseUrl: 'https://fcm.googleapis.com/fcm/',
receiveDataWhenStatusError: true,
) ,
) ;
}
static Future<Response?> getData({
required String url,
Map<String, dynamic> ?query,
String lang = 'en',
String ?token,
}) async
{
dio?.options.headers =
{
'Content-Type':'application/json',
'Authorization': 'key=key=${myapi}',
};
return await dio?.get(
url,
queryParameters: query??null,
);
}
static Future<Response?> postData({
required String url,
Map<String, dynamic> ?query,
required Map<String,dynamic> data ,
})async
{
dio?.options.headers={
'Content-Type':'application/json',
'Authorization': 'key=${myapi}',
};
return await dio?.post(url,data: data ,queryParameters: query) ;
}
static Future<Response?> putData({
required String url,
Map<String, dynamic> ?query,
required Map<String,dynamic> data ,
String lang='en' ,
String ?token ,
})async
{
dio?.options.headers={
'Content-Type':'application/json',
'Authorization': 'key=key=${myapi}',
};
return await dio?.put(url,data: data ,queryParameters: query) ;
}
}
使用Di-helper函数
void sendMessageForOneUser(String tokens,String title,String body,String image){
print('sendmessages');
DioHelper.postData(url:'send',data:{
"to":tokens,
"notification":{
"title": title,
"body":body ,
"mutable_content": true,
"sound": "Tri-tone",
"image":image
}
}).then((value){
print(value);
}).catchError((onError){
print(onError.toString());
});
}
我不知道为什么不工作以为它对 Postman 很好
1条答案
按热度按时间bis0qfac1#
在客户端代码中使用**
"key=your_server_key"
是一种*serious security risk
,因为它允许恶意用户向您的用户发送他们想要的任何消息。在生产级应用程序中使用This is a bad practice
和should not be used
。您可以尝试此代码从客户端(应用程序端)发送推送通知,但我建议您避免这种方式***直到和除非您不使用服务器为您的移动的应用程序。尝试调用自己的服务器API从您的服务器端发送推送通知,而不是从客户端(移动应用程序端)发送推送通知。
要获得更好的方法,请检查此link