0

我正在使用CLLocationManager,如果该程序是第一次安装,它需要用户接受或拒绝分享他的位置。我想要的是对自己进行编程以等待用户提示。

现在的问题是我在那里等着usleep()

while ([CLLocationManager authorizationStatus] == USER_NOT_PROMPTED) {
    usleep(10000);
}

但这会导致实际的 iPhone 被锁定,不会弹出位置共享问题,因此程序挂起。有没有办法在单独的线程中运行这些用户提示?我正在使用 iOS 6.1

4

1 回答 1

1

您的程序正在冻结,因为您阻止了运行循环,这使得系统无法提示用户使用位置的权限。不要那样做。如果您希望用户立即允许或拒绝使用他们的位置,只需在您的应用程序的早期调用位置管理器即可。如果您不希望用户在他们决定之前能够做任何其他事情,请不要让他们做任何事情——也许显示一个空白屏幕。

不过,这听起来不像是一个好的用户体验,所以最好找到一种方法让他们尽可能多地这样做。为什么不只是假设用户拒绝您使用他们的位置,直到他们做出其他决定?

于 2013-07-29T03:16:18.090 回答