环信使用思路逻辑

//  环信  方法调用说明    主调方法用 


// 所有的注册  监听  全部是 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如果登陆失败,返回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未读消息数改变时的回调

 @discussionEMConversation对象的enableUnreadMessagesCountEventYES,会触发此回调

 @result

 */

- (void)didUnreadMessagesCountChanged

{

//刷新 会话列表  

}



/*!

 @method

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

 @discussion

 @param offlineMessages接收到‘

的离线列表

 @result

 */

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






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

 


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值