教你2种方法,将iOS设备通过MQTT协议连接到华为云物联网平台

本文分享自华为云社区《如何将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,多谢。

点击关注,第一时间了解华为云新鲜技术~

相关推荐
Elihuss1 小时前
ONVIF协议操作摄像头方法
开发语言·php
Swift社区5 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht5 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht5 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20245 小时前
Swift 数组
开发语言
stm 学习ing6 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc7 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe8 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin8 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python