XMPP学习(五)XMPP简单实现

XMPP中文文档:http://wiki.jabbercn.org/

参考博文:

XMPP系列博客https://blog.csdn.net/u011619283/article/category/6402547

详细介绍XMPP类:https://www.jianshu.com/p/c196135efc45

设置后台模式(还未成功?已成功):https://blog.csdn.net/reylen/article/details/12567971

XMPP系列开发:https://www.jianshu.com/p/eb273cb8ac94

iOS即时通讯,从入门到放弃?https://juejin.im/entry/58909369570c3500621cc4ea


本文Demo:https://github.com/cxymq/XMPPSwift


项目用Swift实现,CocoaPod集成XMPPFramework。

 

详细介绍都可在上述文章中获取,对号入座,不重复赘述。Demo只是简单接口调用,并非完整项目。

类文件简介

1.XMPPJID

    标识用户,三部分组成:node identifier、domain、resource

 

2.XMPPMessage

    消息类,组装消息体,type包含chat、groupchat、error、headline、normal

 

3.XMPPPresence

    表明用户状态,如在线、离线、勿扰

 

4.XMPPStream

    服务器连接类,设置delegate可以在回调中获取连接状态、认证情况、发送或接收消息情况以及发送自身状态的情况。

 

5.XMPPRoster

    好友列表类,处理好友相关事务,获取好友列表、好友请求以及拒绝或同意请求。设置delegate在回调中拉取好友列表,获取好友的操作行为。

 

补充:

因为公司项目用OC实现,想直接把XMPPManager.swift桥接到项目,但是出现无法调用方法的问题,于是用OC重写了XMPPManager类。

出现以下问题:

1.CocoaPod集成之后,framework报错,需要在framework中修改头文件,但是这样对于多人开发产生不便。因此可以直接下载源码(https://github.com/robbiehanson/XMPPFramework),拷贝部分文件到项目中。

 

补充2:

之前设置后台模式,一直未成功。即使设置后台模式(background modes)加上Voice over IP 还是不行,后来发现需要在Applegate中加上后台模式代码。

OC代码如下:(Swift版会补充到Demo中)

static UIBackgroundTaskIdentifier _taskId;



- (void)getBackgroundTask {
    UIBackgroundTaskIdentifier tempTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
       //后台任务
        
    }];
    
    if (_taskId != UIBackgroundTaskInvalid) {
        [self endBackgroundTask];
    }
    
    _taskId = tempTaskId;
    
    [self performSelector:@selector(getBackgroundTask) withObject:nil afterDelay:120];
}

- (void)endBackgroundTask {
    [[UIApplication sharedApplication] endBackgroundTask:_taskId];
    _taskId = UIBackgroundTaskInvalid;
}

#pragma mark - application

- (void)applicationDidEnterBackground:(UIApplication *)application {
	LOGI(@"%@", NSStringFromSelector(_cmd));
    
    [self getBackgroundTask];
}

-(void)applicationWillEnterForeground:(UIApplication *)application {
    [self endBackgroundTask];
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值