【问题标题】:Handling Remote Notifications with UIApplicationDelegate.DidReceiveRemoteNotification in Xamarin iOS Application在 Xamarin iOS 应用程序中使用 UIApplicationDelegate.DidReceiveRemoteNotification 处理远程通知
【发布时间】:2014-03-05 13:35:00
【问题描述】:

我有一个配置为接收远程通知的 Xamarin iOS 应用程序。当设备接收到远程通知时,远程通知处理程序未按预期执行。

DidReceiveRemoteNotification 的实现包括对应用程序的引用、通知用户信息字典和以适当的 UIBackgroundFetchResult 状态执行的完成处理程序。

    public override void DidReceiveRemoteNotification (UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
    {
        // retrieve something from a server somewhere
    }

根据 Apple 的 iOS 开发人员文档,“application:didReceiveRemoteNotification:fetchCompletionHandler”的实现将在向用户显示远程通知后执行。

这包括应用程序何时处于运行状态、后台状态以及“未运行”状态。收到通知应启动应用程序,然后在调用此方法之前将其置于后台状态。

参考: https://developer.apple.com/library/ios/documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html#jumpTo_12

在我的设备上运行时,远程通知已成功传递。但是,当在 XCode Organizer 中跟踪设备的控制台日志时,该应用程序永远不会启动,并且“DidReceiveRemoteNotification”方法永远不会执行。

我做了以下事情:

  • 在应用程序的 plist 文件中选中“启用后台模式”并启用“后台获取”和“远程通知”。
  • 在我的应用程序委托中实现了 DidReceiveRemoteNotification(UIApplication, NSDictionary, Action)。
  • 确保将发送到 APN 的通知配置为标准通知 - 即不是静默通知。
  • 在以不同状态(前台、后台、未运行等)运行应用程序时向我的设备发送测试远程通知。

如果这个线程是正确的,这看起来像是 Xamarin 实现中的一个问题,但我希望其他人之前遇到过这个问题并且可以确认或提供其他信息。 http://forums.xamarin.com/discussion/8765/handling-silent-remote-notifications

【问题讨论】:

    标签: c# ios xamarin.ios xamarin


    【解决方案1】:

    AFAIK, DidReceiveRemoteNotification 将在您的应用正在运行并且设备收到您的应用的推送通知时被调用。

    当您的应用从推送通知启动时(即它之前没有运行),您应该阅读didFinishLaunching 事件中的AppDelegates launchOptions 字典。

    有关更多信息,请阅读UIApplicationLaunchOptionsRemoteNotificationKey 键是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-25
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      相关资源
      最近更新 更多