1

我正在为我的 iOS 应用程序实现存折功能。我使用 php 作为服务器端语言来生成传递并分发到设备。通行证已成功安装在设备上,我还可以使用 pull to referesh 手动更新通行证。当我尝试从服务器端自动更新 pass 时,我得到响应状态 8-invalid-token 并显示消息“标识符是导致问题的数据库中的 rowID(index)。Apple 将断开您的连接.....”。我不明白为什么会这样。设备正在正确注册,其他端点也工作正常。如果 pass 最初不正确,则不应将其安装在设备上。我使用与发送推送通知相同的通行证类型 ID 证书签署通行证。我还使用列出的这个命令检查了我的证书 在这里

    $ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert YourSSLCertAndPrivateKey.pem -debug -showcerts -CAfile server-ca-cert.pem  

我在沙盒和生产中都使用了它,它没有显示任何错误。我正在使用生产 url 发送推送通知以更新通行证;这是我发送推送的代码;

        $apnsHost = 'gateway.push.apple.com';  
        $apnsPort = 2195;  
        $apnsCert = base_path().'/path/to/ptypeidcert.pem';//converted using ssl from passtypeid.p12 certificated  
        $push_token = $token;  
        $passIdentify = 'pass.myidentifier.coupon';  
        $payload = '{}';  
        $msg = chr(0) . pack('n', 32) . pack('H*', $push_token) . pack('n', strlen($payload)) . $payload . pack('n', strlen($passIdentify)) . $passIdentify;  

        $streamContext = stream_context_create();  

        stream_context_set_option($streamContext, 'ssl', 'cafile', base_path().'/path/to/entrust_2048_ca.cer');  
        stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);  
        stream_context_set_option($streamContext, 'ssl', 'passphrase', 'export_password');  

        $apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);  

        fwrite($apns, $msg);  
        PushNotifications::checkAppleErrorResponse($apns);// Just created a class to read response from apn server  
        @socket_close($apns);  
        fclose($apns);  

任何有助于进一步调试的帮助都会非常感激。调试我的证书的东西?注意:我的 API 端点仅出于测试目的在 http 协议上提供,将它们更新为 https 协议。我已在设备上启用 HTTP 服务以安装 pass on passbook。

============ 更新 ============== 以下是生成我的证书的步骤。

  1. 首先,我使用 CSR 请求和我的密钥下载了我的 Pass Type Id 证书(.cer)。
  2. 然后使用 Mac 上的钥匙串访问将证书导出到.p12在创建时签署优惠券所需的扩展。该优惠券已成功安装在设备上。
  3. 然后我将其转换.p12.pem在上面的代码中用于连接推送服务器。使用命令;

    openssl pkcs12 -in path.p12 -out newfile.pem

如果我的证书生成有任何问题,请指出。

4

0 回答 0