位置服务不会在iPad上激活

时间:2011-04-02 17:36:50

标签: ios objective-c ipad location

我正在开发一个使用位置服务的iOS应用。该应用程序适用于iPhone(3GS和4),但在iPad上运行时不会请求位置服务。也就是说,永远不会要求用户启用位置服务,应用程序也不会出现在“设置”应用程序的“位置服务”部分中。

我已经看过一些描述类似问题的论坛帖子,但所有这些都是通过iTunes(通过ad-hoc发布)在iPad上安装应用程序而不是通过Xcode运行或通过重置位置警告来解决的。我在iPad,iPad 2和iPad模拟器上尝试了这两种解决方案都无济于事。

我们使用以下代码启用位置服务更新。我们已通过设备调试和我们的代码运行的NSLog的放置来验证。

- (id)init {
    [super init];

    if (clManager == nil) {
        clManager = [[CLLocationManager alloc] init];
    }
    clManager.delegate = self;

    [self startLocationMonitoring];

    return self;
}

- (BOOL)isLocationAvailable {
    return [CLLocationManager significantLocationChangeMonitoringAvailable];
}

- (void)startLocationMonitoring {
    if ([self isLocationAvailable]) {
        [clManager startMonitoringSignificantLocationChanges];
    } else {
        // handle lack of Location Services
    }
}

2 个答案:

答案 0 :(得分:4)

这可能无法解答您的问题,但可能对某些人有所帮助。 WiFi iPad型号不支持重要的位置更改(significantLocationChangeMonitoringAvailable方法返回NO)并且startMonitoringSignificantLocationChanges在运行这些时似乎什么都不做 - 它不会触发错误委托方法它也没有提出要求获得位置服务许可的蓝色泡泡对话框。

答案 1 :(得分:0)

iPad有2种型号(wifi和wifi + 3G)。 http://www.apple.com/ipad/specs/

wifi模型没有A-GPS支持。

如果您完成规范,您会发现A-GPS仅适用于wifi + 3G型号,并且您可能正在使用wifi(仅限)型号。

然而,通过WIFI,如果路由器提供相同的位置,iPad可以检测位置,而这似乎不是你的情况。

您可以在iPad2 wifi + 3G版本上试用你的应用程序,你会发现它运行得很好.. !!