位置服务在iOS 8中处于“未激活”状态

时间:2015-03-18 05:14:14

标签: ios iphone swift core-location

我正在创建一个跟踪用户的应用。当用户登录应用程序时,我已经开始了重要的位置更新然后我把我的应用程序放在后台。然后开始用我的车旅行。在500米-1公里后,我得到了显着的位置变化。在获得更新时,我已经停止了重要的位置更新并启动了标准GPS。它提供m位置更新2-3分钟后,我看到"位置图标现在应处于状态'非活动'" ,我的应用不会获取任何位置更新。

如果应用程序有前景,那么应用程序将再次开始获取位置更新。

我正在使用共享位置实例。我有iPhone 5和iOS 8.1.3。我正在使用Swift。

添加一些代码..我这样做了

    gpsManager = CLLocationManager()
            gpsManager.delegate = self
            gpsManager.desiredAccuracy = kaccuracy
            gpsManager.distanceFilter = kdistanceFilter 
            gpsManager.pausesLocationUpdatesAutomatically = false
            gpsManager.headingFilter = kheadingFilter
            gpsManager.activityType = kactivityType

            isTracking = false
            isMonitoringSignificantChanges = false


           //on login 
         var sharedGPSManager=GeoLocation.sharedInstance
        sharedGPSManager.delegate=self
        let status=sharedGPSManager.authorizationStatus()
        if(status == 0)
        {

            NSLog("Allowed to track")
        }
        else
        {
            NSLog("Not allowed")
        }
       sharedGPSManager.startSignificantLocationTracking()


     func gpsManager(manager:GeoLocation, didUpdateLocations locations:AnyObject)
    {
       var sharedGPSManager=GeoLocation.sharedInstance

        sharedGPSManager.stopSignificantLocationTracking()

     task=UIApplication.sharedApplication().beginBackgroundTaskWithName("wifiUpload", expirationHandler: { () -> Void in
        }


        sharedGPSManager.delegate = self
        let status = sharedGPSManager.authorizationStatus()
        if(status == 0)
        {
            NSLog("Allowed to track")
        }
       else
        {
            NSLog("Not allowed")
        }

        sharedGPSManager.startTracking()

         //process location data

       endBackgroundTask(task)
}

//开始位置跟踪     func startTracking(){

    if(isMonitoringSignificantChanges){
        gpsManager.stopMonitoringSignificantLocationChanges()
    }

    gpsManager.stopUpdatingLocation()

    if CLLocationManager.headingAvailable()
    {
        gpsManager.startUpdatingHeading()
    }

    gpsManager.startUpdatingLocation()
    isTracking=true
    isMonitoringSignificantChanges=false
}

3 个答案:

答案 0 :(得分:1)

最后,我在Apple开发者论坛上得到了答案。重要的位置始终为我工作....

答案 1 :(得分:0)

您需要在后台模式中添加Location Update功能

项目目标>能力>转动背景模式开启>勾选适用于您的应用的所有内容

enter image description here

答案 2 :(得分:0)

您必须在info.plist中启用必需的后台模式作为"应用程序注册位置更新"然后您的应用程序将在后台为您提供位置更新。

您必须使用self.locationManager.startUpdatingLocation()而非重要的位置更新。