码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 教你2种方法,将iOS设备通过MQTT协议连接到华为云物联网平台


    合集 - 云计算(46)
    1.15年了,我们到底怎样才能用好 Serverless?04-272.工业互联网:加速从“中国制造”迈向“中国智造”05-043.Istio数据面新模式:Ambient Mesh技术解析05-064.分布式场景下,如何对外提供易变的服务,打造可靠的注册中心?05-065.看华为云Serverless 4大特性如何让软件架构更丝滑05-066.当Serverless遇到Regionless:现状与挑战05-087.全域Serverless化,华为云引领下一代云计算新范式07-198.中小企业建设数字化工厂,选择集成老路还是整体重构?07-209.EDS从小白到专家丨打造你的专属“数据物流”系统07-2010.DataArts Studio实践丨通过Rest Client 接口读取RESTful接口数据的能力07-2111.MES/MOM国内市场现状趋势与新生态模式参考07-2112.新一轮智能制造相关产业政策猜想07-2413.3步带你搞定华为云编译构建CodeArts Build “新手村任务”07-2414.深耕零售行业数字化,乐檬软件与华为云携手共进07-2515.资源成本降低70%!华为MetaERP资产核算的Serverless架构实践07-2716.云图说丨初识华为云OrgID:轻松实现统一帐号、统一授权07-2817.建设数字工厂:生产订单批量拆分的实现方法07-2818.建设数字工厂:MRP物料需求计划的逻辑原理与配置方法07-3119.如何为物联网设备注入“华为云+鸿蒙DNA”?08-0220.山歌寥哉!生产制造系统需要新治理框架08-0321.下一代MES系统架构分析与选型参考08-0422.如何用IoT边缘连接器实现云端应用控制PLC?08-0723.TooKit助力开发者上云08-0924.华为云API Explorer:自动化运维的得力助手08-1525.【HCDG城市行东莞站】松山湖开发者村助力企业释放数字新动能08-2126.EDS从小白到专家丨生态产业链高效协同的一计良策08-2527.KubeEdge Sedna v0.6 & Ianvs v0.2 重磅发布:边云协同终身学习全面升级08-2828.Karmada 结合 coreDNS 插件实现跨集群统一域名访问08-2929.《华为云DTSE》期刊2023年第二季—HDC.Cloud 2023专刊08-2930.跑AI大模型的K8s与普通K8s有什么不同?08-3131.跨越2000公里,15岁少年的云上逐梦09-0632.EDS从小白到专家丨打造数据交换的六边形卫士,让你的数据你做主09-0633.华为云发布CodeArts Inspector漏洞管理服务,守护产品研发安全09-11
    34.教你2种方法,将iOS设备通过MQTT协议连接到华为云物联网平台09-12
    35.一图回顾华为云开发者联盟扫地僧见面会09-2236.如何利用动态配置中心在JavaAgent中实现微服务的多样化治理10-0837.KubeCon China 2023 | 拥抱开源,华为云原生华彩绽放10-1138.一图看懂CodeArts Inspector 三大特性,带你玩转漏洞管理服务10-1139.Cloud Bursting解决方案,Serverless容器降本增效极致体验10-1240.4大焕新,华为云CCE带你感受容器化上云体验10-1241. 华为云发布CodeArts APIMock服务,精准Mock,并行开发零等待!10-1642.当 BACnet 遇上 IoT,你将体验到不一样的大楼10-1743.云图说|初识API中心APIHub10-2044.文韬武略,创新无界,华为云1024程序员节精彩抢先看10-2345.KubeEdge v1.15.0发布!新增5大特性10-2446.1024 | 9位开发者分享生涯“最”时刻,文武状元大PK等你来10-24
    收起

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

     

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

     

  • 相关阅读:
    在群晖NAS部署_开源在线项目任务管理工具【dooTask】
    大数据必学Java基础(十):标识符和关键字
    分布式定时任务调度xxl-job
    Hive中的数据类型和存储格式总结
    参考篇-【货位规划的价值所在】
    基础:types of keys
    分布式事务解决方案
    c盘文件误删怎么恢复?这里介绍四种方法,赶紧看过来
    wqs二分+斜率优化:1019T4 / P9338
    Redis理解
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/17696245.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号