2014-11-06 4 views
3

웹 서비스와 Windows 서비스에서 Apple 알림 용으로 PushSharp를 사용하고 있습니다.PushSharp GCM "인증 실패"

Google GCM 코드를 추가하면 내 웹 서비스와 콘솔 앱에서 완벽하게 작동하지만 서비스를 변환했지만 Windows 서버에서 동일한 서버 (Amazon EC2 인스턴스)에서 실행하더라도 비참하게 실패합니다.

다음 코드는 GCM 알림에 대해 '인증 실패'오류를 나타내며 Apple 알림에 오류가 없습니다. 그러나 동일한 웹 서비스 나 동일한 서버의 콘솔 앱에서 동일한 코드를 실행하면 정상적으로 작동합니다.

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 서비스 및 웹 서비스 모두에서 완벽하게 작동합니다.

내가 뭘 잘못하고 있는지 알 수 있습니까? 방화벽 문제가 아닙니다. 나는 방화벽을 끄고 여전히 작동하지 않았다. 나는 다른 많은 코드를 가지고 있었고 숨겨진 문제가 없는지 위의 코드로 분류했습니다.

EDIT. Windows 서비스에서 코드를 복사하는 콘솔 앱을 설정하고 서버 API 키 대신 브라우저 API 키를 사용했습니다.

내 로컬 컴퓨터와 서버 컴퓨터에서 완벽하게 작동합니다. 그러나 Windows 서비스는 여전히 내가 사용하는 API 키 중 어느 것과 동일한 오류를 가져옵니다.

업데이트 : Windows 서비스가 오류를 수신하더라도 실제로는 두 가지 알림을 보낸 다음 더 이상 알림을 보내지 않습니다. 서비스를 중지하고 다시 시작하면 알림 오류가 계속 반환되는 경우에도 알림이 두 번 추가됩니다.

정말 붙어 있습니다. 이제 콘솔 앱을 계속 실행할 수는 있지만 완벽하지는 않습니다. 어떤 도움이라도 감사하게 받아 들여질 것입니다.

+0

동일한 문제가 발생합니다. Apple 푸시 알림은 GCM 측에서 서비스로 제대로 작동하지만 GCM 측에서는 제대로 작동하지 않습니다. 아직 어떤 해결책이 있습니까? –

+0

전화하기 전에 서비스가 아직 등록되지 않은 타이밍 문제라고 생각하십니까? QueueNotification. 나는 wait 문장을 추가하여 이것을 결정하려고 생각하고있다. –

+0

훌륭한 생각이지만 서비스가 시작된 후 약 5 분이 지나야 푸시 큐 (DB 저장 알림)에 아무 것도 추가하지 않기 때문에 확신하지 못했습니다. 위의 코드는 단순화 된 것입니다. Mu 코드는 실제로 5 분 이상 30 초 미만이라고 말할 때까지 QueueNotification을 호출하지 않습니다. – grayson

답변

0

비슷한 문제가있었습니다. Visual Studio에서는 문제가 없었지만 프로덕션 서버에서는 AndroidGcm 인증에 실패했습니다.

나는 '서버 애플리케이션 용 키'의 IP 목록과 관련이 있다고 생각하여 서버의 IP 주소로 재생성을 시도했습니다. 이것은 작동하지 않았다.

는 결국 위의 의견 중 하나와 다른 스레드에 대한 응답으로 다른 곳에서 나는 서버에서 개발자 콘솔 는 Google Play에 로그온하고 IP 주소를 지정하지 않고 새로운 키, 를 만들었습니다.

이 키를 사용하여 내 문제를 해결했습니다.