本文分享自華為雲社群《如何將iOS裝置通過MQTT協定連線到華為雲物聯網平臺: Flutter和Swift兩種方法》,作者: 張儉 。
當今時代,物聯網技術正逐步改變我們的生活和工作方式。華為雲IoTDA服務,為開發者提供了一個開放、穩定、可靠的基礎設施,以便實現裝置與雲端的無縫連線和雙向通訊。本文講述如何使用Flutter和Swift兩種開發語言連線到華為雲物聯網平臺。
需要完成如下兩個步驟
此外,確保你熟悉MQTT協定的基本工作原理。
Flutter是一個由Google開發的開源UI軟體開發套件,用於開發跨平臺應用。
在pubspec.yaml新增依賴,可以從Github倉庫中獲取最新的commitId
dependencies: huaweicloud_iot_device_sdk: git: url: https://github.com/Shoothzj/huaweicloud-iot-device-sdk-dart.git ref: latest commitId
import 'dart:io'; import 'package:huaweicloud_iot_device_sdk/src/device_client.dart'; void main(List<String> arguments) async { var deviceClient = DeviceClient( host: "iot-mqtts.cn-north-4.myhuaweicloud.com", port: 8883, deviceId: deviceId, secret: deviceSecret, disableHmacSha256Verify: true, useTls: true, disableTlsVerify: true); await deviceClient.connect(); await deviceClient.reportDeviceMessage(content: "ddddd"); }
在上述程式碼中, 我們首先匯入了必要的庫, 然後初始化**DeviceClient**物件, 並連線到華為雲IoTDA服務。最後, 我們傳送一個簡單的訊息來驗證連線是否成功。
Swift是Apple用於iOS、macOS、watchOS、tvOS應用開發的強大語言。
在Package.Swift中新增huaweicloud-iot-device-sdk-swift作為依賴項,可以從Github倉庫中獲取最新的commitId
let package = Package( name: "YourProject", platforms: [ .iOS(.v13), .macOS(.v13), .tvOS(.v13), ], dependencies: [ .package(url: "https://github.com/your-username/your-package-name.git", .revision("latest commitId")), ], targets: [ .target( name: "YourProject", dependencies: ["HuaweiCloudIoTDevice"]), ] )
let deviceClient = DeviceClient(host: "iot-mqtts.cn-north-4.myhuaweicloud.com", port: 1883, deviceId: "b7cfa256-49df-4d2f-81c3-76697c69c03c_aaaa", secret: "18209205026", disableHmacSha256Verify: true) let connectResult: Bool = try deviceClient.connect() wait(for: [XCTestExpectation(description: "wait for connect")], timeout: 10) try deviceClient.reportDeviceMessage(content: "hahaha") wait(for: [XCTestExpectation(description: "wait for report message")], timeout: 10)
在上述程式碼中, 我們首先匯入了必要的庫, 然後初始化**DeviceClient**物件, 並連線到華為雲IoTDA服務。最後, 我們傳送一個簡單的訊息來驗證連線是否成功。
通過以上步驟,你已經學會了如何使用Flutter和Swift兩種方法將iOS裝置連線到華為雲物聯網平臺。現在,您不僅能夠連線裝置,還能實現基本的訊息傳送功能,為後續更復雜的應用開發打下了基礎。
目前兩個基礎sdk還在開發中,如果您有什麼需求/疑問,可以在Github上的專案中提交issue,多謝。