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 中获取位置更新? [复制]