检查从Swift中的UILocalNotification启动

时间:2014-07-20 23:53:16

标签: swift uilocalnotification

这是How to check launchOptions in Swift?的后续问题 - 我的应用程序成功启动而没有崩溃,但我似乎无法正确检测应用程序何时从通知启动到正常启动

我正在创建我的UILocalNotification:

// set up a frequently recurring notification here just for testing...
var fast = UILocalNotification()
fast.fireDate = NSDate(timeIntervalSinceNow: 15)
fast.alertBody = "Alert Message"
fast.timeZone = NSTimeZone.localTimeZone()
fast.repeatInterval = NSCalendarUnit.CalendarUnitMinute
fast.userInfo = ["Important":"Data"]
UIApplication.sharedApplication().scheduleLocalNotification(fast)

这是我的代码,用于尝试处理从UILocalNotification启动应用程序的时间。

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
    if var launch = launchOptions {
        if var key = launch.objectForKey(UIApplicationLaunchOptionsLocalNotificationKey) {
            // I never seem to reach this point...
        }
    }
    return true
}

如果我的应用程序是背景并且我点击警告框,我想要触发的动作正确执行,所以我知道我至少可以使一条路径正常工作。这里的问题是完全通过通知启动应用程序。

2 个答案:

答案 0 :(得分:3)

如果您的应用程序在后台运行,那么"应用程序就会完成启动"方法不会被调用。它已经推出。

在这种情况下,你应该在"应用程序didReceiveLocalNotification"中完成你的工作。方法

func application(application: UIApplication!, didReceiveLocalNotification notification: UILocalNotification!) {
        // do your jobs here
}

答案 1 :(得分:-1)

如果直接启动应用程序,

public View.OnClickListener onChk = new View.OnClickListener() { public void onClick(View v) { int index = list.getFirstVisiblePosition(); getListView().smoothScrollToPosition(index+1); // For increment. } }); 将为nil。如果您通过通知启动应用程序而不是直接启动应用程序,则代码将运行。

如果您直接启动应用程序,那么您需要一些其他方法来解决此问题。比如使用LaunchOptions的时间和当前时间,并决定要显示哪个视图。