ServerMqFramework.h

#import "MqttFramework.h"@interface ServerMqFramework : MqttFramework/*** @brief  得到模块控制器的句柄单例** @param [in] N/A* @param [out] N/A* @return void* @note*/+(ServerMqFramework*)getMQttServerFrameInstance;- (int)callBusinessProcessEX:(NSString *)capabilityId withMessageType:(NSString *)MessageType WithMessage:(id)messageVector withTopic:(NSString *)topic;@end

ServerMqFramework.m

#import "ServerMqFramework.h"
#import "getMacAddress.h"@implementation ServerMqFramework/*** @brief  得到模块控制器的句柄单例** @param [in] N/A* @param [out] N/A* @return void* @note*/static ServerMqFramework *mqttInstance = nil;
+(ServerMqFramework*)getMQttServerFrameInstance
{@synchronized(self){if(mqttInstance==nil){mqttInstance=[[self alloc]init];}}return mqttInstance;
}#pragma  --mark  BusinessModuleProtocol  delegate
- (int)initBusinessModule:(BusinessModuleInfo*)info
{info.businessModuleIdEX = @"MqttServerFrameWork";//businessFrameworks_ = info.businessFramework;return 0;
}//指定发送到远程的响应接收者的主题   (实现宏观上的点对点传输)  //2012/11/30   modify- (int)callBusinessProcessEX:(NSString *)capabilityId withMessageType:(NSString *)MessageType WithMessage:(id)messageVector withTopic:(NSString *)topic
{NSLog(@"server capabilityId = %@  topic = %@  messageVector = %@",capabilityId,MessageType,messageVector);AppDelegate  *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];MQTTClient   *serverMQTTClient = [app serverMqClient];NSString  *sendStr = [[NSString alloc] initWithData:[XmlAdept makeMqttXML:MessageType withDictionary:(NSDictionary *)messageVector] encoding:NSUTF8StringEncoding];//    /****************去掉最后换行符********************/int index = sendStr.length-1;sendStr = [sendStr substringToIndex:index];NSString *string = [NSString stringWithFormat:@"**%@**",sendStr];NSLog(@"server senderMesg = %@",string);[serverMQTTClient publishString:sendStr toTopic:topic retain:NO];return 0;
}-(void)requestResult:(NSString *)topic  withData:(id)resultData
{NSLog(@"远程mq服务器发送业务广播 给监听者");[businessFrameworks_ broadcastBusinessNotifyEX:topic withInParam:resultData];
}/*** @brief 定义mqtt消息主题** @param [in] N/A* @param [out] N/A* @return void* @note*/-(void)productTheme:(NSString *)theme
{NSLog(@"server theme = %@",theme);AppDelegate  *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];MQTTClient *mosq = [app serverMqClient];[mosq setHost:Mqtt_Server_URL];[mosq connect];[mosq subscribe:theme];
}/*** @brief 重连mqtt服务器** @param [in] N/A* @param [out] N/A* @return void* @note*/
-(void)reconnectMqtt
{AppDelegate  *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];MQTTClient *mosq = [app serverMqClient];[mosq setHost:Mqtt_Server_URL];[mosq reconnect];}#pragma --mark  mosquittoclientDelegate- (void) didConnect:(NSUInteger)code
{if (code == 0){NSLog(@"连接远程Mqtt服务器返回码为:%d 连接mqtt成功",code);}else{NSLog(@"连接远程Mqtt服务器失败");}}- (void) didDisconnect
{NSLog(@"Server mqtt disconnect!");AppDelegate  *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];MQTTClient *mosq = [app serverMqClient];//断开后自己主动重连//3g或wifi任一可达就重连if ([Common IsEnable3G] || [Common IsEnableWIFI]){[mosq reconnect];   //远程MQTT服务器端重连NSString  *serverTheme = getMacAddress();[mosq subscribe:serverTheme]; //又一次订阅主题}}//处理各个主题相应的message- (void) didReceiveMessage: (NSString*)message topic:(NSString*)topic
{NSLog(@" serverMqtt %@ => %@", topic, message);NSArray   *resultArr = [[NSArray alloc]initWithObjects:message, nil];NSArray   *list = [XmlAdept mqttParseMessageNode:resultArr];NSString  *type = [[list objectAtIndex:0] objectForKey:@"type"];[self requestResult:type withData:list];}/*** @brief 给远程mqtt服务器发送消息   对外接口** @param [in] N/A* @param [out] N/A* @return void* @note*/+(void)publishMessage:(NSString *)message   withTopicType:(NSString *)topicType
{AppDelegate  *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];MQTTClient *mosq = [app serverMqClient];[mosq publishString:message toTopic:topicType retain:NO];  //消息的retain类型设置为NO让其不在消息缓冲池中保留
}-(void)dealloc
{[super dealloc];
}@end

转载于:https://www.cnblogs.com/gccbuaa/p/7214395.html

Mqtt协议IOS端移植3相关推荐

  1. MQTT协议版本Mosquitto移植到嵌入式arm平台

    文章目录 前言 一.mosquitto是什么? 二.交叉编译 1.交叉编译openssl源码 2.交叉编译e2fsprogs源码 3.交叉编译c-ares源码 4.交叉编译uuid源码 5.交叉编译m ...

  2. mqtt android简书,iOS MQTT协议笔记

    前言 接到任务项目需要用MQTT来写消息推送,经过一段时间在网上查看资料后写下这篇文章,文章内容大都来自互联网,在文章最后也会贴出相关网址和Demo.写这文章主要目的是自己总结下经验做下笔记,以便日后 ...

  3. 如何在鸿蒙系统中移植 Paho-MQTT 实现MQTT协议

    MQTT 是当前最主流的物联网通信协议,需要物联网云平台,例如华为云.阿里云.移动OneNET都支持mqtt.而Hi3861则是一款专为IoT应用场景打造的芯片.本节主要讲如何在鸿蒙系统中通过移植第3 ...

  4. Amazon---IoT--Android和iOS上的实践,通过MQTT协议连接AWS IoT,并订阅和推送消息

    因为公司有一个物联网项目需要使用到亚马逊到AWS-IOT服务,通过iot服务来控制物联网设备,国内和国外都没什么人用,连google都极少有跟这个有关帖子,所以做一个踩坑总结: 先放一个官方博客关于A ...

  5. java实现mqtt服务端_基于Swoole使用MQTT协议连接阿里云物联网平台设备实现消息订阅

    阿里云物联网平台为设备提供安全可靠的连接通信能力,支撑设备数据采集上云,我们这里认为阿里云物联网平台是 MQTT 服务端,那么我们自己的设备作为客户端,应该如何实现消息订阅? 阿里云没有提供 PHP ...

  6. 【第三弹】经典移植至IOS端、经典合集

    这次整合的都是一些经典的.App Store已经下架的.比较耐玩的游戏 然后就是有发现很多同学下载完之后有的不需要ID验证就能直接运行,有的却又要ID验证,且验证了还是不行 可能是因为自身的系统原因? ...

  7. 【第二弹】经典移植至IOS端、经典合集

    上传的都是中文版,且都是免费,亲测,如有版本变化收费,请卸载,在通知下我,后续更新在补充新版本.总之请大家放心下载体验哈! (一般不会,都是亲测)如果某些软件需要验证ID才能开始玩的话,(本身是提供I ...

  8. STM32+ESP8266(ESP-12F)物联网温度计-移植paho MQTT协议连接阿里云

    STM32+ESP8266(ESP-12F)物联网温度计-移植paho MQTT协议连接阿里云 目录 STM32+ESP8266(ESP-12F)物联网温度计-移植paho MQTT协议连接阿里云 一 ...

  9. 【第一弹】经典移植至IOS端、经典合集

    前段时间比较空间,无奈手机又没有一些游戏可玩,之后就在捣鼓一些移植的游戏系列 以免以后在出现手机只能看网页的尴尬局面,也是从网上搜索,整合而至! 一部分是移植到IOS端的,一部分是经典游戏,我也顺道整 ...

最新文章

  1. python怎么帮助运营 进行数据管理_注意!这里手把手教你做数据运营管理
  2. Morse理论:拓扑不变性特征匹配原理
  3. java 实现类似于python requests包的Session类,自动管理cookie。
  4. python入门经典100题-Python3基础训练经典100题(带答案)下载
  5. 在 Ubuntu 和 Linux Mint 上释放空间的9种简单方法
  6. 使用SQLite3存储和读取数据(转)
  7. python报表自动化系列 - 获得指定目录下所有文件名
  8. 软件单元测试及测试用例设计
  9. 计算机网络七层结构与功能,网络七层结构介绍
  10. 保护个人隐私,你需要这样设置 iPhone 的语音备忘录,禁用位置命名
  11. 计算机启动后无法进入系统怎么办,开机进不了windows系统怎么办
  12. 读取配置文件godotenv
  13. ssh端口转发(隧道技术)
  14. Phonetic symbol 双元音 -- əʊ
  15. TiDB 在国信证券海量数据高并发场景中的实践
  16. 《富爸爸,穷爸爸》书摘二
  17. 【山外笔记-Linux 命令】cp 命令详解
  18. 大连医科大学中山学院模拟医院信息系统实验室建设完成
  19. 数据是如何在内存中存储的?
  20. Springboot+Vue实现在线聊天室项目-修改头像、添加好友接口的实现

热门文章

  1. 设计模式---适配器设计模式
  2. 云南计算机专修学校附中,昆明高中哪家强? 师附中和昆一中高考尖子生最多...
  3. linux dev alloc name,深入理解Linux网络技术内幕-设备注册和初始化(二)
  4. ios 高德获取定位_解决ios11不支持高德地图API定位功能的方法
  5. java集合清空_java 集合删除数据
  6. php 制作ppt,PPT制作三个基本要素是什么?
  7. java date 一个月_java中的日期加一个月的计算
  8. python re正则查找_python正则表达式 - re
  9. ENSP配置 实例五 RIP配置
  10. iec61131 3 html5,IEC61131-3{ed3.0}标准资料.doc