【问题标题】:Azure Notifications to WP and iOSWP 和 iOS 的 Azure 通知
【发布时间】: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


【解决方案1】:

如果发布的代码作为普通控制台应用程序运行,那么我们应该等待任务完成。最简单的方法是删除 await 并针对 xAsync() 方法返回的 Task 对象调用 Wait():

NotificationHelper.Instance.Hub.SendMpnsNativeNotificationAsync(toast, userTag).Wait();
NotificationHelper.Instance.Hub.SendAppleNativeNotificationAsync(appleToast, userTag).Wait();

【讨论】:

  • 我在没有'await'关键字的情况下运行了这个,但没有使用.Wait()。它解决了我的问题。
  • 查看我对问题本身的评论——这听起来像是主线程刚刚退出。
猜你喜欢
  • 1970-01-01
  • 2021-08-03
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多