无法在 .NET 中向 iPhone 推送通知 - .PEM 证书问题?

Posted

技术标签:

【中文标题】无法在 .NET 中向 iPhone 推送通知 - .PEM 证书问题?【英文标题】:Unable to push notifications to iPhone in .NET - .PEM certificate problem? 【发布时间】:2009-08-10 15:16:06 【问题描述】:

我正在尝试将通知推送到我的 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 文件,但我仍然遇到同样的问题。

知道如何解决这个(可能的证书)问题吗?

【问题讨论】:

【参考方案1】:

这实际上是 .NET 2.0 的一个问题。不确定它到底是什么,但我在 Visual Studio 2008 中编译,一切都很好。

【讨论】:

以上是关于无法在 .NET 中向 iPhone 推送通知 - .PEM 证书问题?的主要内容,如果未能解决你的问题,请参考以下文章

iphone推送通知问题

在 PHP 中向特定用户推送通知

在 asp.net c# 中创建 iPhone 推送通知 Web 服务

无法在 iphone 4s 设备上获得推送通知

在Objective C(iOS)中向远程推送通知添加消息

如何在一个请求中向多个设备(iOS)发送推送通知?