【问题标题】:iOS 6 and Location Services not workingiOS 6 和定位服务不工作
【发布时间】:2012-09-13 08:57:08
【问题描述】:

我已将我的iOS SDK 更新到版本 6。之后我编译了我的应用程序(在 iOS 4 & iOS 5 中工作正常),但现在位置服务不起作用。我的delegate 没有收到任何更新,上方的位置箭头也没有出现......我正在像往常一样启动服务:

[locationManager startUpdatingLocation];

我的项目不是 ARC。

发生了什么?这快把我逼疯了……

提前致谢。

【问题讨论】:

    标签: core-location cllocationmanager ios6


    【解决方案1】:

    确保您的项目的 .plist 文件中有一个 CFBundleDisplayName。添加该密钥为我修复了它。

    【讨论】:

    • 非常感谢!为什么一个与另一个有任何关系是我无法理解的。文档说,除非您进行本地化,否则不要包含该属性。
    • 耶!!!!这对我也有用......跟着菲尔,他们为什么会相互关联?
    • 我不知道。阅读文档我看不到任何暗示为什么它需要位置。
    【解决方案2】:

    只需将位置管理器的属性pausesLocationUpdatesAutomatically 设置为NO。这是 IOS 6 的一项新功能,可在应用程序在后台运行时禁用位置更新。该属性的默认值为YES。

    【讨论】:

      【解决方案3】:

      这是 iOS6 中的一个变化:

      您需要实现locationManager:didUpdateLocations: 而不是 locationManager:didUpdateToLocation:fromLocation 以便在位置更新时收到通知。

      您还应该阅读有关 startUpdatingLocation 的文档。

      【讨论】:

      • 感谢您的建议。现在我正在使用 locationManager:didUpdateLocations: 但它从未被调用过。位置箭头没有出现...在 iOS6 中,我在设置 -> 隐私 -> 位置中看不到我正在开发的应用程序。另外,现在有时我会收到以下日志:purgeIdleCellConnections: found one to purge conn = 0x1d5d2250。有时不是。有什么线索吗?提前致谢!
      • 这可能会回答你的问题:stackoverflow.com/questions/12519733/…
      • 我已经有了两个包标识符,但问题仍然存在:(
      • [CLLocationManager authorizationStatus] 说状态是什么?
      • 这不是解决方案,locationManager:didUpdateToLocation:fromLocation: 仍然有效,尽管在 iOS 6 中 deprecated 仍然有效。
      【解决方案4】:

      在我的例子中,我有一个不同的类下的位置管理器,我从主控制器调用这个类。这不起作用,并且没有调用 didUpdateLocations。

      //
      //  LocationServices.h
      // 
      
      #import <Foundation/Foundation.h>
      #import <CoreLocation/CoreLocation.h>
      
      @interface LocationServices : NSObject <CLLocationManagerDelegate> {
          CLLocationManager *locationManager;
      
      }
      
      @property (nonatomic, retain) CLLocationManager *locationManager;
      
      - (void)startLocationServices;
      
      @end
      
      
      
      //  LocationServices.m
      #import "LocationServices.h"
      
      @implementation LocationServices 
      @synthesize locationManager, currentLocation;
      
      - (void)startLocationServices {
          locationManager = [[CLLocationManager alloc] init];
          locationManager.delegate = self;
          locationManager.pausesLocationUpdatesAutomatically = NO;
          locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
      
          if ([CLLocationManager locationServicesEnabled]) {
              [locationManager startUpdatingLocation];
      
          } else {
              NSLog(@"Location services is not enabled");
          }
      }
      
      ////////////////////////////////////////////////
      - (void)locationManager:(CLLocationManager *)manager
           didUpdateLocations:(NSArray *)locations {
          CLLocation* location = [locations lastObject];
          NSLog(@"Updated: latitude %+.6f, longitude %+.6f\n",
                location.coordinate.latitude,
                location.coordinate.longitude);
      }
      @end
      
      // Main controller
      - (void)viewDidLoad {   
          [super viewDidLoad];
      
      .....
      
      LocationServices *locationSerices = [[LocationServices alloc]init];
      [locationSerices startLocationServices];
      ......
      }
      

      上面的代码不起作用。为什么?我不知道....当您花费大量时间尝试做一件本应简单的事情时,您很容易失去兴趣。 iOS 是一个非常复杂且不友好的编程环境。做一件事有很多方法,只有一种有效,你不能混合搭配而不引入问题。您必须按照书本做所有事情,否则您将一无所获。甚至没有暗示你做错了什么......令人沮丧......

      相反,当我实施时 locationManager:(CLLocationManager *)manager didUpdateLocations: 在主控制器中一切正常

      【讨论】:

        【解决方案5】:

        这个问题似乎在 IOS 6.1 Beta2 中得到解决 - http://www.youtube.com/watch?v=aFZR0eMUV74

        【讨论】:

          【解决方案6】:

          设置 CFBundleDisplayName 为我解决了这个问题。从未调用过相同的位置更新,只需设置 info.plist 参数即可开始工作。

          【讨论】:

            【解决方案7】:

            我已经尝试了 plist 文件中的所有内容、清理、重建、新目标、配置等,等等。没有任何效果。但最后我已经修好了。我必须从头开始创建一个新的 Xcode 4.5 项目,重新配置它,逐个文件和逐个框架地手动添加框架。似乎我的旧 XCode 项目在内部与上一个 XCode 不兼容。我在这里写这篇文章是因为它也许可以节省某人接下来 10 个小时的工作。

            【讨论】:

              【解决方案8】:

              我是不是太简单了?在“隐私”下,“位置”看起来与前几期相同。有什么大惊小怪的?

              【讨论】:

              • “为我工作”不是您可以添加的最有用的内容。
              猜你喜欢
              • 1970-01-01
              • 2014-11-22
              • 1970-01-01
              • 2012-08-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-11-09
              • 2014-10-09
              相关资源
              最近更新 更多