教你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,多谢。
教你2种方法,将iOS设备通过MQTT协议连接到华为云物联网平台的更多相关文章
- 手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台
摘要:本期文章采用了4G LTE Cat.1模块,编程语言用的是lua,实现对华为云物联网平台的设备通信与控制 本文分享自华为云社区<基于luatos的4G(LTE Cat.1)模组接入华为云物 ...
- 图解连接阿里云(一)创建阿里云物联网平台产品和设备,使用MQTT.fx快速体验
1. 打开 https://www.aliyun.com/ 注册账号 2.注册账号登录后点击控制台 3. 在下图1处输入物联网平台,会弹出2处所示物联网平台的入口,点击红色箭头所示处,进入物联网平 ...
- ESA2GJK1DH1K基础篇: 阿里云物联网平台: 云平台显示单片机采集的温湿度数据,控制设备继电器(基于GPRS模块,AT指令TCP_MQTT通信)
实现的功能 上一节是使用的Wi-Fi模块连接的阿里云平台,这节呢咱用GPRS连接. 阿里云的设备配置还是按照上一节的,有个温度,有个湿度. 测试 一,打开单片机程序 二,根据自己的修改,然后下载进去单 ...
- OpenHarmony3.0如何轻松连接华为云IoT设备接入平台?
摘要:本文主要介绍基于OpenHarmony 3.0版本来对接华为云IoT设备接入IoTDA,以小熊派BearPi-HM_Nano开发板为例,使用huaweicloud_iot_link SDK对接华 ...
- mysql 远程连接数据库的二种方法
http://blog.csdn.net/freecodetor/article/details/5799550 一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5 ...
- python字符串连接的三种方法及其效率、适用场景详解
python字符串连接的方法,一般有以下三种:方法1:直接通过加号(+)操作符连接website=& 39;python& 39;+& 39;tab& 39;+& ...
- mysql 远程连接数据库的二种方法
一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"root",密码"123 ...
- C++连接mysql数据库的两种方法
本文主要介绍了C++连接mysql数据库的两种方法,希望通过本文,能对你有所帮助,一起来看. 现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用a ...
- 转 mysql 远程连接数据库的二种方法
mysql 远程连接数据库的二种方法 一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口“3306”,用户名为“root”,密码“123456” ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:4. 设备上报属性
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
随机推荐
- odoo开发教程十:Actions
actions定义了系统对于用户的操作的响应:登录.按钮.选择项目等. 一:窗口action(ir.actions.act_window ) 最常用的action类型,用于将model的数据展示出来. ...
- 5.5. Java并发工具类(如CountDownLatch、CyclicBarrier等)
5.5.1 CountDownLatch CountDownLatch是一个同步辅助类,它允许一个或多个线程等待,直到其他线程完成一组操作.CountDownLatch有一个计数器,当计数器减为0时, ...
- wait,notify,notifyAll,sleep,join等线程方法的全方位演练
一.概念解释 1. 进入阻塞: 有时我们想让一个线程或多个线程暂时去休息一下,可以使用 wait(),使线程进入到阻塞状态,等到后面用到它时,再使用notify().notifyAll() 唤醒它,线 ...
- 纠删码技术在vivo存储系统的演进【上篇】
作者:vivo 互联网服务器团队- Gong Bing 本文将学术界和工业界的纠删码技术的核心研究成果进行了相应的梳理,然后针对公司线上存储系统的纠删码进行分析,结合互联网企业通用的IDC资源.服务器 ...
- 闺蜜机 StanbyME 产品随想
今天媳妇告诉我,现在小度这边推出一款叫 "闺蜜机"的可用移动的IPAD设备,我点开链接一看,就感觉兴趣不大,不就是一款把屏幕做的更大些的IPAD了吗? 有哪些更多创新呢?为什么会需 ...
- 一文掌握Python多线程与多进程
Python的多线程和多进程 一.简介 并发是今天计算机编程中的一项重要能力,尤其是在面对需要大量计算或I/O操作的任务时.Python 提供了多种并发的处理方式,本篇文章将深入探讨其中的两种:多线程 ...
- 打包 IPA processing failed 失败
查看报错日志:有些SDK含有x86_64架构,移除即可 1. cd 该库SDK路径下 2.执行 lipo -remove x86_64 BaiduTraceSDK -o BaiduTraceSDK 解 ...
- typedef函数的使用
typedef int INT; //相当于给int起了一个别名INT typedef struct Student { int sid; char name[100]; char sex; }ST; ...
- 在langchain中使用带简短知识内容的prompt template
简介 langchain中有个比较有意思的prompt template叫做FewShotPromptTemplate. 他是这句话的简写:"Prompt template that con ...
- Django: 后台常用操作
指定状态码 return JsonResponse(data, status=201) Djano删除数据库 删除对应数据库后,删除对应文件 删除对应的记录 Django后台管理 创建超级管理员 py ...