iOS。 CLLocationManager 在 didUpdateLocations 中仅接收一次位置更新

2023-12-20

我有以下代码来获取位置更新(iOS 7):

import UIKit
import CoreLocation

class FirstViewController: UIViewController, CLLocationManagerDelegate {

    var locationManager: CLLocationManager!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func startTracking(sender : AnyObject) {
        NSLog("Start tracking")
        if (locationManager == nil) {
            locationManager = CLLocationManager()
            locationManager.delegate = self
            locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
            locationManager.distanceFilter = kCLDistanceFilterNone
            locationManager.pausesLocationUpdatesAutomatically = false
        }

        locationManager.startUpdatingLocation()
    }

    @IBAction func stopTracking(sender : AnyObject) {
        NSLog("Stop tracking")
        stopUpdatingLocation()
    }

    func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
        NSLog("Error" + error.description)
    }

    func locationManager(manager:CLLocationManager, didUpdateLocations locations:AnyObject[]) {
        println("locations = \(locations)")
    }

    func locationManager(manager: CLLocationManager!,
        didChangeAuthorizationStatus status: CLAuthorizationStatus) {

        switch status {
            case CLAuthorizationStatus.Restricted:
                locationStatus = "Access: Restricted"
                break
            case CLAuthorizationStatus.Denied:
                locationStatus = "Access: Denied"
                break
            case CLAuthorizationStatus.NotDetermined:
                locationStatus = "Access: NotDetermined"
                shouldIAllow = true
                break
            default:
                locationStatus = "Access: Allowed"
                shouldIAllow = true
        }
        NSLog(locationStatus)
    }
}

我只收到一项更新didUpdateLocations: 打电话后startTracking the didUpdateLocations仅调用一次,5 秒后 GPS 指示消失。

一些细节:

  • 应用程序被授权使用位置服务
  • 应用程序在前台
  • 有趣的是:如果我在didUpdateLocations它将被击中 4 - 5 次。

我在这里看到了类似问题的答案(例如在 Swift 中实现 CLLocationManagerDelegate 方法 https://stackoverflow.com/questions/24050633/implement-cllocationmanagerdelegate-methods-in-swift),但它对我来说仍然不起作用。

我究竟做错了什么?

Thanks!


Xcode 6 对定位服务做了很多补充。

1)您需要更改 info.plist 文件以包含字符串“NSLocationWhenInUseUsageDescription”键。其价值将是您的应用程序打开位置服务的原因:“使用位置服务跟踪您的跑步”。

2)使用“[self.locationManager requestWhenInUseAuthorization];”在您的代码中使弹出窗口与您的上述字符串一起出现。

更多信息请参见 WWDC 2014 视频。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS。 CLLocationManager 在 didUpdateLocations 中仅接收一次位置更新 的相关文章

  • Xcode 4 单元测试链接器错误

    注意 使用 GHUnit 不是此问题的可接受答案 我知道大多数人认为 GHUnit 比 Xcode4 OCUnit 更好 但这不是我要问的 我将单独评估 我有一个在 Xcode4 中从头开始创建的 Xcode 项目 在创建过程中选中了 包含
  • StoreKit2 Transaction.currentEntitlements 不返回自动续订

    如何得到Transaction currentEntitlements返回应用程序关闭时发生的订阅自动续订交易 我已经在 macOS 应用程序中实现了自动续订订阅 我有一个StoreManager创建听众Transaction curren
  • 更新/编辑 coreData 管理对象

    当用户单击 UITableView 中基于 cell accessoryType 的单元格时 我尝试编辑 CoreData 对象 以显示该项目是否已被单击 这是当前的代码 void tableView UITableView tableVi
  • 将活动指示器添加到 UIAlertView

    我正在尝试添加UIActivityIndicatorView to UIAlertView但无法完成它 我看过有关此实现的帖子 发现它仅适用于 iOS7 以下的版本 下面是我尝试过的代码 var alert UIAlertView UIAl
  • FIREBASE 数据库 - 存储子节点的唯一密钥(Swift/IOS)

    我正在尝试存储生成的独特的钥匙当 childByAutoId 被调用时 理论上 它将有助于映射稍后需要在我的应用程序中发生的指定子项的更新或更改 我对 Firebase 的分层数据库相当陌生 如果下面描述的方法不正确 请随时提供替代方案 我
  • iOS 企业应用程序:无线分发:不受信任的企业开发人员

    我已将 ipa 和 manifest plist 上传到我的服务器 例如 https www xxxxxxx x om app 我在该服务器中创建了一个安装页面 在该安装 html 页面中 我有下载我的应用程序的超链接 a href Dow
  • NSRegularExpression 中的命名捕获组 - 获取范围组的名称

    苹果表示 NSRegularExpression 基于 ICU 正则表达式库 https developer apple com library ios documentation Foundation Reference NSRegula
  • IOS:从故事板中的原型单元中触发多个segues

    有没有办法将原型单元连接到不同的场景 并在 didSelectRowAtIndexPath 方法上调用 self PerformSegueWithIdentifier NAMEOFTHESEGUE sender self 我似乎无法将多个
  • iOS 键盘颜色变化 - 键盘外观深色不粘

    在我们的应用程序中 我们将键盘外观设置为深色 正如预期的那样 这会产生一个黑色键盘 但是 如果显示键盘 并且我们按主页按钮 然后返回应用程序 键盘会变成白色 如图所示 有什么想法吗 这可能与键盘是全局对象这一事实有关 在任何给定时间 内存中
  • 在 iOS 视图中获取触摸位置时,PAN 手势崩溃

    我只是做了一个示例来检查平移手势 平移手势正在检测并且工作正常 但每当我在平移手势中给出第二个点时 例如CGPoint secondPoint sender locationOfTouch 1 inView self imageView 它
  • 选择 MapView 注释两次

    我的 iPhone 应用程序有一个地图视图 其中有大量位置可供用户选择 我希望他能够点击其中一个注释来显示其标注视图 然后再次实际选择它 问题是 didSelectAnnotationView 只被调用一次 那么如何检测已选择的注释的选择呢
  • Swift 错误中的 UIColor 扩展

    我有这个扩展 extension UIColor func rgba r Int g Int b Int a Float gt UIColor return UIColor red r 255 green g 255 blue b 255
  • 如何在 Objective-C 中运行时查找字符串常量?

    我的公司开发了一个广告 SDK 可以协调其他广告网络 在运行时 它通过使用检查其他广告网络是否存在NSClassFromString 并发送这些类消息 如果存在 这对于 Objective C 对象来说效果很好 但是如何在运行时加载字符串常
  • iOS:将 ISO Alpha 2 转换为 Alpha 3 国家/地区代码

    是否可以在 iOS 中将 ISO 3166 alpha 2 国家 地区代码转换为 alpha 3 国家 地区代码 例如 DE 转换为 DEU 基于 Franck 的答案 这里是用于加载 plist 的代码 swift4 然后转换 3 个字母
  • 在特定点停止 CABasicAnimation

    我正在使用创建的旋转动画CABasicAnimation 它旋转一个UIView超过2秒 但我需要能够阻止它UIView被感动了 如果我删除动画 视图将处于与动画开始之前相同的位置 这是我的动画代码 float duration 2 0 f
  • 如何在 iPhone 应用程序中运行进程而不阻塞用户界面

    我正在 iPhone 上访问照片库 需要很长时间才能导入我在应用程序中选择的图片 如何在辅助线程上运行该进程 或者我应该使用什么解决方案来不阻塞用户界面 我在这里使用 PerformSelectOnBackground 或 GCD 对示例代
  • 如何禁用 iOS 8 表情符号键盘?

    iOS 8 中是否有任何选项可以停止显示表情符号键盘 它在数字键盘和安全文本中不可用 但对于电子邮件来说它是存在的 如果无法禁用它如何从表情符号中获取字符串值 尝试这个 BOOL textField UITextField textFiel
  • 运行工具链时出现“xcrun:错误:无法找到 SDK“iphonesimulator””

    我正在尝试将 Kivy 程序编译到 iOS 上 但是当我运行构建 Kivy 发行版的命令时 我不断收到此错误 xcrun 错误 无法找到 SDK iphonesimulator 我的电脑上有 xcode 到底是怎么回事 有点晚了 但我在尝试
  • 当应用程序置于后台时,GCD 分派操作未运行

    我启动了一种方法 本质上是一个无限循环 使用dispatch queue create进而dispatch async 然后代码循环位于分派块内 循环完美运行 但是 当应用程序进入后台时 它会暂停 然后当应用程序进入前台时它会重新启动 我怎
  • 将 Swift 闭包作为值添加到 Swift 字典中

    我想创建一个 Swift 字典 将 String 类型作为其键 将 Closures 作为其值 以下是我的代码 但它给了我错误 lvalue 与 String gt Void 不同 class CommandResolver private

随机推荐