环信3.x单聊集成

作者: w佐w | 来源:发表于2016-11-17 15:19 被阅读115次

         有关环信的导入,官方文档说的已经很详细了,这里我就不去重复了,导入之后也许会报错,要检查自己是不是重复导入的三方或者少导入环信的系统库,像md,mj这些三方环信的官方demo都用了.最开始要一步一步来,别一下导入太多,到时候错误不好重现.

        首先,我的项目不需要修改聊天界面,就直接把环信的ChatUI拿来用了,聊天列表页不满意的可以自己写.首先要做的就是用户的头像和昵称要保存到自己的服务器

    写个类通过环信的im_id去保存对应的信息

    在pch文件中加入通知.pch中导入的类名要写在#ifdef __OBJC__      #endif中

    /** IM通知*/

    #define HMSortDidSelectNotification @"HMSortDidSelectNotification"

    #define HMSelectedSort @"HMSelectedSort"

    #define HMCityDidSelectNotification @"HMCityDidSelectNotification"

    #define HMSelectedCity @"HMSelectedCity"

    #define HMCategoryDidSelectNotification @"HMCategoryDidSelectNotification"

    #define HMSelectedCategory @"HMSelectedCategory"

    #define HMSelectedSubCategoryName @"HMSelectedSubCategoryName"

    #define HMRegionDidSelectNotification @"HMRegionDidSelectNotification"

    #define HMSelectedRegion @"HMSelectedRegion"

    #define HMSelectedSubRegionName @"HMSelectedSubRegionName"

    #define HMNotificationCenter [NSNotificationCenter defaultCenter]

    #define HMAddObsver(methodName, noteName) [HMNotificationCenter addObserver:self selector:@selector(methodName) name:noteName object:nil];

    #define HMRemoveObsver [HMNotificationCenter removeObserver:self];

    @interfaceSCUserProfileEntity :NSObject

    //通过环信ID去保存昵称和头像url到本地

    + (void)saveUserProfileWithUsername:(NSString*)username forNickName:(NSString*)nickName avatarURLPath:(NSString*)avatarURLPath;

    //通过环信ID取本地的昵称

    + (NSString*)getNickNameWithUsername:(NSString*)username;

    //通过环信ID取本地的头像url

    + (NSString*)getavatarURLPathWithUsername:(NSString*)username;

    //移除本地的头像昵称,清缓存

    + (void)removeUserProfileWithUsername:(NSString*)username;

    @implementationSCUserProfileEntity

    + (void)saveUserProfileWithUsername:(NSString*)username forNickName:(NSString*)nickName avatarURLPath:(NSString*)avatarURLPath{

    NSUserDefaults*defaults = [NSUserDefaultsstandardUserDefaults];

    //设置保存的头像和昵称的key,加上环信ID字段标识

    NSString*nickNameKey = [NSStringstringWithFormat:@"username_%@",username];

    NSString*avatarURLPathKey = [NSStringstringWithFormat:@"avatarURLPath_%@",username];

    [defaultssetObject:nickNameforKey:nickNameKey];

    [defaultssetObject:avatarURLPathforKey:avatarURLPathKey];

    [defaultssynchronize];

    }

    + (NSString*)getNickNameWithUsername:(NSString*)username{

    NSUserDefaults*defaults = [NSUserDefaultsstandardUserDefaults];

    NSString*nickNameKey = [NSStringstringWithFormat:@"username_%@",username];

    return[defaultsobjectForKey:nickNameKey];

    }

    + (NSString*)getavatarURLPathWithUsername:(NSString*)username{

    NSUserDefaults*defaults = [NSUserDefaultsstandardUserDefaults];

    NSString*avatarURLPathKey = [NSStringstringWithFormat:@"avatarURLPath_%@",username];

    return[defaultsobjectForKey:avatarURLPathKey];

    }

    + (void)removeUserProfileWithUsername:(NSString*)username{

    NSUserDefaults*defaults = [NSUserDefaultsstandardUserDefaults];

    NSString*nickNameKey = [NSStringstringWithFormat:@"username_%@",username];

    NSString*avatarURLPathKey = [NSStringstringWithFormat:@"avatarURLPath_%@",username];

    [defaultsremoveObjectForKey:nickNameKey];

    [defaultsremoveObjectForKey:avatarURLPathKey];

    [defaultssynchronize];

    }

    1.头像点击方法  messageModel.isSender来判断发送方和接收方

    - (void)messageViewController:(EaseMessageViewController*)viewController

    didSelectAvatarMessageModel:(id)messageModel

    model.avatarURLPath= [SCUserProfileEntitygetavatarURLPathWithUsername:message.from];

    用自己写的类去给对应的头像赋值,这里有个问题,如果用户换了头像之后,但是服务器的网址并没有更改,这时是调用缓存来赋值,不能达到实时更新的额效果,需要先清除对应的缓存.

    2.设置头像的方法

    - (id)messageViewController:(EaseMessageViewController*)viewController

    modelForMessage:(EMMessage*)message

    使用环信的UI有个主意的地方

    chatViewController中[self tableViewDidTriggerHeaderRefresh];要注释掉,父类中已经调用过了.不注释会出现进入聊天的记录出现重复.

    获取未读消息时

    是需要在获取的页面判断环信的登陆状态的,

    其他设备登陆时的回调方法

    - (void)didLoginFromOtherDevice

    相关文章

      网友评论

      • w佐w:qq:838090008 可以发单聊demo

      本文标题:环信3.x单聊集成

      本文链接:https://www.haomeiwen.com/subject/gmvdpttx.html