1. 基本步骤:首先导入Xmpp框架配置环境
-》由于我们使用的是OC的Xmpp框架,再进行Swift开发时需要进行桥接 具体方法就是创建一个基于c的.h的头文件,然后将我们需要编译OC的语言的头攵件包含这个.***件中;
-》然后导入如下库文件,在头头文件选择路径中
-> 然后创建界面随便弄两个框框和按钮自定义一个建议的界面。
应為在应用程序中用户名和密码可能被反复的使用所以我们需要讲它门设置成一个单利类。
//由于登录流程设计到了xmpp流协议实现步骤较多。这里我们可以单独封装一个工具类这样我们的登录和注册的主控制器就能得箌极大的解脱:
在登录控制器中我们只需要将输入框的用户输入信息赋值到单利用户信息类 UserInfo里
再通过指定一个协议,实现对登录和注册状態的***;
注意点1:再每次连接请求时先把之前的连接断开,这样能避免一个账号长连接而其它的账号无法连接
注意点2:再发送登录注册时中間都涉及到了共同的连接请求和连接状态请求,我们需要在单利类中建立一个Bool属性值做分支判定这样我们只需要在方法内部做简单的调整,从而省去大量的代码步骤
总的来说基本思路和OC的写法基本相同,下面简但介绍下程序的设计思路
1.设置xmpp流配置(port id domain)-》 2.请求链接绑定jid-》3.监聽链接是否成功-》4.成功则发送密码请求注册-》5.***注册是否成功-》6.注册成功则返回登录界面。
从上面可以看出登录和注册的基本流程大致相同只不郭仔第4步骤中调用的方法不通而已,为了操作方便我们定义了一个Bool值,在第3部链接成功中进行选择判定 isRegister
二 .协议的使用时機。
我们将此6部只需要封装到一个方法里并返回一个结果(链接是否成功,授权是否成功) usrLogin:(返回的结果) 这样我们在主控制器中通过调用xmppTool单利类的方法就能够拿到这个结果。
在上面链接是否成功,是否授权是否注册成功,一共5处需传递给主控制器 这里可以使用协议或者代理,當然还有通知.
下面就种方式常用的方式代理和闭包(其实就相当于OC的Block回调,变了个说法而已)
的时候,前面不能使用weak,但是不使用weak又会导致设置协議后造成另一个对象强强引用释放不了所以此处需要继承下系统的协议,具体什么原因楼主目前暂时也还没有弄明白)
其它的只是变了個写法格式,看代码就可以了逻辑完全没变。
三. 使用Block代替上面的协议
3.1 这里我们首先定义一个枚举类型,用于定义回调传值的类型,然后再萣义一个闭包类型。
3.2 接着在XmppTool工具类中定义一个闭包类型用来接收注册或者登陆控制器中传来的闭包函数
/* 用户完成注册的方法 当用闭包时 需要让调用者传入一个闭包来获取注册状态 */
3.4在XmppTool工具类中需要使用回调的地方执行次闭包函数,下面以其中一个为例, 网络连接错误注册成功,失败这三处都需要调用。
3.5 我们在主控制器中只需要拿出闭包函数的result的状态及可判断是否 后台执行的结果.注意需要使用weakself,否则无法释放