在使用 PHP 成功验证我的包并通过端点将其交付给 Safari 后/v1/pushPackages/web.com.mywebsite,出现了预期的弹出窗口:
现在出现三个问题:
granted条件中打印“设备令牌:...” 。我可以选择该项目,然后按“删除”按钮,重新启动 Safari,我的网站将再次请求权限,但问题仍然存在。我的日志文件是空的,没有抛出错误!
var checkSafariPermission = function (permissionData)
{
if (permissionData.permission === 'default')
{
window.safari.pushNotification.requestPermission(
'https://mywebsite.com',
'web.com.mywebsite',
{},
checkSafariPermission
);
} else if (permissionData.permission === 'denied')
{
console.log('denied');
} else if (permissionData.permission === 'granted')
{
// This is never triggered!
console.log('Device token: ' + permissionData.deviceToken);
}
};
var permissionData = window.safari.pushNotification.permission('web.com.mywebsite');
checkSafariPermission(permissionData);
Run Code Online (Sandbox Code Playgroud)
我有路线:
POST /v1/devices/{deviceToken}/registrations/web.com.mywebsite
DELETE /v1/devices/{deviceToken}/registrations/web.com.mywebsite
Run Code Online (Sandbox Code Playgroud)
准备接收数据,但我认为 Safari 尚未请求此路由。
官方文档说如下:
重要提示:确保您的 Web 服务器使用的是由证书颁发机构颁发的真实证书,而不是自签名证书。如果您的证书是自签名的,推送通知将不会到达您的用户。
这可能是问题吗?目前我的网站有一个名为“Let's Encrypt Authority X3”的证书,带有波纹管数据,但我不知道这是否是自签名证书?
Common name: www.mywebsite.com
SANs: mail.mywebsite.com, mywebsite.com, webmail.mywebsite.com, www.mywebsite.com
Valid from November 10, 2020 to February 8, 2021
Serial Number: 046829bc4b1e9d71ed27b...
Signature Algorithm: sha256WithRSAEncryption
Issuer: Let's Encrypt Authority X3
Run Code Online (Sandbox Code Playgroud)
更新 1 - 我刚刚获得并安装了证书,问题仍然存在
解决了。
这不是 Safari 造成的问题,但事实上我在 OS X 上使用 Virtual Box,这不是问题。在真正的 macOS 上,它工作得很好!
但是,请确保您拥有有效的证书,因为这仍然是必需的。