PHP Safari PushNotifications "Error al extraer el paquete de notificaciones push"
Estoy tratando de implementar notificaciones de safari y ya he resuelto la mayoría de las cosas. Estoy siguiendo el tutorial oficialhttps://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html#//apple_ref/doc/uid/TP40013225-CH3-SW1 pero actualmente estoy recibiendo el error:
Error al extraer el paquete de notificaciones push
He visto los APN de este tema "Error al extraer el paquete de notificaciones push", pero parece que la persona no recibió ningún comentario / solución.
Antes de este error, recibía "Error en la verificación de firma del paquete push". pero termino resolviendo el problema con esta ayuda en el sitio web de Apple: la verificación de la firma del paquete push falló, pero los certificados de Apple están bien y al descargar / convertir a PEM el último certificado de Applehttps://www.apple.com/certificateauthority/AppleWWDRCAG3.cer
Website.json tiene los siguientes datos:
{
"websiteName": "hello",
"websitePushID": "web.com.hello",
"allowedDomains": ["https://hello.com"],
"urlFormatString": "https://hello.com/%@",
"authenticationToken": "01sSggkfAAAqq1seeF0gglzzg",
"webServiceURL": "https://hello.com"
}
manifest.json tiene los siguientes datos:
{
"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"
}
}
Mi carpeta llamada "pushpackage" contiene:
- website.json
- manifest.json
- firma
- carpeta icon.iconset> 6 imágenes
Aunque la documentación dice:
La versión de la API. Actualmente, 'v2'
las solicitudes de Safari se realizan en el punto final https://hello.com/v1/pushPackages/web.com.hello
, lo cual es un poco extraño, pero ...
Por último, el punto final POST mencionado anteriormente, desencadena:
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="pushpackage.zip"');
echo file_get_contents($file);
El zip parece estar bien, al menos cuando abro todos los archivos están estructurados correctamente, pero no tengo ideas sobre qué podría estar mal con el archivo zip. ¿Algunas ideas?
Respuestas
Resuelto .
Tenía varias cosas mal en mi código.
- El error:
Error al extraer el paquete de notificaciones push
Fue causado por un echo ...
en el medio del código al crear el archivo zip.
- El error:
Error de verificación de firma del paquete push
Fue causado por varios factores:
- Mi certificado .p12 era incorrecto, el .p12
Website Push ID
no coincidía con miwebsite.json
código ni con el código javascript. Para depurar / ver los datos del certificado utilicé el comandoopenssl -nokeys -info -in certificate.p12 -passin pass:
- El certificado AppleWWDRCAG3.cer (que caduca en 2030) del enlace oficial https://developer.apple.com/support/expiration/no funciona. Tuve que descargar el archivo AppleWWDRCA.cer (que vence en 2023) dehttps://developer.apple.com/certificationauthority/AppleWWDRCA.cer
- Mis iconos no se crearon con una resolución de 72 ppp
- La versión utilizada por Safari para solicitar permisos es la versión 1 "v1 / pushPackages .." y estaba creando el archivo zip con
manifest.json
en la versión 2