Отправка push-уведомлений в Android-приложение, разработанное из титана (кроссплатформенное), с помощью Stack Overflow

Для отправки push-уведомлений с сервера в приложение для Android я использую следующий скрипт.

<?php
$message = "hi there";
$apiKey = "xxxxxxxxxxxx";
$registrationIDs = array("xxxxxxx");
$url = 'https://android.googleapis.com/gcm/send';
// Set POST variables
$fields = array(
'registration_ids' => $registrationIDs,
'data' => array( "message"  => $message,
)
);
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
$ch = curl_init(); // Open connection
curl_setopt($ch, CURLOPT_URL, $url );
// Set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $fields ));
$result = curl_exec($ch);   // Execute post

if($result === false)
die('Curl failed ' . curl_error());

curl_close($ch);
//return $result;
// curl_close($ch);          // Close connection
$response = json_decode($result);
print_r($response);
?>

Этот код прекрасно работает для нативного приложения для Android, но приложение, разработанное в титане, когда я отправляю push-уведомления с помощью вышеуказанного сценария, устройство получает уведомление, но с «NULL» payload,

Я хочу знать, почему? Что не так с моим скриптом PHP.

ОБНОВИТЬ

Это мой код для получения уведомления

// These events monitor incoming push notifications
CloudPush.addEventListener('callback', function (evt) {
//Ti.API.info('This is the payload data i got'+JSON.parse(evt.payload));
Ti.API.log("This is the GCM response "+JSON.stringify(evt));
alert(evt.payload);
//var payload = JSON.parse(evt.payload);
//Ti.API.info('This is the message data i got'+payload.message);

});
CloudPush.addEventListener('trayClickLaunchedApp', function (evt) {
Ti.API.info('Tray Click Launched App (app was not running)');
});
CloudPush.addEventListener('trayClickFocusedApp', function (evt) {
Ti.API.info('Tray Click Focused App (app was already running)');
});

и это ответ

[INFO] :   APSCloudPush: receivePayload: null
[INFO] :   APSCloudPush: background: true
[INFO] :   APSCloudPush: queuePayload: null
[INFO] :   APSCloudPush: showTrayNotification
[ERROR] :  APSCloudPush: Payload is null!

3

Решение

Приведенный выше код является абсолютно правильным. Я предполагаю, что проблема только в полезной нагрузке ключевого слова. Просто замените слово «message» на «payload» в сценарии на стороне сервера, как показано ниже.

    $fields = array(
'registration_ids' => $registrationIDs,
'data' => array( "payload"  => $message,
)
);

Потому что в титаниуме ti.cloudePush модуль внутреннего поиска слова полезной нагрузки

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]