PushSharp GCM消息传递

时间:2015-02-11 03:32:55

标签: c# android google-cloud-messaging pushsharp

我最近在应用程序中实现了PushSharp,但就我而言,我无法弄清楚为什么通知没有出现在设备上。

以下是一个用于测试行为的方法:

private void SendPushNotification()
{
    var push = new PushBroker();

    //Wire up the events for all the services that the broker registers
    push.OnNotificationSent += NotificationSent;
    push.OnChannelException += ChannelException;
    push.OnServiceException += ServiceException;
    push.OnNotificationFailed += NotificationFailed;
    push.OnDeviceSubscriptionExpired += DeviceSubscriptionExpired;
    push.OnDeviceSubscriptionChanged += DeviceSubscriptionChanged;
    push.OnChannelCreated += ChannelCreated;
    push.OnChannelDestroyed += ChannelDestroyed;

    push.RegisterGcmService(new GcmPushChannelSettings("My-API-Key-here"));

    push.QueueNotification(new GcmNotification().ForDeviceRegistrationId("MyReallyLongRegisteredDeviceKeyHere")
              .WithJson(@"{""alert"":""Hello World!"",""badge"":7,""sound"":""sound.caf""}"));


    //Stop and wait for the queues to drains
    push.StopAllServices();
}

这个方法在应用程序启动后立即调用,所以我希望我能立即收到通知,但我不会这样做。

还有一个奇怪的是调用了事件OnNotificationSent,这表明消息已经通过。

我需要配置什么才能使其正常工作?文档说明发送通知需要发件人ID,包名称和API密钥

https://github.com/Redth/PushSharp/wiki/How-to-Configure-&-Send-GCM-Google-Cloud-Messaging-Push-Notifications-using-PushSharp#setting-up-pushsharp-to-send-notifications

除了使用api密钥之外的其他所有密钥。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

根据我的经验,我在过去两年中曾三次面对这个问题:)

第一次:我必须重新生成一个新的GCM API密钥,使用它并且它可以工作。

第二次:第一个解决方案没有工作,我检查了android开发人员,仔细检查了他的代码,结果证明他的代码有问题。

第三次:问题出在设备上,我不得不重启设备,之后立即收到通知。

答案 1 :(得分:0)

尝试使用消息而不是警告。

.WithJson(@"{""message"":""Hello World!"",""badge"":7,""sound"":""sound.caf""}"));

在我的情况下,服务(就像你的那样)正在发送警报但客户端设备正在收到消息。

此致

答案 2 :(得分:0)

对于PushSharp 4.0,你可以这样做

var config = new GcmConfiguration("senderKey", "apiKey", null);
config.GcmUrl = "https://fcm.googleapis.com/fcm/send"; //!!!!!gmc changed to fcm;)

var gcmBroker = new GcmServiceBroker(config);
gcmBroker.Start();

_gcmBroker.QueueNotification(new GcmNotification
                {
                    RegistrationIds = new List<string> { "YourDeviceToken" },
                    Notification = JObject.Parse(
                        "{" +
                            "\"title\" : \"" + yourMessageTitle + "\"," +
                            "\"body\" : \"" + yourMessageBody + "\"," +
                            "\"sound\" : \"mySound.caf\"" +
                        "}") ,
                    Data = JObject.Parse(
                        "{" +                            
                            "\"CustomDataKey1\" : \"" + yourCustomDataValue1 + "\"," +
                            "\"CustomDataKey2\" : \"" + yourCustomDataValue2 + "\"" +
                        "}")
                });

我没有测试自定义数据值是否到达但是通知确实:)以“你的”开头的项目是你的动态参数,比如传递给那个方法的参数等。问题很久以前问了但是我开始了刚刚使用pushsharp :)希望这对PushSharp用户有帮助。