php - 从 PHP 与 APNS 通信

标签 php ssl apple-push-notifications private-key

我想通过 PHP 脚本与 Apple 推送通知服务通信。 但我不断收到以下错误:

Warning: stream_socket_client(): Unable to set private key file

我有一个 .pem 文件,看起来像这样:

-----BEGIN CERTIFICATE-----
     Encrypted String
-----END CERTIFICATE-----
     Bag Attributes
     friendlyName: ...
     localKeyID: ...
     Key Attributes: ...
-----BEGIN RSA PRIVATE KEY-----
     Proc-Type: ...
     DEK-Info: ...

     Encrypted String
-----END RSA PRIVATE KEY-----

我正在通过 sudo 运行 PHP 脚本。它可以找到我的 .pem 文件,因为如果我删除它,我会得到一个“handshake failure”错误。

这里可能出了什么问题?

最佳答案

我最近制作了一个发送远程推送通知的脚本。 我是这样做的:

  $message = "A cool message!";
  $deviceid = "";

  $count = 0;

  $ctx = stream_context_create();
  stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-dev.pem'); 

  $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);

  if (!$fp) {
     echo 'Failed to connect ' . $err . $errstr;
  } else {

     $payloads['aps'] = array('alert' => $message, 'badge' => 1, 'sound' => 'default');
     $payload = json_encode($payloads);

     $msg = chr(0) . pack('n',32) . pack('H*', $deviceid) . pack('n',strlen($payload)) . $payload;
     fwrite($fp, $msg);
     $count += 1;
     fclose($fp);

  }   

  echo 'Sended: ' . $count;

关于php - 从 PHP 与 APNS 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14853590/

相关文章:

amazon-web-services - 在 AWS Lightsail 上使用 SSL 托管多个域

Apache 不会加载证书

ios - 发送通用推送通知 - Xcode

当应用程序处于后台时,iOS 推送通知不起作用

php - mysql 选择一个列作为另一个列名,该列将具有全文索引

javascript - Ajax 不清除表单字段

php - 如何使用 HTML 5 从 Torrent 流式传输视频?

javascript - 如何将javascript返回的值从 View 传递到laravel中的 Controller

python - 编程 https 代理卡住了 - 下一步该怎么做?

azure - Xamarin.iOS 无法在 iOS 13.1.2 中向 Azure 通知中心注册