当应用被杀死而不在IOS的后台运行时如何获取通知有效载荷

时间:2019-02-07 05:26:21

标签: ios swift uilocalnotification

我有一个问题。当您从通知中打开应用程序时,即使该应用程序未在后台运行,是否也可以获得通知主体。它被完全杀死了。

2 个答案:

答案 0 :(得分:1)

您需要根据收到应用时所处状态的不同来处理通知:

如果您的应用未运行,并且用户通过点击推送通知来启动应用,则推送通知会通过application(_:didFinishLaunchingWithOptions:)的launchOptions传递给您的应用。

如果您的应用程序在前台或后台运行,则系统会通过调用application(_:didReceiveRemoteNotification:fetchCompletionHandler:)来通知您的应用程序。如果用户通过点击推送通知打开应用,iOS可能会再次调用此方法,因此您可以更新UI并显示相关信息。

在return语句之前,在application(_:didFinishLaunchingWithOptions:)的末尾添加以下代码:

// Check if launched from notification
let notificationOption = launchOptions?[.remoteNotification]

// 1
if let notification = notificationOption as? [String: AnyObject],
  let aps = notification["aps"] as? [String: AnyObject] {

  // 2
  print(aps)

}

要处理接收推送通知的另一种情况,请将以下方法添加到AppDelegate:

func application(
  _ application: UIApplication,
  didReceiveRemoteNotification userInfo: [AnyHashable: Any],
  fetchCompletionHandler completionHandler:
  @escaping (UIBackgroundFetchResult) -> Void
) {
  guard let aps = userInfo["aps"] as? [String: AnyObject] else {
    completionHandler(.failed)
    return
  }
  print(aps)
}

答案 1 :(得分:0)

您应该遵循以下步骤

1-)在您的AppDelegate中,添加到以下代码段中

{"aps":{"alert":"Testing.. (40)","content-available":1,"badge":1,"sound":"default"}}

2-)Sign&Capability->后台模式,允许 Allow Background Modes

3-)“内容可用”:1,添加到您的有效载荷中。

{{1}}