检测应用程序是否从锁定屏幕打开

Detect if app is opened from lock screen

我正在创建一个显示监视器 iBeacon 区域的应用程序,这意味着当设备被锁定并且在信标范围内时,我的应用程序的图标会显示在左下角的锁定屏幕上。

有什么方法可以检测我的应用程序是否通过这个锁屏图标和运行一些代码启动?

嗯,还有另一种方法,您可以处理它,只需创建一个变量 self.backgroundedToLockScreen,例如:

- (void)applicationWillEnterForeground:(UIApplication *)application {
    if (self.backgroundedToLockScreen) {
        ... // app was backgrounded to lock screen
    } else {
        ... // app was backgrounded on purpose by tapping the home button or switching apps.
    }
    self.backgroundedToLockScreen = NO;
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    UIApplicationState state = [[UIApplication sharedApplication] applicationState];
    if (UIApplicationStateInactive == state ||  // detect if coming from locked screen (iOS 6)
        self.backgroundedToLockScreen)          // detect if backgrounded to the locked screen (iOS 7)
    {
        ... // app is coming from or was backgrounded to lock screen
    } else {
        ... // app was backgrounded on purpose by tapping the home button or switching apps
    }
    self.backgroundedToLockScreen = NO;
}

希望这对你有用。

当图标出现时,表示已进入信标区域。 CLLocationManager 委托的 didEnterRegion 方法将在图标首次出现时被调用。

您可以将自定义代码放在那里以设置一个标志,指示图标出现。

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
    _iconShown = YES;
}

然后,当您的应用进入前台时,您可以检查此标志以查看它是否已设置,并执行您的自定义逻辑:

- (void)applicationWillEnterForeground:(UIApplication *)application {
    if (_iconShown) {
        _iconShown = NO;

        // Put custom logic here for launching from the icon
    }
}