检查是否从本地通知启动iOS应用程序?

检查是否从本地通知启动iOS应用程序?,ios,notifications,Ios,Notifications,如何检测未处于活动、非活动或后台状态(已终止)的应用程序是否从本地通知启动?到目前为止,我已经在App Delegate的didFinishLaunchingWithOptions中尝试了两种方法: func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // METHOD 1: if

如何检测未处于活动、非活动或后台状态(已终止)的应用程序是否从本地通知启动?到目前为止,我已经在App Delegate的didFinishLaunchingWithOptions中尝试了两种方法:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // METHOD 1:
    if let options = launchOptions {
        if let key = options[UIApplicationLaunchOptionsLocalNotificationKey] {
            notificationCenter.postNotification(NSNotification(name: "applicationLaunchedFromNotification", object: nil))
        }
    }

    // METHOD 2:
    let notification = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as! UILocalNotification!
    if (notification != nil) {
        notificationCenter.postNotification(NSNotification(name: "applicationLaunchedFromNotification", object: nil))
    }

    return true
}
在我的视图控制器中,我观察ViewDidLoad中的通知,并作为响应,设置UILabel的文本:

override func viewDidLoad() {
    super.viewDidLoad()
    notificationCenter.addObserver(self, selector: "handleAppLaunchFromNotification", name: "applicationLaunchedFromNotification", object: nil)
}

func handleAppLaunchFromNotification() {
    debugLabel.text = "app launched from notification"
}
但是,从本地通知启动终止的应用程序后,UILabel的文本永远不会设置

我的问题是:

  • 我做错了什么
  • 除了设置UILabel之外,还有更简单的方法来调试这种情况吗?一旦应用程序终止,Xcode的调试器就会分离应用程序,我无法使用
    print()

  • 您正在检查
    didfishlaunchingwithoptions
    中的本地通知。此方法包含仅用于远程通知的
    launchOptions
    。如果应用程序处于终止状态,并且您对本地通知执行操作,则
    didReceiveLocalNotification
    将在
    didFinishLaunchingWithOptions
    方法之后获得调用。

    您正在
    didFinishLaunchingWithOptions
    中检查本地通知。此方法仅包含用于远程的
    launchOptions
    通知。如果应用程序处于终止状态,并且您对本地通知执行操作,则
    didReceiveLocalNotification
    会在
    didFinishLaunchingWithOptions
    方法之后调用。

    这取决于通知的观察者是否在NSNotification发布之前设置。我如何确保这一点?即使在应用程序终止后,
    viewDidLoad
    中设置的观察者是否仍然存在?现在:视图加载并设置一个观察者,用户按下该视图中的一个按钮来设置通知,通知将在将来的某个日期触发。我希望能够在应用程序启动时从该通知响应用户启动应用程序。我不确定这是否重要,但我已经在Info.plist文件中明确选择了我的应用程序作为背景。因此,当点击home按钮(无背景)时,应用程序终止。这取决于通知的观察者是否在NSNotification发布之前设置。我如何确保这一点?即使在应用程序终止后,
    viewDidLoad
    中设置的观察者是否仍然存在?现在:视图加载并设置一个观察者,用户按下该视图中的一个按钮来设置通知,通知将在将来的某个日期触发。我希望能够在应用程序启动时从该通知响应用户启动应用程序。我不确定这是否重要,但我已经在Info.plist文件中明确选择了我的应用程序作为背景。所以,当点击主页按钮(没有背景)时,应用程序就会终止。我对你的帖子有点困惑。根据苹果的说法,本地通知存在
    启动选项
    。我不能用这个吗?你找到解决办法了吗?我被你的帖子弄糊涂了。根据苹果的说法,本地通知存在
    启动选项
    。我不能用这个吗?你找到解决办法了吗?