1

Je suivais ce tutoriel pour mettre en place une notifications push >>http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12Impossible de recevoir les notifications push

Cependant, les notifications push ne viennent pas à mon téléphone. Le téléphone s'enregistre avec succès. Le fournisseur se connecte aux API avec succès et envoie le message au périphérique enregistré. Pourtant, aucune notification n'a de chance.

Essayé de suivre le tutoriel une deuxième fois depuis le début et toujours le même résultat.

À la troisième fois que je testé mes fichiers ck.pem comme celui-ci

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert ck.pem -debug 

et a obtenu ce retour. Nous avons cherché pendant un certain temps à résoudre ce problème, mais rien n'a été fait pour résoudre ce problème. Je ne sais pas si c'est la raison pour laquelle le téléphone ne parvient pas à recevoir les messages, mais cela pourrait être le cas. Quelqu'un sait comment puis-je résoudre cela? Ou peut-être d'autres choses à vérifier? J'ai fait le tutoriel étape par étape pour la troisième fois, et je ne sais pas quoi chercher. APNS ne renvoie aucun statut d'erreur après l'envoi du message.

Code d'affichage du fournisseur en php >>

<?php 

$deviceToken = 'c8964c75e5d404f029e2d599d094a2114d219bdb95750ae6501d6f0ce6a3c3b4'; 

$passphrase = 'DEADFFFF'; 

$message = 'Check'; 

//////////////////////////////////////////////////////////////////////////////// 

$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' 
    ); 

// 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; 

fclose($fp); 

application est en mode débogage, certificat de serveur est également pour le développement L'exécution du code donne un message livré avec succès.

Répondre

1

Tout allait bien! Le téléphone de développement a été jailbreaké et il n'a pas reçu de notifications push. Sur un téléphone non jailbreaké tout a bien fonctionné, alors éloignez-vous des téléphones jailbreakés en développement! Je passerai une journée à comprendre cela ...

0

Pour ssl://gateway.sandbox.push.apple.com:2195,

  • débogage build code signature
  • développement.

Si vous souhaitez utiliser les détails de production, puis utilisez ssl://gateway.push.apple.com:2195

0

Dans Xcode, vérifiez que vous utilisez le profil d'approvisionnement correct (avec bouton activé et pour le développement). Redémarrez l'appareil et réessayez.

+0

Le profil d'approvisionnement est correct. Essayé de cette façon, mais toujours le même résultat. Chose la plus étrange est que le fournisseur se connecte au message de sents APNS avec succès (pas d'état d'erreur en arrière d'APNS). Cependant, l'appareil ne reçoit pas la notification, même s'il s'est enregistré avec succès pour les notifications. – Datenshi

Questions connexes