我最近在应用程序中实现了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密钥
除了使用api密钥之外的其他所有密钥。
非常感谢任何帮助。
答案 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用户有帮助。