我正在尝试将通知推送到我的 iPhone,我已经使用 PHP 成功完成了。但是,我无法使用 C# 打开与 Apple 推送服务器的套接字连接。我认为证书本身没有问题,因为我能够在 PHP 中使用以下代码成功推送通知:
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'cert.pem');
$fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
fwrite($fp, $msg);
当我尝试使用下面的代码在 C# 中进行身份验证时,Apple 会立即关闭连接。我得到这个异常:“无法从传输连接读取数据:现有连接被远程主机强行关闭。”
sslStream.AuthenticateAsClient(hostname, certificatesCollection, SslProtocols.Default, false);
我基本上从这个问题中获取了所有代码:C# iPhone push server?
我认为这可能是证书的问题,因为我认为 C# 不允许您仅以编程方式加载 .PEM 文件。我使用 OpenSSL 将其转换为 .PFX 文件,但我仍然遇到同样的问题。
知道如何解决这个(可能的证书)问题吗?