本文分享自华为云社区《如何将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协议连接到华为云物联网平台的更多相关文章

  1. 手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台

    摘要:本期文章采用了4G LTE Cat.1模块,编程语言用的是lua,实现对华为云物联网平台的设备通信与控制 本文分享自华为云社区<基于luatos的4G(LTE Cat.1)模组接入华为云物 ...

  2. 图解连接阿里云(一)创建阿里云物联网平台产品和设备,使用MQTT.fx快速体验

    1.  打开 https://www.aliyun.com/  注册账号 2.注册账号登录后点击控制台 3. 在下图1处输入物联网平台,会弹出2处所示物联网平台的入口,点击红色箭头所示处,进入物联网平 ...

  3. ESA2GJK1DH1K基础篇: 阿里云物联网平台: 云平台显示单片机采集的温湿度数据,控制设备继电器(基于GPRS模块,AT指令TCP_MQTT通信)

    实现的功能 上一节是使用的Wi-Fi模块连接的阿里云平台,这节呢咱用GPRS连接. 阿里云的设备配置还是按照上一节的,有个温度,有个湿度. 测试 一,打开单片机程序 二,根据自己的修改,然后下载进去单 ...

  4. OpenHarmony3.0如何轻松连接华为云IoT设备接入平台?

    摘要:本文主要介绍基于OpenHarmony 3.0版本来对接华为云IoT设备接入IoTDA,以小熊派BearPi-HM_Nano开发板为例,使用huaweicloud_iot_link SDK对接华 ...

  5. mysql 远程连接数据库的二种方法

    http://blog.csdn.net/freecodetor/article/details/5799550 一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5 ...

  6. python字符串连接的三种方法及其效率、适用场景详解

    python字符串连接的方法,一般有以下三种:方法1:直接通过加号(+)操作符连接website=& 39;python& 39;+& 39;tab& 39;+& ...

  7. mysql 远程连接数据库的二种方法

    一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"root",密码"123 ...

  8. C++连接mysql数据库的两种方法

    本文主要介绍了C++连接mysql数据库的两种方法,希望通过本文,能对你有所帮助,一起来看. 现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用a ...

  9. 转 mysql 远程连接数据库的二种方法

    mysql 远程连接数据库的二种方法   一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口“3306”,用户名为“root”,密码“123456” ...

  10. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:4. 设备上报属性

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

随机推荐

  1. 代码随想录算法训练营Day18 二叉树

    代码随想录算法训练营 代码随想录算法训练营Day18 二叉树| 513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构 ...

  2. VS code 的安装

    VS code 的安装 Win10环境配置(一)--C\C++篇 Win10环境配置(二) --Java篇 安装前先 ,完成环境的配置 1.工具准备 官网下载:Visual Studio Code 2 ...

  3. 利用jira及confluence的API进行批量操作(查找/更新/导出/备份/删除等)

    前言: 近期因为某些原因需要批量替换掉 jira 和 confluence中的特定关键字,而且在替换前还希望进行备份(以便后续恢复)和导出(方便查看)atlassian官方的api介绍文档太简陋,很多 ...

  4. Spring Boot实现高质量的CRUD-2

    (续前文) 5.Dao类 ​ ​ Dao类提供操作访问数据库表的接口方法.常规的CRUD,将考虑下列接口方法: ​ 1)插入单条对象记录: ​ 2)批量插入对象记录: ​ 3)修改单条对象记录: ​ ...

  5. zabbix 监控nginx

    nginx内置了一个status状态的功能,通过配置可以看到nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等,可以利用这个功能编写zabbix监控 ...

  6. Kubernetes——构建平台工程的利器

    作者|Loft Team 翻译|Seal软件 链接|https://loft.sh/blog/why-platform-engineering-teams-should-standardize-on- ...

  7. Transformer编码器和解码器被广泛应用于自然语言处理、计算机视觉、语音识别等领域。下面是一些Trans

    目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.1.1 编码器 2.1.2 解码器 2.2 技术原理介绍 2.2.1 编码器 2.2.2 解码器 2.3 相关技术比较 3. 实现步骤 ...

  8. AI作画本地搭建

    前言 Novel AI (简称NAI)是一个线上的深度学习小说续写平台,而 NAI Diffusion 是 NAI 在2022年10月3日推出的基于 Stable Diffusion 算法的自动生成二 ...

  9. 工作中必备的12个Git命令

    前言 以下是工作中必备的12个Git命令,包括创建和初始化仓库.克隆远程仓库.添加和提交文件.查看状态和历史记录.创建和切换分支.合并分支以及推送和拉取远程仓库等操作.掌握这些命令可以帮助你进行基本的 ...

  10. SSM项目整合思路以及代码

    当前真实的企业开发中,SpringBoot已经统一Java企业应用开发,很少有在使用SSM项目来进行项目开发的. 可是在教学阶段,还是很有必要给学生讲解Java开发中一套很经典的框架,SSM框架.作为 ...