ArtikCloudSwift 4.2.1

ArtikCloudSwift 4.2.1

测试已测试
Lang语言 SwiftSwift
许可证 Apache-2.0
Released最后发布2018年4月
SPM支持 SPM

Maneesh SahuJeanine Jue 维护。



 
依赖项
Alamofire~> 4.7.1
PromiseKit= 6.2.3
ObjectMapper~> 3.1.0
CryptoSwift~> 0.9.0
Starscream~> 3.0.5
 

  • ARTIK Cloud

ArtikCloudSwift

Supported Version License CocoaPods Platforms

此 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)
}

先决条件

安装

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 可以通过它们的实现轻松访问:EventsWebsocketLiveWebsocketDeviceWebsocket。初始化后,使用 .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 三星电子有限公司