PHP Safari PushNotifications "L'extraction du package de notification push a échoué"

Nov 26 2020

J'essaie de mettre en œuvre des notifications de safari et j'ai la plupart des choses à comprendre. Je suis le tutoriel officielhttps://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html#//apple_ref/doc/uid/TP40013225-CH3-SW1 mais je reçois actuellement l'erreur:

Échec de l'extraction du package de notification push

J'ai vu ce sujet APN "L'extraction du package de notification push a échoué" mais il semble que la personne n'ait reçu aucun commentaire / solution.

Avant cette erreur, j'obtenais "La vérification de la signature du package push a échoué." mais je finis par résoudre le problème avec cette aide Push du site Web Apple: la vérification de la signature du package push a échoué, mais les certificats Apple sont ok et en téléchargeant / convertissant en PEM le dernier certificat Applehttps://www.apple.com/certificateauthority/AppleWWDRCAG3.cer

Website.json contient les données suivantes:

{
    "websiteName": "hello",
    "websitePushID": "web.com.hello",
    "allowedDomains": ["https://hello.com"],
    "urlFormatString": "https://hello.com/%@",
    "authenticationToken": "01sSggkfAAAqq1seeF0gglzzg",
    "webServiceURL": "https://hello.com"
}

manifest.json contient les données suivantes:

{
   "icon.iconset\/icon_16x16.png":{
      "hashType":"sha512",
      "hashValue":"d7366c75a9ad9a95ee2e6c6a4642ab6150d01986a870d8726e988c180e373cce7cbda1496150def585fb05e5b82d9753fabbe03e1e5bf56fce1c94a472bee50b"
   },
   "icon.iconset\/[email protected]":{
      "hashType":"sha512",
      "hashValue":"63287459ef021a8d3fe6a7ee40292446dddea305382713f25e8ff3f40b17d706012c809ebe6238a3652992ba55007f8dd22707b31f4730efc4b9d33baaca593d"
   },
   "icon.iconset\/icon_32x32.png":{
      "hashType":"sha512",
      "hashValue":"407027a704b967e57999d45ea68f2ccd156b49c698a4237ac8e60101f4c79388cbebf7242ac93c911f0176da49a49d12c5eec0f303943ea8f0d99f5d27898d21"
   },
   "icon.iconset\/[email protected]":{
      "hashType":"sha512",
      "hashValue":"a799fc64879d0d0304eb20b1bb96fe1c1b837e1cbc2d905ad3024b3230337d9f2a6ea41a73b02e91168b97fce13dd918f380d95ccd77ef1360e0bb818de8be99"
   },
   "icon.iconset\/icon_128x128.png":{
      "hashType":"sha512",
      "hashValue":"e709cbce5e4b4f355a4007a5665ad3b1b020ba81640fbed09db252910c20b956eab6167ae6a3e399b4b1f9ff1cf8eb4d68de844dd01a39d23fff15b3418ab6c5"
   },
   "icon.iconset\/[email protected]":{
      "hashType":"sha512",
      "hashValue":"1d210614b556267b6d41e1b7ad5d09db90ba77cab2196b85b7bc211873f03ebe3a89a0cf083b61181af0fa6900ba6eb8394f86e4921432a9779fb419c1def7ce"
   },
   "website.json":{
      "hashType":"sha512",
      "hashValue":"2c050ffb570fab3c4224ad2f08144f4ca9bf09d570f22bf3dc3cabf7c5146e436755bf171befcfa410d8f56ac4135b1e03b235197feed6306c5692b793b41668"
   }
}

Mon dossier appelé "pushpackage" contient:

  • website.json
  • manifest.json
  • Signature
  • dossier icon.iconset> 6 images

Bien que la documentation dise:

La version de l'API. Actuellement, 'v2'

les requêtes Safari sont effectuées dans le point de terminaison https://hello.com/v1/pushPackages/web.com.hello, ce qui est un peu étrange, mais ..

Enfin, le point de terminaison POST dit ci-dessus, déclenche:

header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="pushpackage.zip"');

echo file_get_contents($file);

Le zip semble correct - au moins lorsque j'ouvre tous les fichiers sont correctement structurés, mais je n'ai plus d'idées sur ce qui pourrait ne pas fonctionner avec le fichier zip. Des idées?

Réponses

Linesofcode Nov 27 2020 at 17:43

Résolu .

J'ai eu plusieurs problèmes dans mon code.

  1. L'erreur:

Échec de l'extraction du package de notification push

A été causé par un echo ...au milieu du code lors de la création du fichier zip.

  1. L'erreur:

La vérification de la signature du package push a échoué

A été causé en raison de plusieurs facteurs:

  • Mon certificat .p12 était erroné, le .p12 Website Push IDne correspondait pas à mon website.jsoncode ni au code javascript. Afin de déboguer / afficher les données du certificat, j'ai utilisé la commandeopenssl -nokeys -info -in certificate.p12 -passin pass:
  • Le certificat AppleWWDRCAG3.cer (qui expire en 2030) du lien officiel https://developer.apple.com/support/expiration/ne fonctionne pas. J'ai dû télécharger le fichier AppleWWDRCA.cer (qui expire en 2023) depuishttps://developer.apple.com/certificationauthority/AppleWWDRCA.cer
  • Mes icônes n'ont pas été créées avec une résolution de 72 dpi
  • La version utilisée par Safari pour demander des autorisations est la version 1 "v1 / pushPackages .." et je créais le fichier zip avec le manifest.jsondans la version 2