Safari的推送通知(OS X小牛和Safari 7)(Safari push notificat

2019-10-30 11:09发布

我创建了推包带有效证件,并托管在与有效的SSL证书,但问题服务器的JavaScript始终显示被拒绝的消息,甚至提示用户面前。 我使用苹果教程,有效的网站推ID和web服务的URL等方面的Java脚本代码

document.body.onload = function() {

    // Ensure that the user can receive Safari Push Notifications.

    if ('safari' in window && 'pushNotification' in window.safari) {

        var permissionData = window.safari.pushNotification.permission('web.com.example.domain');

        checkRemotePermission(permissionData);

    }

};


var checkRemotePermission = function (permissionData) {

    if (permissionData.permission === 'default') {

        // This is a new web service URL and its validity is unknown.

        window.safari.pushNotification.requestPermission(

            'https://domain.example.com', // The web service URL.

            'web.com.example.domain',     // The Website Push ID.

            {}, // Data that you choose to send to your server to help you identify the user.
            checkRemotePermission         // The callback function.
        );
    }

    else if (permissionData.permission === 'denied') {

alert('denied');        
// The user said no.

    }

    else if (permissionData.permission === 'granted') {
alert('granted'); 

        // The web service URL is a valid push provider, and the user said yes.

        // permissionData.deviceToken is now available to use.

    }

};

问题是,我得到了我的javascript“否认”的警报,因为权限被拒绝。 问题是它从来没有问过,也从未问过。 它甚至在我的Safari偏好。

为什么Safari浏览器回归否认,甚至没有要求?

Answer 1:

你能否证实,该网站推ID和你所指定的Web服务URL是有效的和存在? 如果它不是一个有效的服务网址或网站推ID,Safari会否认这一点,甚至没有提示。

我实现了Safari浏览器推端到端的,有些事情你应该注意的..

  1. Web服务URL是HTTPS保护和主机所使用的证书的CN相匹配。 同时请确保它是经过验证的证书。
  2. 网站推ID是有效的,并通过开发者门户网站注册。
  3. 签署任何错误都张贴在Web服务,记录终点。 所以,你可能想尝试推包下载之前得到端点启动和运行。

另外我注意到,苹果不提供Safari浏览器推沙盒环境。 这意味着你需要注册一个网站推ID为生产,另一个用于预生产,这样就可以让他们分开进行测试。

希望帮助。



Answer 2:

您需要定义下面的服务器端的端点

  1. webServiceURL /版本/ pushPackages / websitePushID - 的位置
    推包,通过POST请求所请求的。

  2. webServiceURL /版本/设备/ deviceToken /注册/ websitePushID - 当用户授予权限或更高版本的更新他的许可
    水平,POST请求被发送。 当用户移除用于推送通知许可,一个DELETE请求被发送。

  3. webServiceURL /版本/日志 - 当错误发生时将POST请求发送到该端点作出

我建议你到餐桌这一GitHub库 ,它包括很好的文档,并且可以使用.htaccess文件来定义这些服务器端的端点。



文章来源: Safari push notification (OS X Mavericks and Safari 7)