Я пытаюсь отправить уведомление firebase pu sh с моего сервера. Я запускаю файл. php, отправляя запрос POST, используя Volley, например:
public static void dataPacket(Activity activity, Map<String, String> bundle)
{
new AsyncTask<String, Boolean, Boolean>()
{
protected Boolean doInBackground(String... params)
{
String url = CloudData.TEST_DATA_PACKET;
RequestQueue queue = Volley.newRequestQueue(activity);
StringRequest postRequest = new StringRequest(Request.Method.POST, url,
response -> {
// response
Log.d("Response", response);
},
error -> {
error.printStackTrace();
Log.d("Error.Response", error.toString());
}
) {
@Override
protected Map<String, String> getParams()
{
return bundle;
}
@Override
public Map<String, String> getHeaders()
{
Map<String, String> headerParams = new HashMap<>();
headerParams.put("Content-Type", "application/json; charset=utf-8");
return headerParams;
}//*/
};
postRequest.setRetryPolicy(new DefaultRetryPolicy(
10000,
0,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));//*/
queue.add(postRequest);
return true;
}
}.execute();
}
Это мой файл. php на моем сервере:
<?php
require 'FCMPushNotification.php';
$FCMPushNotification = new \BD\FCMPushNotification('MY_API_KEY');
$sDeviceToken = $_POST['token'];
$aPayload = array(
'data' => array("test"=>123),
'notification' => array(
'title' => 'Example app',
'body'=> 'This is an example message',
'sound'=> 'default'
)
);
$aOptions = array(
'time_to_live' => 0 //means messages that can't be delivered immediately are discarded.
);
$aResult = $FCMPushNotification->sendToDevice(
$sDeviceToken,
$aPayload,
$aOptions // optional
);
var_dump($aResult);
?>
Когда я измените эту строку
$sDeviceToken = $_POST['token'];
на эту
$sDeviceToken = 'my_firebase_token_for_a_device';
все работает нормально. Но когда я пытаюсь получить переменную 'token' из запроса POST, android выдает мне эту ошибку:
BasicNetwork.performRequest: Неожиданный код ответа 500 для https://mywebsite.com/sendnotification.php W /System.err: com. android .volley.ServerError W / System.err: at com. android .volley.toolbox.BasicNetwork.performRequest (BasicNetwork. java: 179) W / System.err: at com. android .volley.NetworkDispatcher.run (NetworkDispatcher. java: 114) D / Error.Response: com. android .volley.ServerError
Что я делаю не так?
Обновление
Так я называю dataPacket:
PostTaskListener<String> postTaskListener = result ->
{
bundle.put("token",result);
SendNotification.dataPacket(activity,bundle);
};
FirebaseCloud.getFirebaseToken(db.getActiveProfile().cID,postTaskListener,activity);