苹果推送证书在特定服务器上不起作用

问题描述:

我有一个iOS应用,自从昨天发布测试版,但自今天以来,通过Apple生产服务器发送的推送消息似乎没有到达用户的手机。我在Apple开发人员中心重新创建了证书,在我的本地服务器上对其进行了测试,并确认新证书正在运行。苹果推送证书在特定服务器上不起作用

然后我部署新的证书我活的服务器,但我不断收到此错误信息:

stream_socket_client(): unable to connect to ssl://gateway.push.apple.com:2195 (Connection refused) 

我确信,我真的上传新的证书,但即使我重新活的服务器WASN没有帮助。

我上传了我的项目到另一个在线服务器(Google Cloud Instance),以验证证书是否只在我的本地服务器上工作,或者它只是我的实时服务器无法正常工作,而Google live服务器将推送消息传递到设备而不会出现错误消息。

因此,看起来我的默认活动服务器是生产推送消息不起作用的唯一服务器。顺便提一下,随开发证书一起发送的推送从每台服务器成功发送。

为什么我无法从该特定服务器发送推送消息?有人有任何想法吗?

您必须检查是否可以从您的服务器发送推送通知。这意味着端口2195应该在您的服务器上打开以执行相同的操作。由于技术/安全原因,大多数托管公司阻止该端口,如果可以,可以要求他们打开它。

您可以通过使用telnet并指定要连接到哪个端口来确认您的服务器是否已打开。在命令行中运行:

MyServer:~ Home$ telnet gateway.sandbox.push.apple.com 2195 
Trying 17.149.34.143... 
Connected to gateway.sandbox.push-apple.com.akadns.net. 
Escape character is '^]'. 

如果没有连接那么它会挂,而不是返回一个错误 - 上面显示的工作示例在那里我可以连接。

您需要通过SSH登录到您的托管服务才能以此方式进行测试,但不幸的是,您无法在共享主机上测试它,而无需购买VPS托管帐户 - 因此您可能不得不依赖询问他们的客户服务。

注意:但是分享了托管HostGator的Dreamhost的是工作,你可以与他们的支持团队聊天在购买前。

+0

感谢您的回复!幸运的是我已经有ssh访问我的服务器。我尝试按照您的建议连接到沙箱推送服务器,并且连接成功。但是,当我尝试连接到'生产'推送服务器(telnet gateway.push.apple.com 2195)时,我收到了'telnet:无法连接到远程主机:连接被拒绝'的消息(大约10秒钟后)。为什么我无法连接到推送生产服务器? –

+0

您必须使用生产证书才能连接到生产推送。所以尝试使用生产证书,它肯定会起作用。 –

+0

我正在使用生产证书,我很确定。由于某种奇怪的原因,我无法连接到苹果的生产推送服务器从我的默认主机(我可以连接到它之前,推送消息工作较早)。它几乎看起来像苹果已经阻止我的特定服务器连接到他们的生产推送服务器,但这是不可能的,是吗? –