入门指南
本指南将向您展示如何使用 AIPARK 框架,该框架帮助您使用 AIPARK 服务。
要求
- iOS 10+
- swift 4
安装
Cocoa Pods
CocoaPod 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它
gem install cocoapods
要使用 CocoaPods 将 Alamofire 集成到您的 Xcode 项目中,在您的 Podfile 中指定它
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'AIPARKSDK'
end
依赖项
以下 CocoaPod 是运行 AIPARK 所必需的
- Alamofire
- SwiftyJSON
基础知识
要使用AIPARK SDK,请导入包并初始化AIPARK类。
import AIPARKSDK
let aiparkcontroller = AIPARK(apikey: <yourAPIKey>)
授权
PLIST
使用AIPARK时,我们需要设备当前的GPS位置。因此,请将以下键添加到info.plist文件中。
键 | 用途 |
---|---|
NSLocationWhenInUseUsageDescription | 为什么在应用程序使用时使用GPS的原因 |
NSLocationAlwaysAndWhenInUseUsageDescription | 为什么在后台使用GPS的原因 |
NSMotionUsageDescription | 为什么使用运动传感器的原因(需要检测离开停车位) |
功能
还需要允许在后台模式下进行位置更新。否则,在框架使用过程中将发生异常。
请求停车位区域
要请求停车位,您需要指定一个请求对象。此对象包含您希望获取停车位图的标签。
瓷砖
瓦片是预定义的地图区域。为了可视化这些瓦片,您可以访问这个网站 瓦片。您可以在15到16级的缩放级别上请求瓦片。要将经度/纬度坐标转换为瓦片,您可以使用预定义的方法。
func getTileForCoordinates(latitude: Double, longitude: Double, zoom: Int) -> (x: Int, y: Int)
以下是一个请求获取停车区域示例。这将返回从指定瓦片中选择的一组停车区域。
let aiparkcontroller = AIPARK(apikey: <yourAPIKey>)
let test = ParkingAreaRequest(tiles: [Tile(x: 35209, y: 21496)])
aiparkcontroller.getParkingAreas(request: test) { (parkingareas) in
for entry in parkingareas {
print(entry.name)
}
}
缓存
当您请求停车区域时,它们将自动缓存以最小化网络流量。如果您请求相同的瓦片两次,您将看到性能提升,因为API响应已经被缓存。因此,只需使用getParkingAreas方法进行第二次请求。为了保持结果最新,这些区域将从缓存中删除,每隔15分钟一次。如果您再次请求它们,它们将在那个时间限制之后从web服务中获取。
问题
启动后SIGABRT
如果您在应用程序启动后立即看到以下错误消息,则缺少后台模式的权限。要解决这个问题,请前往XCode中的项目,并在左侧栏中单击您的项目名称。然后切换到“能力”标签,并激活“后台模式”,特别是“位置更新”。
*** Assertion failure in -[CLLocationManager setAllowsBackgroundLocationUpdates:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreLocationFramework_Sim/CoreLocation-2245.4.104/Framework/CoreLocation/CLLocationManager.m:652
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: !stayUp || CLClientIsBackgroundable(internal->fClient)'