【发布时间】:2015-03-03 06:50:39
【问题描述】:
我的应用使用 Azure 通知中心向 Windows Phone 和 iOS 设备发送消息。问题是如果一个被调用,它们就可以工作,但如果两个都被调用,它就不起作用。
例如,如果我从 iOS 模拟器向 iOS 设备发送消息,则以下代码可以正常工作并显示通知。
var toast = PrepareMpnsToastPayload("myapp", notificationText);
var appleToast = PrepareAppleToastPayload("myapp", notificationText);
//await NotificationHelper.Instance.Hub.SendMpnsNativeNotificationAsync(toast, userTag);
await NotificationHelper.Instance.Hub.SendAppleNativeNotificationAsync(appleToast, userTag);
但是,如果我取消注释 SendMpns..() 行,通知将永远不会到达苹果设备。使用远程调试单步执行此代码时,对 SendMpns..() 的调用似乎没有返回。我越过它,它就恢复了......并且它下面的 SendApple..() 调用上的断点永远不会被击中。
这与 Windows Phone Mpns 线路相同(没有苹果调用也可以正常工作)。
当我不知道用户使用什么设备时,我应该如何向他们发送警报?我只想将通知发送给所有类型。任何指针将不胜感激。
编辑:以下删除 await() 的答案确实有效。但是,由于我现在已经验证了通知中心,因此我需要捕获调用的返回值,以便查看是否需要获取另一个身份验证令牌(如果它已过期)!
【问题讨论】:
-
您能否提供您的示例的完整列表,包括 Main() 函数?
-
你试过去掉等待吗?
-
如果 remove 等待,则在返回的 Task 对象上调用 Wait()。这就是我询问完整列表的原因。
-
感谢大家成功!如果您将此设置为答案,我可以接受它
-
实际问题听起来像是控制台应用程序的异步线程问题。我怀疑您正在从 Main 方法调用 async void 方法。这将导致该方法中的第一个 await 被执行,但 Main 将继续而不等待辅助方法的结果。这意味着您的应用程序可以在不运行第二条语句的情况下退出。有关更多信息,请参阅此线程:stackoverflow.com/questions/9208921/…
标签: azure push-notification xamarin azure-mobile-services azure-notificationhub