2

Я использую новый плагин «phonegap-plugin-push», который переопределяет старый PushPlugin для push-уведомления с приложениями cordova.phonegap-plugin-push не работает с iOS 9

Уведомления прекрасно работают как на Android, так и на iOS 8, но когда я пользуюсь iOS 9, он успешно зарегистрировался и возвращает токен, а задний код возвращается, но устройство не получает уведомление!

здесь передний конец кода

var push = PushNotification.init({ "android": {"senderID": "12345679"}, 
    "ios": {"alert": "true", "badge": "true", "sound": "true"}, "windows": {} }); 

push.on('registration', function(data) { 
    var token = data.registrationId 
}); 

push.on('notification', function(data) { 
    // data.message, 
    // data.title, 
    // data.count, 
    // data.sound, 
    // data.image, 
    var data = data.additionalData 
}); 

push.on('error', function(e) { 
    // e.message 
}); 

и вот мой фоновым код

$deviceToken = "019451814eff224c5dceca49b34b7b635d0716c21da2a77e7fd0809fd508d6z4"; 
$passphrase = 'myPassPhrase'; 

$message = 'You have recieved new notification!'; 


$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); 
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 

// Open a connection to the APNS server 
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err, 
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

if (!$fp) 
exit("Failed to connect: $err $errstr" . PHP_EOL); 

echo 'Connected to APNS' . PHP_EOL; 

// Create the payload body 
$body['aps'] = array(
'alert' => $message, 
'sound' => 'default', 
'data' => 'test data' 
); 

// Encode the payload as JSON 
$payload = json_encode($body); 

// Build the binary notification 
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n',   strlen($payload)) . $payload; 

// Send it to the server 
$result = fwrite($fp, $msg, strlen($msg)); 

if (!$result) 
echo 'Message not delivered' . PHP_EOL; 
else 
echo 'Message successfully delivered' . PHP_EOL; 

// Close the connection to the server 
fclose($fp); 

} 

Любая помощь с этим пожалуйста ?! Заранее спасибо

ответ

3

Я нашел решение моей проблемы,

Вы можете найти подробный ответ в этом article

На самом деле это не определенная вещь, но это сочетание более чем одного фактора 1- убедитесь, использовать Xcode 7.1.1 (последняя стабильная версия до сих пор) 2- обязательно создавать APNS производство не сертификат DEVELOPMENT затем загрузить его

enter image description here

-перетащить его или открыть его с доступом брелки расширить его и экспортировать закрытый ключ, как yourAppNameKey.p12

enter image description here

4-, то нам нужно создать файл PEM для сертификата, поэтому через терминал написать:

openssl x509 -in aps_production.cer -inform der -out yourAppNameCert.pem 

Примечание: INS последний шаг мы использовали сертификат, который мы загрузили на шаге 2

5- теперь мы будем конвертировать P12-частного ключа файл в .pem файл:

openssl pkcs12 -nocerts -out yourAppNameKey.pem -in yourAppNameKey.p12 

Примечание: Вам будет предложено ввести пароль, который вы использовали для экспорта закрытого ключа и вставить фразу и подтвердите его, чтобы использовать в коде на стороне сервера

6 - Наконец-то мы объединим сертификат и ключ в один .pem файл:

cat PushChatCert.pem PushChatKey.pem > ck.pem 

here is a sample of the server side code

надеюсь, что он работает со всеми .. Спасибо

Смежные вопросы