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

Ios 检测应用程序是否从锁屏打开,ios,ibeacon,Ios,Ibeacon,我正在创建一个显示监视器iBeacon区域的应用程序,这意味着当设备被锁定且在信标范围内时,我的应用程序图标会显示在左下角的锁定屏幕上 有什么方法可以检测我的应用程序是否通过这个锁屏图标启动,并运行一些代码吗?hmm,还有一种方法,你可以处理它,只需创建一个变量self。backgroundedtockscreen: - (void)applicationWillEnterForeground:(UIApplication *)application { if (self.backgro

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


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

hmm,还有一种方法,你可以处理它,只需创建一个变量
self。backgroundedtockscreen

- (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;
}


希望这对您有用。

当图标出现时,表示已输入信标区域。当图标第一次出现时,将调用
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
    }
}

这并不完美,因为用户可以自己而不是从锁屏上启动应用程序,但这似乎是一个很好的折衷方案。我会把这个问题留一段时间,看看是否还有其他问题,如果没有,我会接受这个答案,谢谢!确实,这只告诉您位置事件发生在应用程序以任何方式被带到前台之前,但这是您所能做的最好的事情。这是一个常见的问题。应用程序:didFinishLaunchingWithOptions:方法可以访问launchOptions,这些选项可以识别这一点,但这仅适用于原始启动,而不返回前台。在进入前台时没有与启动选项等效的选项。谢谢您的输入!我真的不明白你是如何设置backgroundedToLockScreen变量的?什么时候设置为是?无论哪种方式,仅仅因为用户退出到锁屏,并不意味着以后他们也会从锁屏启动应用程序。
- (void)applicationWillEnterForeground:(UIApplication *)application {
    if (_iconShown) {
        _iconShown = NO;

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