如何解决Xcode 4.1(LION)GPS错误?

52

我的项目在模拟器和设备上都能完美运行,但是现在,升级到Lion操作系统和Xcode 4.1后,当GPS处于活动状态时,我遇到了这个错误!

server did not accept client registration 68

这是一个基于GPS的应用程序,我担心无法在模拟器中对其进行调试。

有什么解决办法吗?


更新:即使在Xcode 3.2.6 + LION上,模拟器上的GPS也无法使用。


编辑:苹果公司在错误跟踪器上的回复:

经过进一步调查,确定这是一个已知问题,正在由工程师进行调查。这个问题已经在我们的错误数据库中以原始Bug ID#的形式记录。感谢您提交此错误报告。我们真诚地感谢您协助我们发现和隔离错误。


2
有相同的问题,错误代码都一样。 Lion 似乎在“安全性与隐私”设置中的“隐私”选项卡下,有新的位置服务偏好设置,而 iOS 模拟器根本不会出现在应用程序列表中。也似乎没有手动添加的方法。 - Tim
1
他们正在使用iOS模拟器5.0进行工作。 - Taras Kalapun
1
我建议你向 Apple 提交一个 bug。 - Oscar Del Ben
4个回答

8

Xcode 4.2通过添加自定义GPS位置解决了这个问题!

该文件是一个类似于XML的格式:

<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode"> 
  <wpt lat="45,49939" lon="9,12114">
    <name>Milano</name>
  </wpt>
</gpx>

您可以将此文件添加到您的项目中,或者在“新建”->“文件”->“GPX”中添加。

在运行您的应用程序时,请激活控制台并选择您的自定义位置文件:

enter image description here

就这些了。
享受使用吧。


2
只有在针对iOS 5进行调试时才有效。如果您使用4.3模拟器,则没有位置图标。 - smparkes
哇,我很久以前就想知道如何制作这个文件! - Martin

2

来自Big Nerd Ranch论坛:

@implementation CLLocationManager (TemporaryHack)
- (void)hackLocationFix {
    CLLocation *location = [[CLLocation alloc] initWithLatitude:42 longitude:-50];
    [[self delegate] locationManager:self didUpdateToLocation:location fromLocation:nil];     
}
- (void)hackHeadingFix {
    [[self delegate] locationManager:self didUpdateHeading:(id)@"That way.."];
}
- (void)startUpdatingLocation {
    [self performSelector:@selector(hackLocationFix) withObject:nil afterDelay:0.1];
}
- (void)startUpdatingHeading {
    [self performSelector:@selector(hackHeadingFix) withObject:nil afterDelay:0.1];
}
@end

作为解决方法是完美的,但不幸的是不能解决苹果问题! - elp
同意。有没有任何想法如何“黑掉”“heading delegate”?没有办法创建CLHeading的实例并填充它。 - Vaibhav Garg

1
我遇到了同样的问题,寻找解决方案时,我至少找到了一个解决方法:在iPhone模拟器上测试CoreLocation - 它并不能真正让它工作,但在我的情况下,我只需要一个虚拟位置。
要使其工作,只需将链接的代码复制到头文件中,并将其链接到您的

下面。
#import <CoreLocation/CoreLocation.h>

像这样:

#import <CoreLocation/CoreLocation.h>
#import "CoreLocation_Sim.h" 

解决方法虽然完美,但不幸的是无法解决苹果的问题! - elp

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接