ArtikCloudSwift
此 SDK 帮助您将您的 iOS、tvOS、watchOS 和 macOS 应用程序连接到 ARTIK 云服务。它公开了许多方法,以便轻松执行对 ARTIK 云服务的 REST 和 WebSocket 调用。
规格说明
连接到 ARTIK 云服务并异步处理其响应。
DevicesAPI.get(id: "example-id").done { device in
if device.isSharable() {
device.share(email: "[email protected]").catch { error in
print(error)
}
} else {
device.removeFromArtik().done {
print("We couldn't share the device, so it was removed.")
}.catch { error in
print(error)
}
}
}.catch { error in
print(error)
}
先决条件
- Alamofire >= 4.7.1
- PromiseKit >= 6.2.3
- ObjectMapper >= 3.1.0
- CryptoSwift >= 0.9.0
- Starscream >= 3.0.5
安装
CocoaPods
CocoaPods 1.1 或更高版本是必需的。
使用以下任一方法在您的 PodFile
中指定 ArtikCloudSwift
source 'https://github.com/CocoaPods/Specs.git'
pod 'ArtikCloudSwift'
然后运行以下命令
pod install
手动安装
将 ArtikCloudSwift.xcodeproj
拖入您的项目中,并将 ArtikCloudSwift.framework
添加到您的应用程序嵌入式框架中。
入门
import ArtikCloudSwift
应用程序设置
在开始发送请求之前,提供您的应用程序的客户端 ID 和重定向 URI。
ArtikCloudSwiftSettings.clientID = "my-clientid"
ArtikCloudSwiftSettings.redirectURI = "my-uri://"
有关在 ARTIK 云服务创建应用程序及其客户端 ID(应用程序 ID)和重定向 URI 的说明,请参阅我们的 文档。
身份验证
API 调用需要身份验证,您必须通过任何可用的身份验证流程获取一个 Token
。这些流程在 AuthenticationAPI
中实现。这个指南描述了如何为您的用例选择最佳的认证流程。
一旦您获取了一个 Token
,可以使用以下方法之一设置它
ArtikCloudSwiftSettings.setUserToken(_ token: UserToken)
ArtikCloudSwiftSettings.setApplicationToken(_ token: ApplicationToken)
ArtikCloudSwiftSettings.setDeviceToken(_ token: DeviceToken)
每次使用 Token 时,都会在本地(如果可能)验证其有效性。对于已经过期的 UserToken
,框架将尝试在执行请求之前使用 ARTIK 云服务刷新它。这可以通过将 ArtikCloudSwiftSettings.attemptToRefreshToken = false
来禁用。
使用多种令牌类型
如果您打算针对不同的请求使用多种 Token
类型,可以将 preferredTokenForRequests
设置为一个特定的 Token.Type
。框架将首先尝试使用此令牌类型,如果不可用,则回退到其他类型。例如,优先考虑当前的 ApplicationToken
ArtikCloudSwiftSettings.preferredTokenForRequests = ApplicationToken.self
处理回调
当使用某些 API 时,ARTIK 云服务将尝试回掉到您的应用程序,例如在使用 授权代码流 或升级设备类型进行 货币化 时。为了做到这一点,请确保您的应用程序的重定向 URI(服务器端)、您的 URL 方案(客户端)和 ArtikCloudSwiftSettings.redirectURI
设置为相同的值。
一旦您的应用程序收到一个回调,通过将 URL
传递给 ArtikCloudSwiftSettings.identifyRedirectEndpoint(_ callback: URL)
来识别它正在针对的流程。使用返回的 RedirectEndpoint
值来确定如何处理它。
// iOS Example
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
if let endpoint = ArtikCloudSwiftSettings.identifyRedirectEndpoint(url) {
switch endpoint {
case .cloudAuthorization:
// User was authorizing a Cloud Connector
case .monetization:
// User has attempted to upgrade a device
do {
if try MonetizationAPI.processUpgradeCallback(url) == .accepted {
// Device was upgraded!
}
} catch {
// Unable to determine upgrade result
}
case .logout:
// User has logged out
default:
// Default Callback, used for Authentication flows
// Using Authorization Code + PKCE for example...
AuthenticationAPI.processAuthorizationCodeCallback(url, usingPKCE: true).done { token in
// We got a Token!
}.catch { error -> Void in
// Something went wrong...
}
}
}
return true
}
ArtikCloudSwiftDelegate
您可以将 ArtikCloudSwiftSettings.delegate
设置为获取有关各种使用数据的最新信息。所有方法都是可选的。
func maxPayload(_ size: UInt64)
每次收到指定 API 最大接受的有效载荷大小的响应时都会调用。
func rateLimit(_ rate: APIRateLimit)
一旦使用 API,就会调用该 API 告知您当前的速率限制状态。
func organizationQuota(_ quota: APIOrganizationQuota)
一旦使用 API,就会调用该 API 告知您的剩余组织配额。
func deviceQuota(_ quota: APIDeviceQuota)
一旦使用 API,就会调用该 API 计算设备配额。
func tokenRefreshed(_ token: UserToken)
每次当前 UserToken
被刷新时都会调用。如果需要,请使用此方法保存新刷新的令牌。
WebSockets
ARTIK 云服务的 WebSockets 可以通过它们的实现轻松访问:EventsWebsocket
、LiveWebsocket
和 DeviceWebsocket
。初始化后,使用 .connect()
和 .disconnect()
来建立或终止它们之间的连接。您还可以使用它们的代理来对任何连接事件、消息等进行响应。
注意:目前watchOS上不支持WebSocket功能(缺少对CFNetwork字符串常量的访问)。
ArtikWebsocketDelegate(由以下所有代理实现)
func websocketDidConnect(socket: ArtikWebsocket)
当套接字成功建立连接时被调用。
func websocketDidDisconnect(socket: ArtikWebsocket, reconnecting: Bool, error: Error?)
当套接字断开连接时被调用,指示这是否是由于错误,以及它是否正在尝试重新连接。
func websocketEncounteredError(socket: ArtikWebsocket, error: Error)
当在执行操作时发生错误时被调用。
EventsWebsocketDelegate
func websocketDidReceiveEvent(socket: EventsWebsocket, event: EventsWebsocket.EventType, uid: String?, aid: String?, did: String?, dtid: String?, ts: ArtikTimestamp)
当套接字接收到事件时被调用。
LiveWebsocketDelegate
func websocketDidReceiveMessage(socket: LiveWebsocket, mid: String, data: [String:Any], sdid: String, sdtid: String?, uid: String?, ts: ArtikTimestamp)
当套接字接收到消息时被调用。
DeviceWebsocketDelegate
func websocketDidReceiveAction(socket: DeviceWebsocket, mid: String, data: [String:Any], ddid: String)
当套接字接收到设备的动作时被调用。
API文档
所有API方法在其相应的源文件中都有标记文档可查见。
您也可以参考我们的文档。
REST
WebSockets
更多关于ARTIK云
如果您不熟悉ARTIK云服务,我们提供了广泛的文档,请参阅https://developer.artik.cloud/documentation
完整的ARTIK云服务API规范可在https://developer.artik.cloud/documentation/api-reference/找到
查看高级示例应用,请访问https://developer.artik.cloud/documentation/tutorials/code-samples/
要创建和管理ARTIK云服务上的服务和设备,请在https://developer.artik.cloud创建账户
还可以查看ARTIK云服务的博客,获取教程、更新等信息:http://artik.io/blog/cloud
许可和版权
遵循Apache许可证。请参阅LICENSE。
版权所有 © 2017-2018 三星电子有限公司