我一直在web服務和Windows服務中使用PushSharp for Apple通知一段時間,沒有任何問題。PushSharp GCM「身份驗證失敗」
在爲Google GCM添加代碼時,它在我的Web服務和我轉換服務的控制檯應用程序上工作得很好,但即使在同一臺服務器上運行,它也無法在Windows服務中失敗(Amazon EC2實例)
以下代碼給出GCM通知的「驗證失敗」錯誤,並且Apple通知沒有錯誤。但是,如果我在我的Web服務或同一臺服務器上的控制檯應用程序中運行相同的代碼,則它工作正常。
Dim push As PushBroker = New PushBroker
Try
AddHandler push.OnNotificationSent, AddressOf NotificationSent
AddHandler push.OnNotificationFailed, AddressOf NotificationFailed
Dim appleCert = File.ReadAllBytes("FILENAME")
push.RegisterAppleService(New ApplePushChannelSettings(False, appleCert, "PASSWORD"))
push.RegisterGcmService(New GcmPushChannelSettings("API_KEY"))
push.QueueNotification(New GcmNotification().ForDeviceRegistrationId("ANDROID-TOKEN").WithJson("{""alert"":""Hello World!"",""badge"":1,""sound"":""sound.caf""}"))
push.QueueNotification(New AppleNotification().ForDeviceToken("IOS-TOKEN").WithContentAvailable(1))
Catch ex As Exception
End Try
如果我刪除行:
push.QueueNotification(New GcmNotification().ForDeviceRegistrationId("ANDROID-TOKEN").WithJson("{""alert"":""Hello World!"",""badge"":1,""sound"":""sound.caf""}"))
它完美的Windows服務和Web服務並重。
任何人都可以看到我做錯了什麼?這不是防火牆問題。我關掉了防火牆,但仍然無法工作。我有很多其他的代碼,並將其解釋爲上面的代碼,以確保沒有隱藏的問題。
編輯。我設置了一個控制檯應用程序,從Windows服務複製代碼並使用瀏覽器API密鑰而不是服務器API密鑰。
這對我的本地計算機和服務器計算機都是完美的。但是,無論使用哪個API密鑰,Windows服務仍會得到相同的錯誤。
更新:儘管Windows服務正在接收錯誤,但它確實發送了兩個通知,但沒有更多。如果我停止服務並再次啓動它,即使通知錯誤仍在返回,我仍會收到另外兩個通知。
我真的被卡住了。我現在可以連續運行控制檯應用程序,但它並不完美。任何幫助將受到感謝。
我收到了類似的問題。 Apple推送通知作爲服務正常工作,但不是GCM端。任何解決方案呢? – 2014-11-22 19:15:44
您是否認爲在調用QueueNotification之前服務尚未註冊的時間問題?我正在考慮添加等待語句來試圖確定這一點。 – 2014-11-22 19:17:17
一個很好的想法,但我不確定,因爲我沒有添加任何東西到我的推隊列(數據庫存儲通知),直到服務啓動後大約5分鐘。上面的代碼是一個簡化。 Mu代碼實際上並沒有調用QueueNotification,直到我說5分鐘而不少於30秒。 – grayson 2014-11-23 20:31:29