在 iOS 中获取用户位置17 Mar 2025 | 5 分钟阅读 人们经常使用基于位置的应用程序,这些应用程序使用用户的位置来为他们提供更好的服务。 例如,Uber、Ola、Flipkart、Amazon 等都在使用用户的位置来获得最好的交易和服务。 但是,在 iOS 中,我们可以使用 CoreLocation 来获取用户的位置。 我们还可以在应用程序在后台运行时更新用户的位置。 本教程将讨论如何在实时获取用户的位置。 我们还将创建一个演示 iOS 应用程序,该应用程序显示获取的用户经度和纬度,并在应用程序中显示结果。 请考虑以下步骤来创建一个基于位置的 iOS 应用程序。 1. 创建一个新的 XCode 项目,命名为 LocationDemo。 ![]() 2. 创建一个 UILabel 实例来表示 ViewController 中的位置。 正如我们使用 backgroundColor、numberOfLines、textAlignment 和 font 等属性初始化了 locationLbl。 我们已经在 viewDidLoad() 中更新了 locationLbl 的 frame,并将其添加到视图中。 这将在 ViewController 的中心显示一个带有黑色背景颜色的空标签,如下图所示。 ![]() 3. 配置 info.plist 以从用户那里获取权限 我们需要为我们在应用程序中使用的任何第三方设备资源(例如相机、图库等)在 info.plist 文件中创建一个条目。 在这种情况下,我们需要在 info.plist 中添加隐私属性才能访问用户的位置。 为此,请在 XCode 中导航到 info.plist,单击 + 图标并选择以下两个隐私权限。
![]() 但是,如果 info.plist 作为源代码访问,我们也可以将以下代码添加到 info.plist 文件中。 描述文本将显示给用户以获取权限。 4. 使用 CoreLocation 获取位置。 我们需要实例化 CLLocationManager 类来配置、启动和停止 CoreLocation 服务。 CoreLocation 是一个用于获取设备的地理位置和方向的框架。 该框架使用设备上的所有可用组件收集数据,包括 Wi-Fi、GPS、蓝牙、磁力计、气压计和蜂窝硬件。 要使用 CLLocationManager,请在 ViewController 中导入 CoreLocation 框架。 在这个演示项目中,我们实例化了 CLLocationManager,如下所示。 requestAlwaysAuthorization() 方法正在向用户显示权限警报视图。 ![]() 一旦用户点击“允许一次”,startUpdatingLocation() 方法就会从设备的 GPS 获取用户的位置。 5. 实现 CLLocationManagerDelegate 协议 为了访问用户在经度和纬度上的实际位置数据,我们需要实现 CLLocationManagerDelegate 协议并使用其 didUpdateLocations() 方法。 为此,我们需要使我们的 ViewController 符合 CLLocationManagerDelegate 并将位置对象的委托属性设置为 self。 最后,定义 didUpdateLocations() 方法,该方法将在每次位置更新时被调用。 将 location 的委托属性设置为 self,并将以下代码添加到 ViewController。 为了在模拟器中显示位置,我们需要导航到模拟器 -> Debug -> Location -> Freeway Drive。 但是,这会将 locationLbl 的文本设置为设备位置的纬度和经度,如下所示。 ![]() 6. 在后台模式下更新位置 我们的代码在应用程序保持在前台状态之前都可以完美运行。 每当我们的应用程序进入后台时,位置更新将停止工作。 但是,我们可以通过在 XCode 中添加后台模式功能来启用后台模式功能。 为此,请导航到 Application Target -> Signing and Capabilities,然后在右上角点击 + 图标后选择 Background Modes。 ![]() 现在,将 CLLocationManager 对象(location)的 allowsBackgroundLocationUpdates 属性设置为 true。 这也会在后台模式下启用位置更新。 现在,即使应用程序保持在后台模式,我们也会收到位置更新。 为了测试这一点,我们现在可以在模拟器屏幕的左上角看到位置图标闪烁,这表明位置更新处于活动状态。 View Controller 的完整源代码如下。 下一个主题iOS 中的推送通知 |
我们请求您订阅我们的新闻通讯以获取最新更新。