XMPP收发消息2
发布日期:2021-08-12 01:50:53 浏览次数:6 分类:技术文章

本文共 2662 字,大约阅读时间需要 8 分钟。

Message:

接着写

.h 

1 /*! 2  *  @Author Dylan. 3  * 4  *  callback Block 5  */ 6 typedef void(^sendSuccess)(); 7 typedef void(^sendFailure)(id); 8  9 /*!10  *  sendMessageBy model11  */12 - (void)sendMessage: (ADMessageModel *)message13         sendSuccess: (sendSuccess)success14         sendFailure: (sendFailure)failure;15 16 /*!17  *  @Author Dylan.18  *19  *  unRead Msg20  */21 @property (nonatomic, strong) NSMutableDictionary * unReadMsg;22 23 /*!24  *  @Author Dylan.25  *26  *  new Msg27  */28 @property (nonatomic, copy) void (^newMessage) (id);29 30 31 @end

.m

1 #pragma mark - initData 2 - (void)initData { 3     // 可做数据持久化 4     self.unReadMsg = [NSMutableDictionary dictionary]; 5 } 6  7 #pragma mark Methods 8 - (void)sendMessage: (ADMessageModel *)message 9         sendSuccess: (sendSuccess)success10         sendFailure: (sendFailure)failure {11     12     // set callback block13     self.success = success;14     self.failure = failure;15     16     NSXMLElement * body = [NSXMLElement elementWithName:@"body"];17     [body setStringValue:message.body];18     19     //生成XML消息文档20     NSXMLElement *mes = [NSXMLElement elementWithName:@"message"];21     //消息类型22     [mes addAttributeWithName:@"type" stringValue:@"chat"];23     //发送给谁24     [mes addAttributeWithName:@"to" stringValue:message.to];25     //由谁发送26     [mes addAttributeWithName:@"from" stringValue:message.from];27     //组合28     [mes addChild:body];29     //发送消息30     [[self xmppStream] sendElement:mes];31 }32 33 #pragma mark - delegeteMethods34 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message {35     36     NSString * body = [[message elementForName:@"body"] stringValue];37     NSString * from = [[message attributeForName:@"from"] stringValue];38     39     if (body != nil) {40         41         NSMutableDictionary * msgDict = [NSMutableDictionary dictionary];42         ADMessageModel * model = [[ADMessageModel alloc] init];43         model.body = body;44         model.from = from;45         [msgDict setValue:model forKey:[ADCurrentTime getCurrentTime]];46         47         if ([from isEqualToString:[[NSUserDefaults standardUserDefaults] stringForKey:CURRENT_CHAT]]) {48             49             self.newMessage(msgDict);50         } else {51             // not current chat52             if ([_unReadMsg.allKeys containsObject:from]) {53                 [_unReadMsg[from] addObject:model];54             } else {55                 [_unReadMsg setValue:[NSMutableArray arrayWithObject:msgDict] forKey:from];56             }57         }58         59     }60 }61 62 @end

 

转载于:https://www.cnblogs.com/Dylan-Alice/p/Dylan_XMPP2.html

转载地址:https://blog.csdn.net/weixin_30642305/article/details/96018095 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Asp.Net细节性问题技巧精萃
下一篇:HDU 5441 Travel (带权并查集 离线)

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月04日 23时49分07秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【组队学习】【26期】编程实践(Python办公自动化) 2021-06-30
【通俗理解线性代数】 -- 特殊的矩阵 2021-06-30
【通俗理解线性代数】 -- 矩阵的等价与相似 2021-06-30
【通俗理解线性代数】 -- 矩阵的相似对角化 2019-04-27
【建模必备】遗传算法的基本原理与步骤(适应度函数与适应度分配) 2019-04-27
【建模必备】遗传算法的基本原理与步骤(交叉) 2019-04-27
【建模必备】遗传算法的基本原理与步骤(变异) 2019-04-27
【怎样写代码】向现有类型“添加”方法 -- 扩展方法(一):扩展方法概述 2019-04-27
【怎样写代码】向现有类型“添加”方法 -- 扩展方法(二):扩展方法的实现与调用 2019-04-27
【怎样写代码】向现有类型“添加”方法 -- 扩展方法(三):为枚举类型创建方法 2019-04-27
【怎样写代码】向现有类型“添加”方法 -- 扩展方法(四):在编译时绑定扩展方法的规则 2019-04-27
【怎样写代码】实现对象的复用 -- 享元模式(一):问题案例 2019-04-27
【怎样写代码】实现对象的复用 -- 享元模式(二):解决方案 2019-04-27
【怎样写代码】偷窥高手 -- 反射技术(一):前期准备 2019-04-27
【怎样写代码】对象克隆 -- 原型模式(二):解决方案 2019-04-27
又有六所大学考研预调剂系统已开放! 2019-04-27
如何利用 C# 爬取「京东 - 计算机与互联网图书销量榜」! 2019-04-27
股市币市:数据分析与交易所公告(20190226) 2019-04-27
一份来自上海院校的考研预调剂系统已开放名单! 2019-04-27
股市币市:数据分析与交易所公告(20190227) 2019-04-27