当前位置: 首页 > news >正文

网站怎么提升流量壁纸公司网站源码

网站怎么提升流量,壁纸公司网站源码,求个网站2022,海南行指三亚网站开发XMPPFramework是一个OS X/iOS平台的开源项目#xff0c;使用Objective-C实现了XMPP协议#xff08;RFC-3920#xff09;#xff0c;同时还提供了用于读写XML的工具#xff0c;大大简化了基于XMPP的通信应用的开发。 1. 登录和好友上下线 1.1XMPP中常用对象们 XMPPStream使用Objective-C实现了XMPP协议RFC-3920同时还提供了用于读写XML的工具大大简化了基于XMPP的通信应用的开发。 1. 登录和好友上下线 1.1XMPP中常用对象们 XMPPStreamxmpp基础服务类 XMPPRoster好友列表类 XMPPRosterCoreDataStorage好友列表用户账号在core data中的操作类 XMPPvCardCoreDataStorage好友名片昵称签名性别年龄等信息在core data中的操作类 XMPPvCardTemp好友名片实体类从数据库里取出来的都是它 xmppvCardAvatarModule好友头像 XMPPReconnect如果失去连接,自动重连 XMPPRoom提供多用户聊天支持 XMPPPubSub发布订阅 1.2登录操作也就是连接xmpp服务器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 - (void)connect {     if (self.xmppStream  nil) {         self.xmppStream  [[XMPPStream alloc] init];         [self.xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];     }     if (![self.xmppStream isConnected]) {         NSString *username  [[NSUserDefaults standardUserDefaults] objectForKey:username];         XMPPJID *jid  [XMPPJID jidWithUser:username domain:lizhen resource:Ework];         [self.xmppStream setMyJID:jid];         [self.xmppStream setHostName:10.4.125.113];         NSError *error  nil;         if (![self.xmppStream connect:error]) {             NSLog(Connect Error: %, [[error userInfo] description]);         }     } } connect成功之后会依次调用XMPPStreamDelegate的方法首先调用 1 2 3 - (void)xmppStream:(XMPPStream *)sender socketDidConnect:(GCDAsyncSocket *)socket ... 然后 1 - (void)xmppStreamDidConnect:(XMPPStream *)sender 在该方法下面需要使用xmppStream 的authenticateWithPassword方法进行密码验证成功的话会响应delegate的方法就是下面这个 1 - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender 1.3上线 实现 - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender 委托方法 1 2 3 4 - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender {     XMPPPresence *presence  [XMPPPresence presenceWithType:available];     [self.xmppStream sendElement:presence]; } 1.4退出并断开连接 1 2 3 4 5 6 - (void)disconnect {     XMPPPresence *presence  [XMPPPresence presenceWithType:unavailable];     [self.xmppStream sendElement:presence];            [self.xmppStream disconnect]; } 1.5好友状态 获取好友状态通过实现  1 2 3 - (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence ... 方法当接收到 presence 标签的内容时XMPPFramework 框架回调该方法  一个 presence 标签的格式一般如下 presence 的状态 available 上线 away 离开 do not disturb 忙碌 unavailable 下线 1 2 3 4 5 6 7 8 9 10 11 - (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence {     NSString *presenceType  [presence type];     NSString *presenceFromUser  [[presence from] user];     if (![presenceFromUser isEqualToString:[[sender myJID] user]]) {         if ([presenceType isEqualToString:available]) {             //         } else if ([presenceType isEqualToString:unavailable]) {             //         }     } } 2. 接收消息和发送消息 2.1接收消息 通过实现  1 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message; 方法 当接收到 message 标签的内容时XMPPFramework 框架回调该方法 根据 XMPP 协议消息体的内容存储在标签 body 内 1 2 3 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message {     NSString *messageBody  [[message elementForName:body] stringValue]; } 2.2发送消息 发送消息我们需要根据 XMPP 协议将数据放到标签内例如 1 2 3 4 5 6 7 8 9 10 - (void)sendMessage:(NSString *) message toUser:(NSString *) user {     NSXMLElement *body  [NSXMLElement elementWithName:body];     [body setStringValue:message];     NSXMLElement *message  [NSXMLElement elementWithName:message];     [message addAttributeWithName:type stringValue:chat];     NSString *to  [NSString stringWithFormat:%example.com, user];     [message addAttributeWithName:to stringValue:to];     [message addChild:body];     [self.xmppStream sendElement:message]; } 3. 获取好友信息和删除好友 3.1好友列表和好友名片 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [_xmppRoster fetchRoster];//获取好友列表 //获取到一个好友节点 - (void)xmppRoster:(XMPPRoster *)sender didRecieveRosterItem:(NSXMLElement *)item //获取完好友列表 - (void)xmppRosterDidEndPopulating:(XMPPRoster *)sender //到服务器上请求联系人名片信息 - (void)fetchvCardTempForJID:(XMPPJID *)jid; //请求联系人的名片如果数据库有就不请求没有就发送名片请求 - (void)fetchvCardTempForJID:(XMPPJID *)jid ignoreStorage:(BOOL)ignoreStorage; //获取联系人的名片如果数据库有就返回没有返回空并到服务器上抓取 - (XMPPvCardTemp *)vCardTempForJID:(XMPPJID *)jid shouldFetch:(BOOL)shouldFetch; //更新自己的名片信息 - (void)updateMyvCardTemp:(XMPPvCardTemp *)vCardTemp; //获取到一盒联系人的名片信息的回调 - (void)xmppvCardTempModule:(XMPPvCardTempModule *)vCardTempModule          didReceivevCardTemp:(XMPPvCardTemp *)vCardTemp                       forJID:(XMPPJID *)jid 3.2添加好友 1 2 3 4 5 6 7 8 9     //name为用户账号     - (void)XMPPAddFriendSubscribe:(NSString *)name     {         //XMPPHOST 就是服务器名  主机名         XMPPJID *jid  [XMPPJID jidWithString:[NSString stringWithFormat:%%,name,XMPPHOST]];         //[presence addAttributeWithName:subscription stringValue:好友];         [xmppRoster subscribePresenceToUser:jid];                } 3.3收到添加好友的请求 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15     - (void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence     {         //取得好友状态         NSString *presenceType  [NSString stringWithFormat:%, [presence type]]; //online/offline         //请求的用户         NSString *presenceFromUser [NSString stringWithFormat:%, [[presence from] user]];         NSLog(presenceType:%,presenceType);                    NSLog(presence2:%  sender2:%,presence,sender);                    XMPPJID *jid  [XMPPJID jidWithString:presenceFromUser];         //接收添加好友请求         [xmppRoster acceptPresenceSubscriptionRequestFrom:jid andAddToRoster:YES];                } 3.4删除好友 1 2 3 4 5 6 7 //删除好友name为好友账号 - (void)removeBuddy:(NSString *)name   {       XMPPJID *jid  [XMPPJID jidWithString:[NSString stringWithFormat:%%,name,XMPPHOST]];                [self xmppRoster] removeUser:jid];   } 4. 聊天室 初始化聊天室 1 2 3 4 5 6     XMPPJID *roomJID  [XMPPJID jidWithString:ROOM_JID];            xmppRoom  [[XMPPRoom alloc] initWithRoomStorage:self jid:roomJID];            [xmppRoom activate:xmppStream];     [xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()]; 创建聊天室成功 1 2 3 4     - (void)xmppRoomDidCreate:(XMPPRoom *)sender     {         DDLogInfo(%: %, THIS_FILE, THIS_METHOD);     } 加入聊天室使用昵称 1     [xmppRoom joinRoomUsingNickname:quack history:nil]; 获取聊天室信息 1 2 3 4 5 6 7     - (void)xmppRoomDidJoin:(XMPPRoom *)sender     {         [xmppRoom fetchConfigurationForm];         [xmppRoom fetchBanList];         [xmppRoom fetchMembersList];         [xmppRoom fetchModeratorsList];     } 如果房间存在会调用委托 1 2 3 4 5 6     // 收到禁止名单列表     - (void)xmppRoom:(XMPPRoom *)sender didFetchBanList:(NSArray *)items;     // 收到好友名单列表     - (void)xmppRoom:(XMPPRoom *)sender didFetchMembersList:(NSArray *)items;     // 收到主持人名单列表     - (void)xmppRoom:(XMPPRoom *)sender didFetchModeratorsList:(NSArray *)items; 房间不存在调用委托 1 2 3     - (void)xmppRoom:(XMPPRoom *)sender didNotFetchBanList:(XMPPIQ *)iqError;     - (void)xmppRoom:(XMPPRoom *)sender didNotFetchMembersList:(XMPPIQ *)iqError;     - (void)xmppRoom:(XMPPRoom *)sender didNotFetchModeratorsList:(XMPPIQ *)iqError; 离开房间 1 [xmppRoom deactivate:xmppStream]; XMPPRoomDelegate的其他代理方法: 离开聊天室 1 2 3 4     - (void)xmppRoomDidLeave:(XMPPRoom *)sender     {         DDLogVerbose(%: %, THIS_FILE, THIS_METHOD);     } 新人加入群聊 1 2 3 4     - (void)xmppRoom:(XMPPRoom *)sender occupantDidJoin:(XMPPJID *)occupantJID     {         DDLogVerbose(%: %, THIS_FILE, THIS_METHOD);     } 有人退出群聊 1 2 3 4     - (void)xmppRoom:(XMPPRoom *)sender occupantDidLeave:(XMPPJID *)occupantJID     {         DDLogVerbose(%: %, THIS_FILE, THIS_METHOD);     } 有人在群里发言 1 2 3 4     - (void)xmppRoom:(XMPPRoom *)sender didReceiveMessage:(XMPPMessage *)message fromOccupant:(XMPPJID *)occupantJID     {         DDLogVerbose(%: %, THIS_FILE, THIS_METHOD);     } 5. 消息回执 这个是XEP0184协议的内容 协议内容 发送消息时附加回执请求 代码实现 1 2 3 4 5 6 7     NSString *siID  [XMPPStream generateUUID];     //发送消息     XMPPMessage *message  [XMPPMessage messageWithType:chat to:jid elementID:siID];     NSXMLElement *receipt  [NSXMLElement elementWithName:request xmlns:urn:xmpp:receipts];     [message addChild:receipt];     [message addBody:测试];     [self.xmppStream sendElement:message]; 收到回执请求的消息发送回执 代码实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32     - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message     {         //回执判断         NSXMLElement *request  [message elementForName:request];         if (request)         {             if ([request.xmlns isEqualToString:urn:xmpp:receipts])//消息回执             {                 //组装消息回执                 XMPPMessage *msg  [XMPPMessage messageWithType:[message attributeStringValueForName:type] to:message.from elementID:[message attributeStringValueForName:id]];                 NSXMLElement *recieved  [NSXMLElement elementWithName:received xmlns:urn:xmpp:receipts];                 [msg addChild:recieved];                                    //发送回执                 [self.xmppStream sendElement:msg];             }         }else         {             NSXMLElement *received  [message elementForName:received];             if (received)             {                 if ([received.xmlns isEqualToString:urn:xmpp:receipts])//消息回执                 {                     //发送成功                     NSLog(message send success!);                 }               }           }                      //消息处理           //...       } 6. 添加AutoPing 为了监听服务器是否有效增加心跳监听。用XEP-0199协议在XMPPFrameWork框架下封装了 XMPPAutoPing 和 XMPPPing两个类都可以使用因为XMPPAutoPing已经组合进了XMPPPing类所以XMPPAutoPing使用起来更方便。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 //初始化并启动ping -(void)autoPingProxyServer:(NSString*)strProxyServer {     _xmppAutoPing  [[XMPPAutoPingalloc] init];     [_xmppAutoPingactivate:_xmppStream];     [_xmppAutoPingaddDelegate:selfdelegateQueue:  dispatch_get_main_queue()];     _xmppAutoPing.respondsToQueries  YES;     _xmppAutoPing.pingInterval2;//ping 间隔时间     if (nil ! strProxyServer)     {        _xmppAutoPing.targetJID  [XMPPJID jidWithString: strProxyServer ];//设置ping目标服务器如果为nil,则监听socketstream当前连接上的那个服务器     } } //卸载监听  [_xmppAutoPing   deactivate];   [_xmppAutoPing   removeDelegate:self];    _xmppAutoPing  nil; //ping XMPPAutoPingDelegate的委托方法: - (void)xmppAutoPingDidSendPing:(XMPPAutoPing *)sender {     NSLog(- (void)xmppAutoPingDidSendPing:(XMPPAutoPing *)sender); } - (void)xmppAutoPingDidReceivePong:(XMPPAutoPing *)sender {     NSLog(- (void)xmppAutoPingDidReceivePong:(XMPPAutoPing *)sender); }     - (void)xmppAutoPingDidTimeout:(XMPPAutoPing *)sender {     NSLog(- (void)xmppAutoPingDidTimeout:(XMPPAutoPing *)sender); } 转载于:https://www.cnblogs.com/fengmin/p/4973848.html
http://www.pierceye.com/news/280046/

相关文章:

  • 中材建设有限公司招标网站包装设计网课答案
  • python云服务器网站开发实例外贸小家电网站推广
  • 郑州做网站公司中天猫商城的商品来源
  • 织梦网站首页互联网保险平台排名
  • 免费做链接的网站做动画相册在哪个网站好
  • 做思维导图好看的网站可以做富集分析的网站
  • wordpress 媒体库 cos百度网站怎样优化排名
  • 自助建站程序html样式模板
  • 公主岭网站建设筑梦网站建设
  • 昊源建设监理有限公司网站广州住房与城乡建设部网站
  • 如何免费建立自己网站wordpress媒体优化
  • 南京企业做网站网站建设的类型有几种
  • 不需要证件做网站相城区建设网站
  • 游戏推广网站如何做的全网投放广告的渠道有哪些
  • 飞数石家庄网站建设seo 关键词优化
  • 织梦新手网站建设建筑工程公司资质
  • 网站建设开什么名目外贸网站建设关键点
  • 大学生网站设计河南省建筑工程信息网
  • 安徽省住房和城乡建设厅网站首页wordpress评论框中加文字提示
  • 南京营销型网站建设公司杭州模板建站代理
  • 网页设计比较优秀的网站沈阳网站推广公司
  • 西安网站建设维护如何免费制作app软件
  • 用 net做网站大理市城乡建设局网站
  • 怎么在建筑网站做翻译兼职哈尔滨 高端网站建设
  • 网站建设颜色注意事项优化网站要怎么做
  • 作图神器沧州网站优化
  • 做水果的网站有哪些公司网页设计作品
  • 电子商务网站运营流程北京app制作
  • 怎么在百度推广自己的网站市级部门网站建设自评报告
  • 德州做网站优化专门做酒的网站