iOS 15 个应用程序在位置更改时未在终止状态下启动
iOS 15 app not launching in killed state with location change
我已经在我的应用程序中添加了位置背景模式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 函数将位置更改或日志添加到核心数据
现在您可以在场景代理上获得启动选项。这是一个简单的例子:
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]
...
}
}
我已经在我的应用程序中添加了位置背景模式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 函数将位置更改或日志添加到核心数据
现在您可以在场景代理上获得启动选项。这是一个简单的例子:
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]
...
}
}