iOS 15 应用程序未在位置更改时以终止状态启动

Posted

技术标签:

【中文标题】iOS 15 应用程序未在位置更改时以终止状态启动【英文标题】:iOS 15 app not launching in killed state with location change 【发布时间】:2022-01-14 02:23:21 【问题描述】:

我在我的应用程序SS here中添加了定位背景模式

但是,应用程序仍然无法使用启动选项键启动

UIApplication.LaunchOptionsKey.location

这是我的应用委托代码,

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 
    // Override point for customization after application launch.
    addItem(name: "LaunchOptions: \(String(describing: launchOptions))")
    if let launchOptions = launchOptions 
        if launchOptions[UIApplication.LaunchOptionsKey.location] != nil 
            startLocationMonitoring()
        
    
    print("LaunchOptions: \(String(describing: launchOptions))")
    return true


func startLocationMonitoring() 
    locationManager?.delegate = nil
    locationManager = nil
    locationManager = CLLocationManager()
    locationManager?.delegate = self
    locationManager?.desiredAccuracy = kCLLocationAccuracyBestForNavigation
    locationManager?.distanceFilter = 1.0 // meters
    locationManager?.allowsBackgroundLocationUpdates = true
    locationManager?.activityType = .otherNavigation
    locationManager?.pausesLocationUpdatesAutomatically = false
    authStatusCheck()
    locationManager?.startUpdatingLocation()


func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
    print(locations)
    if let appDelegate = (UIApplication.shared.delegate as? AppDelegate) 
        for location in locations 
            appDelegate.addItem(newLocation: location)
        
    

addItem 函数将位置变化或日志添加到核心数据中

【问题讨论】:

【参考方案1】:

现在您可以在场景委托上获得启动选项。这是一个简单的例子:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)                 
          if let response = connectionOptions.notificationResponse 
             //get your launch info from here
             let location = response.notification.request.content.userInfo[UIApplication.LaunchOptionsKey.location]
    ...
          
        

【讨论】:

以上是关于iOS 15 应用程序未在位置更改时以终止状态启动的主要内容,如果未能解决你的问题,请参考以下文章

即使应用程序处于终止状态或被杀死,如何在 iOS 中获取位置更新? [复制]

iOS - 在设备设置中,如果我更改时间,即使在应用程序后台、已终止状态下也应该得到通知

地理围栏不再从 ios7 中的终止状态重新启动应用程序?

在启动时在iOS中启动位置感知后台服务

OS X - 如何检测应用程序何时在登录时以隐藏状态启动?

即使应用程序终止,iOS 9 如何获取位置