当我的应用程序被杀时,我遇到了位置问题(CLVisit)。我总是请求位置,当我测试它时,一切似乎都很好。
我在didVisit委托方法中创建了一些CoreData对象(使用MagicalRecord),当我调试它时(app是前台或后台),创建工作正常,当我在委托中添加一些本地通知并使用app测试它时已杀死,但删除通知时无效。
我甚至尝试禁用automaticTermination和suddenTermination,但它不起作用。
以下是didVisit函数中的代码示例:
func locationManager(_ manager: CLLocationManager, didVisit visit: CLVisit) {
let activity = ProcessInfo.processInfo.beginActivity(options: [.suddenTerminationDisabled, .automaticTerminationDisabled], reason: "Saving location data")
MagicalRecord.save({ (context) inUIApplication.shared.scheduleLocalNotification(notification)
let newVisit = Visit.mr_createEntity(in: context)
if let newVisit = newVisit {
newVisit.accuracy = visit.horizontalAccuracy as NSNumber?
newVisit.latitude = visit.coordinate.latitude as NSNumber?
newVisit.longitude = visit.coordinate.longitude as NSNumber?
newVisit.arrivalTime = visit.arrivalDate as NSDate?
newVisit.departureTime = visit.departureDate as NSDate?
newVisit.address = addressString
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .medium
newVisit.arrivalTimeString = formatter.string(from: newVisit.arrivalTime as! Date)
newVisit.departureTimeString = formatter.string(from: newVisit.departureTime as! Date)
}
}, completion: { (bool, error) in
ProcessInfo.processInfo.endActivity(activity)UIApplication.shared.scheduleLocalNotification(notification)
})
}
if语句还有一些代码行,但这几乎就是我所做的,有时我会创建2个条目,但它的工作方式相同。当我在此代码中添加用于调试目的的通知时,一切正常
我有一些问题:我的问题可能是委托方法中的任务didVisit太长了(我已经把它减少到最小)?为什么它适用于本地通知,没有它们? MagicalRecord可以正常使用并通过位置触发器杀死和启动吗?