Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone iOS推送通知不适用于分发_Iphone_Ruby On Rails_Ios_Push Notification_Apple Push Notifications - Fatal编程技术网

Iphone iOS推送通知不适用于分发

Iphone iOS推送通知不适用于分发,iphone,ruby-on-rails,ios,push-notification,apple-push-notifications,Iphone,Ruby On Rails,Ios,Push Notification,Apple Push Notifications,我已经为我的开发应用程序尝试了推送通知,它运行良好。当我生成生产(分发)的.p12文件时,它被创建。在服务器上部署.pem文件后,它将抛出并出错 OpenSSL::SSL::SSLError(SSL\u connect返回=1 errno=0 state=SSLv3读取服务器 会话记录单A:sslv3警报证书未知):“} 服务器:RoR(Ruby on Rails) 任何帮助都是值得感激的 注意:用于开发。p12工作正常。问题在于我部署分发时。p12。请建议我可能缺少什么。 感谢并问候如果您想跳

我已经为我的开发应用程序尝试了推送通知,它运行良好。当我生成生产(分发)的.p12文件时,它被创建。在服务器上部署.pem文件后,它将抛出并出错

OpenSSL::SSL::SSLError(SSL\u connect返回=1 errno=0 state=SSLv3读取服务器 会话记录单A:sslv3警报证书未知):“}

服务器:RoR(Ruby on Rails) 任何帮助都是值得感激的

注意:用于开发。p12工作正常。问题在于我部署分发时。p12。请建议我可能缺少什么。


感谢并问候

如果您想跳过验证,可以使用此选项

   require 'net/http'
    require 'openssl'

    class Net::HTTP   alias_method :origConnect, :connect
        def connect
          @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
          origConnect
        end
    end
资料来源:

但既然我们想要安全,你应该使用下面的

ENV['SSL\u CERT\u DIR']='/usr/share/ca certificates/'


有关更多解决方案,请参见服务器代码

gateway.push.apple.com,用于分发的端口2195

gateway.sandbox.push.apple.com,端口2195

  • 登录到iPhone开发者程序门户
  • 从右侧菜单中选择应用程序ID
  • 创建不带通配符的应用程序ID
  • 单击此应用ID旁边的“配置”链接,然后单击按钮启动向导以生成新的开发推送SSL证书。对于开发(或),生成新的生产推送SSL证书以进行分发
  • 下载此证书并双击aps_developer_identity.cer将其导入密钥链
  • 启动Keychain Assistant并单击左侧的“我的证书” 扩展Apple Development Push Services并选择Apple Development Push Services
  • 右键单击并选择“导出1个元素…”并另存为apns-cert.p12。 和您的私钥在同一扩展区域中 右键单击并选择“导出1个元素…”并另存为apns-key.p12
  • 8.打开终端并将目录更改为用于保存.p12的位置,并使用此命令将PKCS12证书束转换为PEM格式

    i) .openssl pkcs12-clcerts-nokeys-out apns-cert.pem-in apns-cert.p12 ii).openssl pkcs12-nocerts-out apns-key.pem-in apns-key.p12 在这里,您必须提供一些访问php代码的密钥

    删除密码短语

    iii).openssl rsa-in apns-key.pem-out apns-key-noenc.pem 在这里,您必须为删除密码短语提供相同的密钥

    最后 iv).cat apns-cert.pem apns-key-noenc.pem>apns-dev.pem

    现在,您可以在APNSHPP!中将此PEM文件用作您的证书。

    @Learner


    如果所有其他选项都不起作用,那么您应该检查您是如何导出p12文件的。您应该导出与苹果生产证书关联的p12文件,我希望它会起作用。。因为它对我有效!!!

    我解决了它。它是一个.p12文件错误。我没有创建我必须使用的.p12文件


    谢谢!!

    我正在使用gem'rpush',它从凭据文件夹中获取pem文件并将其存储在数据库中。我的解决方案是从数据库中删除所有旧的rpush::Apns::App记录,并在更新凭据文件夹中的pem文件后重新生成记录

    app = Rpush::Apns::App.new
    app.name = "ios_app"
    app.certificate = File.read("/path/to/sandbox.pem")
    app.environment = "sandbox" # APNs environment.
    app.password = "certificate password"
    app.connections = 1
    app.save!
    
    n = Rpush::Apns::Notification.new
    n.app = Rpush::Apns::App.find_by_name("ios_app")
    n.device_token = "..." # 64-character hex string
    n.alert = "hi mom!"
    n.data = { foo: :bar }
    n.save!