在后台的位置不起作用

布列诺

我正在开发一个代码,该代码应每10分钟获取一次我的位置,并在CoreData中进行救助。当我使用conectavo应用程序进入后台并使用xcode时,看不到该服务正在运行的日志,但是当我出去逛街时,他根本没有保存或保存了很少的时间。

这是我应该执行此功能的代码的一部分。请参阅保存在codeData中:

var saveLocationInterval = 60.0

func applicationDidEnterBackground(application: UIApplication) {
        UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler(nil)
        self.timer = NSTimer.scheduledTimerWithTimeInterval(saveLocationInterval, target: self, selector: #selector(AppDelegate.saveLocation), userInfo: nil, repeats: true)
        NSRunLoop.currentRunLoop().addTimer(self.timer, forMode: NSRunLoopCommonModes)

        locationController.startUpdatingLocation()
    }

 func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        saveLocation()
    }

func saveLocation(){
        print("======")
        let logUser = NSEntityDescription.insertNewObjectForEntityForName("LOG_GPS", inManagedObjectContext: self.managedObjectContext) as! LOG_GPS

        if locationController.location == nil{
            logUser.latitude = ""
            logUser.longitude = ""
        } else {
            logUser.latitude = "\(locationController.location!.coordinate.latitude)"
            logUser.longitude = "\(locationController.location!.coordinate.longitude)"
        }

        logUser.velocidade = userSpeed > 0 ? Int(userSpeed) : 0
        logUser.address = "\(userSpeed)"

        if _usuario.chave != nil {
            logUser.chave_usuario = "\(_usuario.chave!)"
        }
        if _empresa.chave != nil {
            logUser.chave_licenca = "\(_empresa.chave!)"
        }

        print("localizaçao salva no bd \(logUser.latitude)")
        let date = NSDate()
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "dd/MM/yy HH:mm:ss"
        let dateString = dateFormatter.stringFromDate(date)
        logUser.data = dateString
        do {
            try self.managedObjectContext.save()
        } catch {
        }
    }

我无法解决的代码中的另一个主要错误是用户的速度。在低速方法中,我试图将您的速度保存在一个变量中,然后保存CoreData,但是我总是返回一个负值:

func locationManager(manager: CLLocationManager, didUpdateToLocation newLocation: CLLocation, fromLocation oldLocation: CLLocation) {
        var speed: CLLocationSpeed = CLLocationSpeed()
        speed = newLocation.speed
        print(speed * 3.6)
        userSpeed = speed * 3.6
    }

这是我的背景模式

猫头鹰擦

可能的解决方案1

您需要在其中输入一个密钥,Info.plist以描述您的应用为何需要后台位置。

转到Info.plist,找到Bundle Version密钥,然后将+鼠标悬停在密钥上时单击出现密钥然后添加密钥NSLocationAlwaysUsageDescription,将其设置为字符串,并将值设置为您想要的描述内容,例如“我们需要您在后台的位置,以便我们与朋友共享您的位置”。

现在,您的应用程序应该可以运行了。如果没有...

可能的解决方案2(如果您知道自己在做什么,则更有可能使用的解决方案)

苹果使用iOS 9做到了这一点,以便物理设备上的应用程序需要特殊的代码行才能在后台运行位置服务。对此更改的报道尚未广泛报道(如果有的话?),但不久前我设法弄清了这一变化。您需要执行以下操作才能使位置服务在后台再次在物理设备上运行:

在您的主要位置跟踪视图中,控制器ViewDidLoad将...

if #available(iOS 9.0, *) {
     locationManager.allowsBackgroundLocationUpdates = true
} else {
    // You don't need anything else on earlier versions.
}

这将(足以神秘地)解决您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在后台拆分不起作用

来自分类Dev

MagicalRecord在后台线程中不起作用吗?

来自分类Dev

当APP在后台时,iOS静默推送不起作用

来自分类Dev

每隔X分钟在后台执行一次功能不起作用

来自分类Dev

Nohup在关闭终端时在后台运行的进程什么时候不起作用?

来自分类Dev

动态链接在应用程序关闭时不起作用,仅在后台时

来自分类Dev

iOS; 当应用未运行或在后台运行时,推送通知不起作用

来自分类Dev

每隔X分钟在后台执行一次功能不起作用

来自分类Dev

当Python脚本在后台运行时,mplayer不起作用

来自分类Dev

当应用程序在后台(和“发布”模式下)时,scheduleAtFixedRate()不起作用

来自分类Dev

iOS 8推送通知操作在后台激活模式下不起作用

来自分类Dev

当全屏iframe在后台运行时,jQuery click事件不起作用吗?

来自分类Dev

setlistadapter在后执行中不起作用

来自分类Dev

启动后台定位服务不起作用

来自分类Dev

Ansible 临时命令后台不起作用

来自分类Dev

后台服务不起作用 - Android

来自分类Dev

按钮的位置不起作用

来自分类Dev

背景位置不起作用

来自分类Dev

使用intentservice的FusedLocationProvider进行后台位置更新:当未决的intent添加了捆绑包时,位置更新不起作用

来自分类Dev

使用intentservice的FusedLocationProvider进行后台位置更新:当未决的intent添加了捆绑包时,位置更新不起作用

来自分类Dev

在后台运行位置更新

来自分类Dev

我尝试在iPhone上在后台显示FCM通知,但是当我使用Swift发送此通知时,它不起作用

来自分类Dev

关闭应用程序或在后台运行的Windows Phone中,当打开应用程序时,使用Parse的Cordova Push Notification不起作用

来自分类Dev

iOS Swift-使用NSTimer为应用程序后台重新加载位置功能不起作用

来自分类Dev

setCustomAnimations在后退按钮按下时不起作用

来自分类Dev

位置:粘性在Firefox中不起作用

来自分类Dev

更改UIView的位置不起作用

来自分类Dev

离子变化位置将不起作用

来自分类Dev

位置属性的CSS动画不起作用

Related 相关文章

  1. 1

    在后台拆分不起作用

  2. 2

    MagicalRecord在后台线程中不起作用吗?

  3. 3

    当APP在后台时,iOS静默推送不起作用

  4. 4

    每隔X分钟在后台执行一次功能不起作用

  5. 5

    Nohup在关闭终端时在后台运行的进程什么时候不起作用?

  6. 6

    动态链接在应用程序关闭时不起作用,仅在后台时

  7. 7

    iOS; 当应用未运行或在后台运行时,推送通知不起作用

  8. 8

    每隔X分钟在后台执行一次功能不起作用

  9. 9

    当Python脚本在后台运行时,mplayer不起作用

  10. 10

    当应用程序在后台(和“发布”模式下)时,scheduleAtFixedRate()不起作用

  11. 11

    iOS 8推送通知操作在后台激活模式下不起作用

  12. 12

    当全屏iframe在后台运行时,jQuery click事件不起作用吗?

  13. 13

    setlistadapter在后执行中不起作用

  14. 14

    启动后台定位服务不起作用

  15. 15

    Ansible 临时命令后台不起作用

  16. 16

    后台服务不起作用 - Android

  17. 17

    按钮的位置不起作用

  18. 18

    背景位置不起作用

  19. 19

    使用intentservice的FusedLocationProvider进行后台位置更新:当未决的intent添加了捆绑包时,位置更新不起作用

  20. 20

    使用intentservice的FusedLocationProvider进行后台位置更新:当未决的intent添加了捆绑包时,位置更新不起作用

  21. 21

    在后台运行位置更新

  22. 22

    我尝试在iPhone上在后台显示FCM通知,但是当我使用Swift发送此通知时,它不起作用

  23. 23

    关闭应用程序或在后台运行的Windows Phone中,当打开应用程序时,使用Parse的Cordova Push Notification不起作用

  24. 24

    iOS Swift-使用NSTimer为应用程序后台重新加载位置功能不起作用

  25. 25

    setCustomAnimations在后退按钮按下时不起作用

  26. 26

    位置:粘性在Firefox中不起作用

  27. 27

    更改UIView的位置不起作用

  28. 28

    离子变化位置将不起作用

  29. 29

    位置属性的CSS动画不起作用

热门标签

归档