zoukankan      html  css  js  c++  java
  • 阿里百川IIMSDK-- 加好友,获取好友

    加好友, 其实就是跟发消息一样

    获取好友列表

    同步好友列表

    SDK内部默认会在每次登陆成功后与服务端同步好友列表,开发者可以通过设置disableAutoRequestAllContacts来禁用这个特性,也可以通过

    1
    - (void)requestAllContactsFromServerWithResultBlock:(YWContactsOperationResultBlock)resultBlock;

    来主动发起同步请求。

    怎么调用呢?

    获取本地好友

    开发者可以通过

    1
    2
    3
    4
    5
    6
    /// 获取不同排序和分组模式的FRC对象
    - (YWFetchedResultsController *)fetchedResultsControllerWithListMode:(YWContactListMode)aMode imCore:(YWIMCore *)imCore;
     
    /// 使用关键字搜索用户,使用用户名
    // 如果希望搜索好友,needIsFriend置为YES,否则可以置为NO
    - (YWFetchedResultsController *)fetchedResultsControllerWithSearchKeyword:(NSString *)aKeyword needIsFriend:(BOOL)needIsFriend imCore:(YWIMCore *)imCore;

    来获取本地好友。

    for example:

    YWIMCore *imcore = [SPKitExample sharedInstance].ywIMKit.IMCore;
            _fetchedResultsController = [[imcore getContactService] fetchedResultsControllerWithListMode:YWContactListModeAlphabetic imCore:imcore];

    好友操作

    好友添加

    可以通过以下方式来发起添加好友请求:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [[self.imkit.IMCore getContactService] addContact:person withIntroduction:@"" withResultBlock:^(NSError *error, YWAddContactRequestResult result) {
            NSString *title = nil;
            if(result == YWAddContactRequestResultError) {
                title = @"请求发送失败";
            } else if (result == YWAddContactRequestResultSuccess) {
                title = @"好友添加成功";
            } else {
                title = @"请求发送成功,等待对方验证";
            }
            [YWIndicator showTopToastTitle:title content:[NSString stringWithFormat:@"添加%@", person.personId] userInfo:nil withTimeToDisplay:1.5 andClickBlock:nil];
        }];

    被添加方可以使用:

    1
    2
    - (void)addAddContactRequestBlockV2:(void (^)(YWPerson *person, YWContactAddRequestType type, BOOL isOffline, NSString *message))block
                                 forKey:(NSString *)key ofPriority:(YWBlockPriority)priority;

    来监听被添加的请求,也可以通过

    1
    - (YWConversation *)fetchContactSystemConversation;

    来获取好友请求列表。

    对于被添加的请求,可以使用:

    1
    2
    3
    - (void)responseToAddContact:(BOOL)accept fromPerson:(YWPerson *)person
                     withMessage:(NSString*)message
                  andResultBlock:(YWAddContactResultBlock)resultBlock;

    这个接口接受或者拒绝。
    当被添加方处理后,添加发起方可以通过:

    1
    2
    - (void)addAddContactResponseBlockV2:(void (^)(YWPerson *person, YWContactAddResponseType type, BOOL isOffline, NSString *message))block
                                  forKey:(NSString *)key ofPriority:(YWBlockPriority)priority;

    来获得对方处理的结果。

    注:以上add开头添加的block均需要在不使用的时候调用对应的remove方法。

    删除好友

    开发者可以通过

    1
    - (void)removeContact:(YWPerson *)persons withResultBlock:(YWRemoveContactResultBlock)resultBlock;

    来删除好友,通过

    1
    2
    - (void)addFriendBeRemovedBlock:(void (^)(YWPerson *person, BOOL isOffline))block
                             forKey:(NSString *)key ofPriority:(YWBlockPriority)priority;

    来接收被删除的回调。

    修改好友的备注名

    开发者可以通过

    1
    - (void)modifyContact:(YWPerson *)person WithNewNick:(NSString *)nickName andResultBlock:(YWContactOperationResultBlock)resultBlock;

    来修改好友的备注名,通过

    1
    - (NSString *)contactNickOfPerson:(YWPerson *)aPerson;

    来获取好友的备注名。

    查询person是否为好友

    1
    - (BOOL)ifPersonIsFriend:(YWPerson *)person;
    红色的是IMcore对象提供的服务, 除了

    getContactService

    还有
    /**
     *  获取长连接服务
     */
    - (id<IYWLoginService>)getLoginService;
    
    /**
     *  获取会话相关服务
     */
    - (id<IYWConversationService>)getConversationService;
    
    /**
     *  获取扩展服务
     */
    - (id<IYWExtensionService>)getExtensionService;
    
    
    /**
     *  群相关服务
     */
    - (id<IYWTribeService>)getTribeService;
    
    /**
     *  漫游相关服务
     */
    - (id<IYWRoamingService>)getRoamingService;
    
    /**
     *  联系人相关服务(建立好友关系的人,称为联系人)
     */
    - (id<IYWContactService>)getContactService;
    
    /**
     *  缓存相关服务,在imcore登陆前返回nil。
     *  这里的缓存与imcore相关,跟[YWAPI getGlobalUtilService4Cache]全局缓存的数据不能相互访问
     */
    - (id<IYWUtilService4Cache>)getCacheService;
    
    /**
     *  各种设置项
     */
    - (id<IYWSettingService>)getSettingService;
    
    /**
     *  获取action相关服务
     */
    - (id<IYWActionService>)getActionService;
    
    /**
     *  获取EHelper服务
     */
    - (id<IYWEHelperService>)getEHelperService;
     
     
  • 相关阅读:
    高并发的epoll+线程池,epoll在线程池内ehyyngpChinaUnix博客
    用vim处理字符的大小写转换
    jabberd14 XMPP/Jabber server daemon
    thriftmissingguide/
    高并发的epoll+多线程ehyyngpChinaUnix博客
    大讲堂
    [基于Epoll内置LeaderFollower服务端实现, 已可达50万echo qps(全新支持Lua啦)] C/C++ ChinaUnix.net
    来说说epoll+线程池
    boost高并发网络框架+线程池ehyyngpChinaUnix博客
    高并发的epoll+线程池,业务在线程池内ehyyngpChinaUnix博客
  • 原文地址:https://www.cnblogs.com/mafeng/p/5858016.html
Copyright © 2011-2022 走看看