您的位置:首页 > 移动开发 > IOS开发

环信使用思路逻辑

2016-07-21 09:26 495 查看
//  环信  方法调用说明    主调方法用 

// 所有的注册  监听  全部是 IchatManagerDelegate   遵守 <IchatManagerDelegate>  协议 

[[EaseMobsharedInstance].chatManagerremoveDelegate:self];

    [[EaseMobsharedInstance].chatManageraddDelegate:selfdelegateQueue:nil];

/*!

 @method

 @brief注册一个监听对象到监听列表中

 @discussion把监听对象添加到监听列表中准备接收相应的事件

 @param delegate需要注册的监听对象

 @param queue通知监听对象时的线程

 @result

 */

- (void)addDelegate:(id<EMChatManagerDelegate>)delegate delegateQueue:(dispatch_queue_t)queue;

/*!

 @method

 @brief从监听列表中移除一个监听对象

 @discussion把监听对象从监听列表中移除,取消接收相应的事件

 @param delegate需要移除的监听对象

 @result

 */

- (void)removeDelegate:(id<EMChatManagerDelegate>)delegate;

// 登陆   —>  拿到用户名密码  —> 去服务器访问  —> 返回个人信息

环信方法调用   —> 
/*!

 @method

 @brief使用用户名密码登录聊天服务器

 @discussion如果登陆失败
4000
,返回nil

 @param username用户名

 @param password密码

 @param pError  错误信息

 @result登录后返回的用户信息

 */

- (NSDictionary *)loginWithUsername:(NSString *)username

                          password:(NSString *)password

                             error:(EMError **)pError;

// 注册   —>  拿到用户个人信息  —> 发送给服务器  —>  注册成功 / 注册失败

/*!

 @method

 @brief
初始化SDK

 @discussion失败返回EMError,成功返回nil

 @param anAppKey       申请应用时的appkey

 @param anAPNSCertName 需要使用的APNS证书名字(需要与后台上传时的APNS证书名字相同,客户端打包时的证书,需要与服务器后台的证书一一对应)

 @result
初始化是否成功

 */

- (EMError *)registerSDKWithAppKey:(NSString *)anAppKey

                      apnsCertName:(NSString *)anAPNSCertName;

// 获取好友列表  —>  从环信获取好友列表(是一个数组) —> 将好友列表发送给服务器  —> 服务器返回 一个大的数组  每一个好友ID 对应 每一个人的信息(头像、昵称等)

*!

 @method

 @brief手动获取好友列表(异步方法)

 @discussion

 @param completion获取好友列表完成后的回调

 @param queue      completion block回调时的线程

 */

- (void *)asyncFetchBuddyListWithCompletion:(void (^)(NSArray *buddyList,EMError
*error))completion

                                    onQueue:(dispatch_queue_t)queue;

// 添加好友  —>   跳转到搜索好友界面  —> 拿到用户需要搜索的好友昵称  —> 发送给服务器  —> 服务器返回查询到的好友  —>  点击这个好友  —> 跳转到好友个人信息  —>  点击添加好友按钮  —> 调用环信添加好友方法 

// 监听被  同意  /  拒绝  好友请求时的回调    (遵守协议  重写方法)

/*!

 @method

 @brief申请添加某个用户为好友

 @discussion

 @param username需要添加为好友的username

 @param message 申请添加好友时的附带信息

 @param pError  错误信息

 @result好友申请是否发送成功

 */

- (BOOL)addBuddy:(NSString *)username

         message:(NSString *)message

           error:(EMError **)pError;

/*!

 @method

 @brief好友请求被接受时的回调

 @discussion

 @param username之前发出的好友请求被用户username接受了

 */

- (void)didAcceptedByBuddy:(NSString *)username;

/*!

 @method

 @brief好友请求被拒绝时的回调

 @discussion

 @param username之前发出的好友请求被用户username拒绝了

 */

- (void)didRejectedByBuddy:(NSString *)username;

// 被添加好友  —>  在appdelegate里面  监听 被添加好友的协议  —>  实现 协议的代理方法   —> 同意  / 拒绝 添加 好友  —>  调用环信相对应的方法   

/*!

 @method

 @brief接收到好友请求时的通知

 @discussion

 @param username发起好友请求的用户username

 @param message 收到好友请求时的say hello消息

 */

- (void)didReceiveBuddyRequest:(NSString *)username

                       message:(NSString *)message;

// 获取会话列表(最新联系人界面)  —>  调用环信的方法  获取好友列表   —>  返回的是一个数组  数组里存放的是 EMConversation
类型(环信的会话模型)
—> EMConversation  里面有一个属性是
chatter(对方的好友ID) isGroup
是是否是群组 具体详情 
看 EMConversation 这个头文件 

我的做法是 —>  把会话中的chatter  发给服务器  —>  chatter 对应的(头像、昵称) —>  展示到界面中  

// 注册 监听 回调  —>  对来消息时  做处理  —>  重写(1)  (方法有很多  我用的是未读消息数改变时的回调)

/*!

 @method

 @brief获取当前登录用户的会话列表

 @param append2Chat 是否加到内存中。

        YES为加到内存中。加到内存中之后,会有相应的回调被触发从而更新UI;

        NO为不加到内存中。如果不加到内存中,则只会直接添加进DB,不会有SDK的回调函数被触发从而去更新UI。

 @result
会话对象列表

 */

- (NSArray *)loadAllConversationsFromDatabaseWithAppend2Chat:(BOOL)append2Chat;

 (1)重写

/*!

 @method

 @brief未读消息数改变时的回调

 @discussion当EMConversation对象的enableUnreadMessagesCountEvent为YES时,会触发此回调

 @result

 */

- (void)didUnreadMessagesCountChanged

{

//刷新 会话列表  

}

/*!

 @method

 @brief接收到离线非透传消息的回调

 @discussion

 @param offlineMessages接收到‘

的离线列表

 @result

 */

- (void)didReceiveOfflineMessages:(NSArray *)offlineMessages;

// 聊天室   (聊天界面)  —>   环信中的chatViewController  拿到它  直接把 chatter属性传给他 —>  就可以进行聊天了

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS开发 环信