入门指南
本指南将向您展示如何使用 AIPARK 框架,它可以帮助您使用 AIPARK 服务。
要求
- iOS 10+
- swift 4
安装
Cocoa Pods
CocoaPod 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它
gem install cocoapods
要在 Xcode 项目中使用 CocoaPods 集成 Alamofire,请在您的 Podfile 中指定它
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'Aipark'
end
依赖项
以下可可豆是运行AIPARK所需的。
- Alamofire
- SwiftyJSON
第一步
要使用AIPARK SDK,请导入包并初始化AIPARK类。
import Aipark
let aiparkcontroller = AIPARK(apikey: <yourAPIKey>)
授权
PLIST
要使用AIPARK,我们需要的设备当前GPS位置。因此,请在info.plist文件中添加以下键。
键 | 用途 |
---|---|
NSLocationWhenInUseUsageDescription | 使用应用时使用GPS的原因 |
NSLocationAlwaysAndWhenInUseUsageDescription | 在后台使用GPS的原因 |
能力
您还需要在后台模式中允许位置更新。否则,在框架的使用过程中将出现异常。
请求停车场区域
要请求停车场区域,您需要指定一个请求对象。该对象包含您希望获取停车场区域的瓦片。
瓦片
瓦片是预定义的地图区域。要可视化这些瓦片,您可以访问这个网站 瓦片。您可以在15至16的缩放级别请求瓦片。要使用预定义的方法将GPS坐标转换为瓦片,您可以使用以下方法。
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中的项目,点击左侧栏中您的项目名称。然后切换到能力选项卡,激活“后台模式”,特别是“位置更新”。
2018-10-02 13:44:31.721371+0200 Ein neuer Test[8291:1564683] *** Assertion failure in -[CLLocationManager setAllowsBackgroundLocationUpdates:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreLocationFramework_Sim/CoreLocation-2245.4.104/Framework/CoreLocation/CLLocationManager.m:652
2018-10-02 13:44:31.726032+0200 Ein neuer Test[8291:1564683] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: !stayUp || CLClientIsBackgroundable(internal->fClient)'