gpt4 book ai didi

ios - 暂停 IOS 后,基于标准位置的 iOS 应用程序无法唤醒

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:39:37 24 4
gpt4 key购买 nike

我正在开发一个基于位置的应用程序,它应该始终获取用户位置。我正在使用标准位置服务。但问题是,即使我们移动到其他一些位置,应用程序在后台保持空闲一段时间后也不会获取坐标。根据苹果文档,当到达新位置时,应用程序应自动唤醒,但此处不会发生这种情况。我正在共享代码并用于获取我的 plist 的位置和屏幕截图。

  class SALocation: NSObject,CLLocationManagerDelegate
{
static let sharedInstance : SALocation = SALocation()

var locationManager : CLLocationManager!
var location : CLLocation!
var address : String!
var latitude : NSString?
var longitude : NSString?
var isAdderssLoaded : Bool = false
var locdictionary : NSMutableDictionary = NSMutableDictionary()

func startLocationManager()
{
if self.locationManager == nil
{
self.locationManager = CLLocationManager()

if CLLocationManager.locationServicesEnabled(){
print("location service enabled")
}
self.locationManager.delegate = self
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.distanceFilter = kCLDistanceFilterNone
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest

if ( Float (UIDevice.currentDevice().systemVersion) >= 9) {
if #available(iOS 9.0, *) {
self.locationManager.allowsBackgroundLocationUpdates = true
} else {
// Fallback on earlier versions
};

}

self.locationManager.startUpdatingLocation()
//self.locationManager.stopMonitoringSignificantLocationChanges()
}
else
{
self.locationManager.startUpdatingLocation()
}
}

// MARK: CLLocationManagerDelegate
func locationManager(manager: CLLocationManager, didFailWithError error: NSError)
{
UIAlertView(title:"Alert", message:error.description, delegate: nil, cancelButtonTitle:nil, otherButtonTitles:"Ok").show()
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
{
if locations.count > 0
{
self.location = locations[0]
/* storing date and location to plist

*/

let datenow = NSDate()
let dateformatternow = NSDateFormatter ()
dateformatternow.dateFormat = "yyyyMMdd HH:mm:ss"
let timenow:NSString = dateformatternow.stringFromDate(datenow)
let documetsdirectorypath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last
latitude = NSString(format: "%f",self.location.coordinate.latitude)
longitude = NSString (format: "%f",self.location.coordinate.longitude)
let latlong : NSString = NSString(format:"%@~%@",latitude!,longitude!)
NSUserDefaults.standardUserDefaults().setObject(latlong, forKey: "latlong")
let aFilePath = NSString(format: "%@/location.plist",documetsdirectorypath!)
locdictionary.setObject(latlong, forKey: timenow as String)
locdictionary.writeToFile(aFilePath as String, atomically: true)
///////////// ||storing date and location to plist code ends here||\\\\\\





// self.getAddressFromLocation(locations[0] )
// if (NSUserDefaults.standardUserDefaults().objectForKey(SettingAppRefresh) != nil)
// {
// if (NSUserDefaults.standardUserDefaults().objectForKey(SettingAppRefresh) as! NSString).isEqualToString(FalseString)
// {
// // self.locationManager.stopUpdatingLocation()
// }
// }
}
}

}

我在这里所做的只是获取位置并将其写入 plist 文件。这适用于前景,背景等。但是当我让应用程序闲置 20 分钟时,即使我在应用程序暂停时移动到其他一些位置,也不会获取位置

enter image description here

功能选项卡如下所示 enter image description here

最佳答案

要在后台启动位置,您必须从以下路径启动后台服务

Click on your name -> Click on your app name (target) -> goto capabilities -> find the background mode -> enable the location update mode

enter image description here

我不确定你是否开始了那个,因为你没有放任何关于这个的截图。

还要检查您的用户是否在设置中启动了后台刷新。请参阅下面的链接。

Background App Refresh checking, enabling and disabling programatically for whole device and for each particular application in iOS 7

更新::对于链接下方使用的后台位置更新( objective-c )

http://www.creativeworkline.com/2014/12/core-location-manager-ios-8-fetching-location-background/

关于ios - 暂停 IOS 后,基于标准位置的 iOS 应用程序无法唤醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33820328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com