Может быть, я упускаю что-то действительно простое … но я не мог понять это.
У меня есть server.php в качестве сервера уведомлений GCM. Когда я вызываю этот server.php в терминале (MAC) как
$ php server.php
, оно работает идеально.
Вот мой server.php
<?php
$data = array( 'message' => 'Hello!' );
$ids = array('APA91...'); //my actual registered ID from android device would go here
sendGoogleCloudMessage( $data, $ids );
function sendGoogleCloudMessage( $data, $ids )
{
// key from Google APIs Console
$apiKey = 'AIzaS...'; //my actual API key would go here
$url = 'https://android.googleapis.com/gcm/send';
$post = array(
'registration_ids' => $ids,
'data' => $data,
);
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $post ) );
// Actually send the push!
$result = curl_exec( $ch );
// Error? Display it!
if ( curl_errno( $ch ) )
{
echo 'GCM error: ' . curl_error( $ch );
}
curl_close( $ch );
echo $result;
}
?>
Теперь у меня на сервере есть код server.php, и я пытаюсь вызвать эту функцию через ajax из jquery mobile следующим образом:
$.ajax({
async: false,
type: "POST",
url: "http://myServer.com/server.php",
data: {"data":sentData}, //i have var sentData setup in actual code
cache: false,
success: function(data){
alert(data);
}
});
Но тот же рабочий код не работает, когда я пытаюсь вызвать его с помощью $ .ajax …
Что я здесь не так делаю?
Задача ещё не решена.
Других решений пока нет …