apns-csharp 证书问题

Posted

技术标签:

【中文标题】apns-csharp 证书问题【英文标题】:apns-csharp certificate trouble 【发布时间】:2010-10-17 23:17:31 【问题描述】:

我尝试使用 apns-csharp 库从 .NET 发送推送通知,我在 Apple Provision Portal 上创建了证书,下载它并转换为 p12 格式,当我尝试使用代码加载它时:

private ActionResult SendAlertPushNotification(string appId, string notificationContent, bool useSandBox)
        
            NotificationService notificationService = new NotificationService(useSandBox,ApplicationsRepository.GetAPNSCertificateForApplication(appId,useSandBox),"123",1);
            notificationService.ReconnectDelay = 2000;
            notificationService.Error += new NotificationService.OnError(service_Error);
            notificationService.NotificationTooLong += new NotificationService.OnNotificationTooLong(service_NotificationTooLong);

            notificationService.BadDeviceToken += new NotificationService.OnBadDeviceToken(service_BadDeviceToken);
            notificationService.NotificationFailed += new NotificationService.OnNotificationFailed(service_NotificationFailed);
            notificationService.NotificationSuccess += new NotificationService.OnNotificationSuccess(service_NotificationSuccess);
            notificationService.Connecting += new NotificationService.OnConnecting(service_Connecting);
            notificationService.Connected += new NotificationService.OnConnected(service_Connected);
            notificationService.Disconnected += new NotificationService.OnDisconnected(service_Disconnected);
            var devices = ApplicationsRepository.GetPushClientDevicesID(appId);
            foreach (var token in devices)
            
                var notification = new Notification(token);
                notification.Payload.Alert.Body = notificationContent;
                notification.Payload.Sound = "default";
                notification.Payload.Badge = 1;
                //Queue the notification to be sent
                if (notificationService.QueueNotification(notification))
                    Debug.WriteLine("Notification Queued!");
                else
                    Debug.WriteLine("Notification Failed to be Queued!");
            
            notificationService.Close();
            ViewData["app"] = ApplicationsRepository.GetApplicationByAppId(appId);
            ViewData["count"] = devices.Count;
            return View("SendSuccess");
        

我在尝试加载证书时收到内部错误。如果我使用 .cer 格式的原始证书,我不会收到任何异常,但实际上没有任何内容发送到 APNS 服务器。有人遇到过这个问题吗?

【问题讨论】:

【参考方案1】:

确保您已导出正确的证书。最近遇到类似的问题才发现导出错了。

OSX 钥匙串 创建完之后 适当的推送通知 iPhone 开发者证书 您应该拥有的程序门户 下载了一个类似的文件 apn_developer_identity.cer。如果你 还没有这样做,你应该 打开/将此文件导入钥匙串, 进入您的登录部分。

最后,如果您将 Keychain 过滤为 显示您的登录容器 证书,你应该看到你的 列出的证书。展开 证书,并且应该有一个Key 在下面/附在它上面。

右键单击或 Ctrl+单击 适当的证书并选择 出口。钥匙串会要求你 选择要导出到的密码。挑选 一个并记住它。你应该结束 带有 .p12 文件。你会需要这个 文件和您选择的密码 使用通知和反馈 图书馆在这里。

来源How To Create a PKCS12 Certificate

我相信你现在已经以某种方式解决了这个问题,但是我自己刚刚经历过这个,我认为把我的经历写下来可能会很好。 p>

【讨论】:

谢谢@ashansky - 我花了一段时间才弄清楚如何做到这一点 - 你的方向是正确的。

以上是关于apns-csharp 证书问题的主要内容,如果未能解决你的问题,请参考以下文章

SSL证书问题:证书链中的自签名证书

SSL证书出了啥问题?

iOS多人开发中的证书问题

Chrome浏览网页证书问题

OpenSSL解决ArcGIS软件部署的证书问题(三)--ArcGIS绑定证书

问题记录fiddler安装https证书报错“无法安装该证书,因为无法读取证书文件。”