应用程序终止时iOS 10推送通知?

时间:2016-11-03 10:44:47

标签: apple-push-notifications swift3 ios10

升级到iOS 10后,我遇到了关于推送通知的问题(我使用的是Swift3)。

正常情况下,当应用程序打开或应用程序仍处于后台时,一切都可以正常工作(可以接收推送通知并更新数据作为我的逻辑)。

但是当应用程序终止时,我无法在应用程序变为活动状态时处理推送通知。

这是我的测试用例。

  1. 编辑方案以等待可执行文件启动。
  2. 双击主页按钮并向上滑动应用程序。
  3. 运行Xcode,等待"等待应用程序启动"所示。
  4. 测试从服务器发送推送通知。
  5. 设备收到推送通知。
  6. 从应用程序图标启动应用程序。
  7. 在应用程序启动之后, didFinishLaunchingWithOptions被调用但是launchOptions远离空所以我无法处理推送通知(但是如果我从通知中心的通知中打开应用程序或弹出通知,则launchOptions不为null )

    有人有任何想法检查这个问题吗?

    提前谢谢。

2 个答案:

答案 0 :(得分:0)

您需要通过点击通知栏中的推送通知来打开该应用程序。

从图标启动应用程序时,launchOptions将为零。从推送通知启动将为您提供launchOptions。

https://developer.apple.com/reference/uikit/uiapplicationdelegate/1622921-application

答案 1 :(得分:-1)

试试这个:

在AppDelegate上添加委托。

UNUserNotificationCenterDelegate

和..

//Called when a notification is delivered to a foreground app.
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    print("User Info = ",notification.request.content.userInfo)

    completionHandler([.alert, .badge, .sound])
}

//Called to let your app know which action was selected by the user for a given notification.
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    print("ActionIdentifier = ",response.actionIdentifier)
    print("User Info = ",response.notification.request.content.userInfo)

    completionHandler()
}