PHP Safari PushNotifications „Nie udało się wyodrębnić pakietu powiadomień wypychanych”
Próbuję zaimplementować powiadomienia dotyczące safari i większość rzeczy już wiem. Postępuję zgodnie z oficjalnym samouczkiemhttps://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html#//apple_ref/doc/uid/TP40013225-CH3-SW1 ale obecnie otrzymuję błąd:
Wyodrębnienie pakietu powiadomień wypychanych nie powiodło się
Widziałem ten temat APN „Wyodrębnianie pakietu powiadomień wypychanych nie powiodło się”, ale wygląda na to, że osoba nie otrzymała żadnej opinii / rozwiązania.
Przed tym błędem otrzymywałem komunikat „Weryfikacja podpisu pakietu push nie powiodła się”. ale kończy się na rozwiązaniu problemu dzięki tej pomocy Witryna Apple push: Weryfikacja podpisu pakietu push nie powiodła się, ale certyfikaty Apple są w porządku i pobierając / konwertując na PEM najnowszy certyfikat Applehttps://www.apple.com/certificateauthority/AppleWWDRCAG3.cer
Witryna Website.json zawiera następujące dane:
{
"websiteName": "hello",
"websitePushID": "web.com.hello",
"allowedDomains": ["https://hello.com"],
"urlFormatString": "https://hello.com/%@",
"authenticationToken": "01sSggkfAAAqq1seeF0gglzzg",
"webServiceURL": "https://hello.com"
}
manifest.json zawiera następujące dane:
{
"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"
}
}
Mój folder o nazwie „pushpackage” zawiera:
- website.json
- manifest.json
- podpis
- folder icon.iconset> 6 obrazów
Chociaż dokumentacja mówi:
Wersja interfejsu API. Obecnie „v2”
żądania Safari są wysyłane w punkcie końcowym https://hello.com/v1/pushPackages/web.com.hello, co jest trochę dziwne, ale ...
Wreszcie wspomniany powyżej punkt końcowy POST wyzwala:
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="pushpackage.zip"');
echo file_get_contents($file);
Zip wydaje się być w porządku - przynajmniej po otwarciu wszystkie pliki mają poprawną strukturę, ale nie mam pojęcia, co może być nie tak z plikiem zip. Jakieś pomysły?
Odpowiedzi
Rozwiązany .
W moim kodzie było kilka błędów.
- Błąd:
Wyodrębnienie pakietu powiadomień wypychanych nie powiodło się
Zostało spowodowane przez echo ...w środku kodu podczas tworzenia pliku zip.
- Błąd:
Weryfikacja podpisu pakietu push nie powiodła się
Zostało spowodowane kilkoma czynnikami:
- Mój certyfikat .p12 był nieprawidłowy, plik .p12
Website Push IDnie pasujewebsite.jsondo kodu mojego ani javascript. W celu debugowania / przeglądania danych certyfikatu użyłem poleceniaopenssl -nokeys -info -in certificate.p12 -passin pass: - Certyfikat AppleWWDRCAG3.cer (wygasa w 2030 r.) Z oficjalnego linku https://developer.apple.com/support/expiration/nie działa. Musiałem pobrać plik AppleWWDRCA.cer (który wygasa w 2023 roku) zhttps://developer.apple.com/certificationauthority/AppleWWDRCA.cer
- Moje ikony nie były tworzone w rozdzielczości 72dpi
- Wersja używana przez Safari do żądania uprawnień to wersja 1 "v1 / pushPackages ..", a ja tworzyłem plik zip z rozszerzeniem
manifest.jsonw wersji 2