我遵循手册https://developer.apple.com/notifications/safari-push-notifications/。我使用 PHP 脚本来生成所需的存档。它被创建和下载(元素的结构与手册中的相同)。
- 我所有的“Web 服务端点”处理结果都给出代码 200'
- webServiceURL/version/pushPackages/websitePushID' 在下载时生成必要的存档(存在 Content-type 标头的 application/zip)
- safari 下载它已经解压的文件夹(意味着安装的头文件是正确的并且文件被正常解压)
- Safari(网站->通知)的设置中缺少请求“发送通知的权利”的资源(网站),因为它从未成功请求
website.json 具有正确的结构和有效的 JSON 文件...
{
"websiteName": "Safari Push Demo",
"websitePushID": "web...",
"allowedDomains": ["https://..."],
"urlFormatString": "https://...",
"authenticationToken": "19f8d7a...be957043",
"webServiceURL": "https://..."
}
manifest.json 具有正确的结构和有效的 JSON 文件...
{
"icon.iconset\/icon_16x16.png": "e675cb16...9a38ce0",
"icon.iconset\/icon_16x16@2x.png": "920249e14c...067305bd0",
"icon.iconset\/icon_32x32.png": "920249e14c2...305bd0",
"icon.iconset\/icon_32x32@2x.png": "067fed2988...1b7e5578c21",
"icon.iconset\/icon_128x128.png": "f4260435....7efeb5fde9",
"icon.iconset\/icon_128x128@2x.png": "5fe1cd6488...3ebc14654f627",
"website.json": "eeb81434deab....3bf2d9bd2265"
}
所有图标和签名文件都呈现。该证书具有适当的访问权限 0644。
为了生成和下载使用本手册的 .zip 文件 ,只需按照 Apple 手册的建议传递标题:
header("Content-type: application/zip");
echo file_get_contents($packagePath);#my path to .zip file
尝试过和这样的选择: 1)
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/zip");
// header("Content-type: application/octet-stream");#tried and so, too
header("Content-Disposition: attachment; filename=\"pushPackage.zip\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($packagePath));
ob_end_flush();
readfile($packagePath);#my path to .zip file
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=pushPackage.zip");
header("Content-length: " . filesize($packagePath));
header("Pragma: no-cache");
header("Expires: 0");
readfile($packagePath);
存档已下载并打开,但 APNs 不想接受它们,并且在“webServiceURL/version/log”上我总是有{"logs":["Extracting push notification package failed"]}
有一个问题有类似的问题,但没有解决方案。由于我的声誉,我不能写评论,所以我决定再次询问有关我尝试过的更详细的信息。