如何将iOS设备通过MQTT协议连接到华为云物联网平台: Flutter和Swift两种方法
前言
当今时代,物联网技术正逐步改变我们的生活和工作方式。华为云IoTDA服务,为开发者提供了一个开放、稳定、可靠的基础设施,以便实现设备与云端的无缝连接和双向通信。本文讲述如何使用Flutter和Swift两种开发语言连接到华为云物联网平台。
准备工作
需要完成如下两个步骤
- 注册并开通了华为云IoTDA服务
- 注册了一个华为云IoTDA设备,获取了DeviceId(设备Id)和Secret(设备密钥)
此外,确保你熟悉MQTT协议的基本工作原理。
Flutter方式
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
dart sdk的最佳实践
- 并发方面:dart具备内置的async和await机制,使得它与其他语言如Java或Python不同,不需要分别提供异步和同步的两种方法。而且一旦涉及到网络编程等,也只能通过异步的方式。
- 异常方面:SDK可以自定义一个异常类型。进行异常的抛出和解析,异步场景也能简单地利用这个机制
进行设备的连接和上报消息
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方式
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"]),
]
)
swift sdk的最佳实践
- 并发方面:在Swift中,
async/await
是一个相对较新的特性,它在 Swift 5.5 版本中才被引入。因此,你会发现很多现有的 Swift SDK 和库仍然依赖于回调(callback)模式来处理异步操作。在回调模式中,你通常会将一个函数(闭包)传递给一个异步函数,该异步函数在完成其操作后调用这个函数,而不是返回一个值。这样可以非阻塞地处理异步操作,但它也可以导致“回调地狱”(callback hell),尤其是在多个异步操作需要串联时。 - 异常方面:Swift也支持异常处理来管理运行时错误。你可以定义自己的异常类型,通过
throw
抛出异常,并使用do-catch
语句来捕捉和处理异常。
进行设备的连接和上报消息
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,多谢。
- 点赞
- 收藏
- 关注作者
评论(0)