为 Amazon 位置设置初始代码 - Amazon Location Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为 Amazon 位置设置初始代码

本页提供了与 Amazon Location Service 集成的示例 iOS 应用程序的初始代码。以此代码为起点,您可以利用地图、地理编码、地理围栏、跟踪和路径选择等功能构建具有位置感知功能的 iOS 应用程序。

在您的应用程序中启用位置权限
  1. 打开你的 Xcode 项目。

  2. 找到项目的Info.plist文件。

  3. 根据您的应用程序要求添加必要的位置权限密钥。以下是钥匙:

    • NSLocationWhenInUseUsageDescription:描述为什么您的应用程序在使用时需要位置访问权限。

    • NSLocationAlwaysAndWhenInUseUsageDescription:描述为什么您的应用需要持续的位置访问权限。

现在,您需要在应用程序中配置资源值。添加一个名为的新文件Config.xcconfig并填写您之前在 Amazon 控制台中创建的值。

REGION = INDEX_NAME = MAP_NAME = IDENTITY_POOL_ID = TRACKER_NAME =
  1. 从左侧的导航器部分中,选择项目。

  2. 在 “目标” 部分下,选择您的应用程序,然后单击 “信息” 选项卡。

  3. 添加信息属性,其值如下所示:

  4. 添加包含以下内容的Config.swift文件,该文件将从捆绑包信息文件中读取配置值。

    import Foundation enum Config { static let region = Bundle.main.object(forInfoDictionaryKey: "Region") as! String static let mapName = Bundle.main.object(forInfoDictionaryKey: "MapName") as! String static let indexName = Bundle.main.object(forInfoDictionaryKey: "IndexName") as! String static let identityPoolId = Bundle.main.object(forInfoDictionaryKey: "IdentityPoolId") as! String static let trackerName = Bundle.main.object(forInfoDictionaryKey: "TrackerName") as! String }
  5. 使用名称创建一个新文件夹,ViewModel并在其中添加一个TrackingViewModel.swift文件。

    import SwiftUI import AmazonLocationiOSAuthSDK import MapLibre final class TrackingViewModel : ObservableObject { @Published var trackingButtonText = NSLocalizedString("StartTrackingLabel", comment: "") @Published var trackingButtonColor = Color.blue @Published var trackingButtonIcon = "play.circle" @Published var region : String @Published var mapName : String @Published var indexName : String @Published var identityPoolId : String @Published var trackerName : String @Published var showAlert = false @Published var alertTitle = "" @Published var alertMessage = "" @Published var centerLabel = "" var clientIntialised: Bool var client: LocationTracker! var authHelper: AuthHelper var credentialsProvider: LocationCredentialsProvider? var mlnMapView: MLNMapView? var mapViewDelegate: MapViewDelegate? var lastGetTrackingTime: Date? var trackingActive: Bool init(region: String, mapName: String, indexName: String, identityPoolId: String, trackerName: String) { self.region = region self.mapName = mapName self.indexName = indexName self.identityPoolId = identityPoolId self.trackerName = trackerName self.authHelper = AuthHelper() self.trackingActive = false self.clientIntialised = false } func authWithCognito(identityPoolId: String?) { guard let identityPoolId = identityPoolId?.trimmingCharacters(in: .whitespacesAndNewlines) else { alertTitle = NSLocalizedString("Error", comment: "") alertMessage = NSLocalizedString("NotAllFieldsAreConfigured", comment: "") showAlert = true return } credentialsProvider = authHelper.authenticateWithCognitoUserPool(identityPoolId: identityPoolId) initializeClient() } func initializeClient() { client = LocationTracker(provider: credentialsProvider!, trackerName: trackerName) clientIntialised = true } }