2013-11-28 53 views
1

我可以使用Push Sharp通過沙箱APNS服務器成功地將通知發送到我的iPhone設備,但我遇到了問題。PushSharp APNS服務在Windows關機後停止工作

我已生成.cer和.p12文件,然後將它們成功安裝到我的Windows 8開發機器上。

我用this教程在我的windows 8機器上安裝證書。

昨天的事情工作正常,我正在發送通知成功。關閉我的系統,然後第二天,當我嘗試運行我得到以下異常代碼:

消息是意外或格式pushsharp

我試着在谷歌,但沒有提供不同的解決方案幫助。然後,我從我的機器上刪除證書,然後重新安裝它們,並且事情再次開始工作。

爲了保證服務的安全,我關閉了系統,檢查通知發送是否失敗,是的,它再次失敗,出現同樣的異常。

我再次刪除證書並重新安裝它們以糾正問題。我不知道真正的問題是什麼?是什麼讓PUSHSharp在關機後停止發送通知。

注意:Windows防火牆已禁用。 有什麼想法?

回答

1

過去幾周我一直在使用PushSharp,並沒有遇到這個問題。但是我的環境是Windows 7。在iPhone Developer Program Portal中創建適當的推送通知證書後,您應該已經下載了一個名爲apn_developer_identity.cer的文件。如果你還沒有這樣做,你應該打開/導入這個文件到鑰匙串,進入你的登錄部分。

最後,如果您過濾鑰匙串以顯示您的登錄容器的證書,您應該看到您的證書列出。展開證書,並在其下面/附加一個密鑰。

右鍵單擊或Ctrl +單擊相應的證書並選擇導出。鑰匙串會要求您選擇一個密碼導出。挑一個並記住它。你應該得到一個.p12文件。您需要此文件和您選擇的密碼才能在此處使用通知和反饋庫。

certSigningRequest OpenSSL的

下面是如何使用開放SSL,你需要你的開發私有密鑰(這可以從鑰匙串導出)和CertificateSigningRequest ??創建一個PKCS12格式的文件。

  1. 轉換apn_developer_identity.cer(DER格式)PEM: OpenSSL的X​​509 -in apn_developer_identity.cer -inform DER -out apn_developer_identity.pem -outform PEM}

  2. 接下來,將p12私鑰轉換爲pem(要求輸入至少4個字符的密碼): openssl pkcs12 -nocerts -out private_dev_key.pem -in private_dev_key。P12

  3. (可選):如果你想從私有密鑰刪除密碼: OpenSSL的RSA退房手續private_key_noenc.pem -in private_key.pem

  4. 拿證書和密鑰(有或無密碼),並創建一個PKCS#12格式文件: OpenSSL的PKCS12 -export -in apn_developer_identity.pem -inkey private_key_noenc.pem -CertFile CertificateSigningRequest ?? certSigningRequest -name 「apn_developer_identity」 -out apn_developer_identity.p12

一旦你生成th e p12文件使用這些步驟,您並不需要將其捕捉到控制檯。您只需要對代碼進行如下更改:

var appleCert = File.ReadAllBytes("C:/Certificate/aps_dev_identity.p12"); 

希望這有助於您。

+0

需要與我的iPhone開發人員檢查一下。 –

+0

此問題必須在ApplePushChannelSettings.cs中的SkilSsl屬性中執行。將此屬性更改爲true時,不會在ApplePushChannel中創建Ssl Stream(請參閱ApplePushChannel.cs中的516行)。 我不知道創建一個安全流時出了什麼問題,你能給我一些提示嗎?另外,將SkilSsl更改爲true可以解決問題,但在異常發生後運行反饋服務​​時: 「消息意外或格式錯誤」。 你能解釋多一點嗎? –

0

我一直在努力MOON APNS 2012年以來,它的工作很好,但是從最近幾天我收到以下錯誤消息

錯誤消息:System.Security.Authentication.AuthenticationException:呼籲SSPI失敗,請參見內部異常。

System.ComponentModel.Win32Exception:接收的信息是 意外或格式

解決方案:在PushNotification.cs文件替換

_apnsStream.AuthenticateAsClient(host, certificates, System.Security.Authentication.SslProtocols.Ssl3, false); 

_apnsStream.AuthenticateAsClient(host, certificates, System.Security.Authentication.SslProtocols.Tls, false); 

如,我沒有從蘋果方面找到任何確認,但從github.com我找到了解決方案,這對我們是有用的。

這似乎是蘋果dep'ate「不安全」協議的SSL。

0

首先檢查是否可以先使用C#代碼(如this one)進行通知,然後再擔心安裝。當我試圖執行代碼時,我有同樣的信息,我不關心安裝,並通過確保我使用.p12類型的證書而不是.pem並確保.p12具有一個密碼。我現在可以通過我的電腦中的控制檯C#應用程序向我的iPhone發送通知。