【问题标题】:How to show user location when user tap don't allow for the next time?当用户下次点击不允许时如何显示用户位置?
【发布时间】:2013-05-10 22:19:26
【问题描述】:

在我的应用程序中,我想在使用MKMapKitUIViewController 之一中显示用户位置。因此,当用户选择此视图控制器时,将询问他们是否允许。如果用户选择允许,则一切正常。如果他们选择不允许,则不会再次询问用户是否允许。

其实我想要的是,当用户第一次使用我的应用程序时选择不允许,他们应该被要求再次选择允许或不允许他们下次使用该应用程序。那么我该如何实现呢?当用户选择允许选择时间(他们第一次单击不允许)时,我的应用程序会显示用户位置。

即使在一些 S.O 问题中,许多人也建议用户在打开应用程序时会被提升为允许或不允许警报。但对我来说,它要求第一次使用应用程序。

请分享您的想法。谢谢你。

【问题讨论】:

    标签: ios mkmapview cllocationmanager showuserlocation


    【解决方案1】:

    如果用户第一次为您的应用关闭了位置服务,那么您每次尝试获取他们的位置时都会在您的应用中知道。您可以检查用户是否已授予您读取其位置的权限。如果他们没有,系统会再次提示他们为您的应用启用位置服务。

    引用 Apple 的文档 (found here)

    建议您始终调用 locationServicesEnabled 尝试启动之前的 CLLocationManager 类方法 标准或重大变化的定位服务。 (在 iOS 3.x 和 之前,检查 locationServicesEnabled 属性的值 代替。)如果这个类方法返回YES,你可以开始定位 按计划提供服务。如果它返回 NO 并且您尝试启动 无论如何定位服务,系统提示用户确认 是否应重新启用位置服务。鉴于那个位置 服务很可能被故意禁用,用户可能不会 欢迎这个提示。

    【讨论】:

    • 感谢您的回复。我的疑问是,即使我使用 CLLocationManager 的 locationServiceEnabled 方法获取用户位置,如何在我的视图中显示它(即圆形蓝色图标)。还有一个事情,locationServiceEnabled 现在已被弃用。
    • 这是否允许用户再次提示以启用定位服务?能否请您详细说明您的答案如何实现(可能是一些代码)?
    • locationServicesEnabled 未被弃用! (developer.apple.com/library/ios/#documentation/CoreLocation/…) 根据文档,如果您启动定位服务,即使返回 NO,也会提示用户是否要重新启用它。
    • 抱歉耽搁了。实际上尝试像这样访问locationServicesEnabled,“[CLLocationManager locationServicesEnable:YES];”。但是编译器警告我没有可用的类方法+locationServiceEnabled。你能发布一些示例代码吗?
    • 这个方法应该作为一个简单的检查来查看位置服务是否可用 "BOOL locationServ = [CLLocationManager locationServicesEnabled];"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多