使用C# Push Sharp库进行推送通知在生产服务器上无法正常工作

3
生成证书之后,我只在钥匙串中导出了私钥(没有导出证书),以.p12格式导出并使用该文件,但它不起作用。我只导出了证书并以.p12格式导出并使用该文件,但它也不起作用。
异常信息为:
您选择了生产服务器,但您的证书似乎不是生产证书!请检查确保您使用了正确的证书!
如果我使用相同的.p12文件使用MoonAPNS库,则可以正常工作,但是使用PUSHSHarp库时就不行。我仅将PUSHSharp库用于静默通知。
1个回答

11

苹果推出了一个新的统一推送通知证书,适用于沙盒和生产服务器。这个新证书的Subject Name有所不同(以前它包含Apple Production IOS Push ServicesApple Development IOS Push Services,现在包含Apple Push Services)。

PushSharp 2.x不知道这种新格式,仍然期望验证旧的Subject Names,因此它认为您的证书是无效的。

推荐使用PushSharp 3.x(目前可以在NuGet上预发布),它可以正确验证新类型的证书。我建议升级到3.x版本(当然这涉及一些API更改)。

如果您仍然坚持使用PushSharp 2.x,可以在ApplePushChannelSettings类的构造函数中将disableCertificateCheck参数设置为true,以覆盖证书验证。


1
ApplePushChannelSettings中将disableCertificateCheck设置为true可以避免异常,但通知仍未发送。证书在我的Mac上经过验证和测试,但PushSharp似乎不再处理它。 - andreas
请确保如果您的设备令牌是由使用AdHoc或AppStore预配配置文件生成的构建生成的,则要告诉PushSharp连接到生产服务器(否则,如果使用开发预配配置文件生成的构建生成设备令牌,请确保告诉它沙盒)。 - Redth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接