PushSharp GCM"身份验证失败"

时间:2014-11-06 04:17:40

标签: asp.net push-notification pushsharp

我一直在Web服务和Windows服务中使用PushSharp进行Apple通知一段时间没有任何问题。

在添加Google GCM的代码时,它在我的网络服务和我将服务转换为的控制台应用程序上完美运行,但即使在同一台服务器(Amazon EC2实例)上运行,它也无法在Windows服务中失败< / p>

以下代码为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服务上都能很好地工作。

谁能看到我做错了什么?这不是防火墙问题。我关闭了防火墙,它仍然无法正常工作。我有很多其他代码,并将其提炼到上面的代码,以确保没有隐藏的问题。

EDIT。我设置了一个控制台应用程序,从Windows服务复制代码,并使用浏览器API密钥而不是服务器API密钥。

这适用于我的本地计算机和服务器计算机。但是,无论我使用哪个API密钥,Windows服务仍会出现相同的错误。

更新:虽然Windows服务收到错误,但它实际上发送了两个通知,然后不再发送。如果我停止服务并再次启动它,即使仍然返回通知错误,我还会收到另外两个通知。

我真的被困住了。我现在可以继续运行控制台应用程序,但它几乎不完美。我们将非常感激地提供任何帮助。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题 - 在Visual Studio中一切正常但在生产服务器上AndroidGcm身份验证失败。

我认为这与服务器应用程序的密钥中的IP列表有关&#39;所以我尝试用我的服务器的IP地址重新生成一个。这没用。

最后,在回复上述评论之一和其他地方的其他帖子后,我从服务器登录了Google Play开发者控制台并创建了一个新密钥,没有指定任何IP地址。

使用此密钥然后解决了我的问题