首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Safari推送通知(OS小牛和Safari 7)

Safari推送通知(OS小牛和Safari 7)
EN

Stack Overflow用户
提问于 2014-04-11 08:50:04
回答 2查看 1.5K关注 0票数 0

我已经创建了带有有效证书的push包,并且使用有效的SSL证书托管在服务器上,但问题是javascript总是在提示用户之前就显示拒绝消息。我正在使用来自苹果教程的java脚本代码和有效的网站push id & webservice url等等。

代码语言:javascript
复制
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中被“拒绝”警告,因为权限被拒绝。问题是它从来没有问过,也从来没有问过。甚至在我的狩猎偏好中也没有。

为什么在没有询问的情况下野生动物园的返回被拒绝了?

EN

回答 2

Stack Overflow用户

发布于 2014-04-14 17:29:44

您能确认您指定的网站推送id和web服务URL是否有效且存在吗?如果它不是一个有效的服务网址或网站推送id,Safari将拒绝它,甚至没有提示。

我实现了从一端到另一端的safari推送,有些事情你应该注意。

  1. Web服务URL由https保护,主机名与使用的证书的CN匹配。此外,请确保这是一个经验证的证书。
  2. 网站推送id是有效的,并通过开发者门户注册。
  3. 任何签名错误都会张贴在web服务的日志端点上。因此,您可能希望在尝试push包下载之前启动并运行该端点。

我还注意到,苹果并没有为Safari推送提供沙箱环境。这意味着,您将需要注册一个网站推送id的生产和生产前的一个,以便您可以保持他们分开的测试目的。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2014-09-05 07:49:49

您需要定义以下服务器端端点

  1. webServiceURL/version/pushPackages/websitePushID -位置 推送包裹,按要求邮寄。
  2. webServiceURL/version/devices/deviceToken/registrations/websitePushID -当用户授予权限或更新其权限时 级别,发送一个职位请求。当用户移除推送通知的权限时,将发送删除请求。
  3. webServiceURL/version/log -当发生错误时,向此端点发出POST请求

我建议您分叉这个 github回购,它包含了非常好的文档,这些服务器端端点可以使用.htaccess文件.定义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23007768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档