容雲即使聊天步驟

1.appdelegate.m 遵循協議RCIMConnectionStatusDelegate+RCIMReceiveMessageDelegate

/*!  連接狀態監聽器: RCIMConnectionStatusDelegate
 IMKit連接狀態的的監聽器
 @discussion 設置IMKit的連接狀態監聽器,請參考RCIM的connectionStatusDelegate屬性。
 @warning 如果您使用IMKit,可以設置並實現此Delegate監聽消息接收;
 如果您使用IMLib,請使用RCIMClient中的RCIMClientReceiveMessageDelegate監聽消息接收,而不要使用此監聽器。
 */

/*!消息接收監聽器:RCIMReceiveMessageDelegate
 IMKit消息接收的監聽器
 @discussion 設置IMKit的消息接收監聽器請參考RCIM的receiveMessageDelegate屬性。
 @warning 如果您使用IMKit,可以設置並實現此Delegate監聽消息接收;
 如果您使用IMLib,請使用RCIMClient中的RCIMClientReceiveMessageDelegate監聽消息接收,而不要使用此監聽器。

1.1[[RCIM sharedRCIM] initWithAppKey:kRongYunAppKey];

// 登陸成功之後,建立容雲與服務器之間的關聯

 [[RCIM sharedRCIM] setGlobalMessageAvatarStyle:RC_USER_AVATAR_CYCLE];
    [[RCIM sharedRCIM] setGlobalConversationAvatarStyle:RC_USER_AVATAR_CYCLE];
    
    [[RCIM sharedRCIM] setConnectionStatusDelegate:self];
    [[RCIM sharedRCIM] setEnableMessageAttachUserInfo:YES];
    if (iPhone6Plus) {
        [RCIM sharedRCIM].globalConversationPortraitSize = CGSizeMake(56, 56);
    } else {
        
        [RCIM sharedRCIM].globalConversationPortraitSize = CGSizeMake(46, 46);
    }
    //設置用戶信息源和羣組信息源
    //RCDDataSource 是用戶信息的提供者SDK需要通過您實現的用戶信息提供者,獲取用戶信息並顯示。
    [RCIM sharedRCIM].userInfoDataSource = RCDDataSource;
    //羣組信息提供者,SDK需要通過您實現的羣組信息提供者,獲取羣組信息並顯示。
    [RCIM sharedRCIM].groupInfoDataSource = RCDDataSource;
    //設置羣組內用戶信息源。如果不使用羣名片功能,可以不設置
    [RCIM sharedRCIM].groupUserInfoDataSource = RCDDataSource;
    //設置接收消息代理
    [RCIM sharedRCIM].receiveMessageDelegate=self;
 
    //token 從您服務器端獲取的token(用戶身份令牌)
    if (token.length && userId.length && password.length) {
//當前登錄的用戶的用戶信息 與融雲服務器建立連接之後,應該設置當前用戶的用戶信息,用於SDK顯示和發送。_currentUserInfo
        RCUserInfo *_currentUserInfo =
        [[RCUserInfo alloc] initWithUserId:userId
                                      name:userNickName
                                  portrait:userPortraitUri];
        [RCIM sharedRCIM].currentUserInfo = _currentUserInfo;
        
        // 整個程序只調用一次
        
        [[RCIM sharedRCIM] connectWithToken:token
                                    success:^(NSString *userId) {
      //與容雲服務器建立連接成功之後返回的當前用戶的id
                                        NSLog(@"%@",userId);
                                        
                                    }
                                      error:^(RCConnectErrorCode status) {
                                          
                                      }
                             tokenIncorrect:^{
                                 NSLog(@"已過期");
                             }];
                  }

}

 2.RCDDataSource 是用戶信息的提供者SDK需要通過您實現的用戶信息提供者,獲取用戶信息並顯示。RCDataSource類

#define RCDDataSource [RCDataSource shareInstance]  

RCDDataSource 遵循三個協議RCIMUserInfoDataSource,RCIMGroupInfoDataSource,RCIMGroupUserInfoDataSource

#pragma mark - RCIMUserInfoDataSource
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion {
    NSLog(@"getUserInfoWithUserId ----- %@", userId);
    
    if (userId == nil || [userId length] == 0 )
    {
        RCUserInfo *user = [RCUserInfo new];
        user.userId = userId;
        user.portraitUri = @"";
        user.name = @"";
        completion(user);
        return ;
    }
    if([userId isEqualToString:@"kefu114"])
    {
        RCUserInfo *user=[[RCUserInfo alloc]initWithUserId:@"kefu114" name:@"客服" portrait:@""];
        completion(user);
        return;
    }

    //開發者調自己的服務器接口根據userID異步請求數據
    
        。。。。。。 
}
#pragma mark - GroupInfoFetcherDelegate
- (void)getGroupInfoWithGroupId:(NSString *)groupId completion:(void (^)(RCGroup *))completion {
    if (groupId.length == 0) {
        return;
    }
//開發者調自己的服務器接口根據groupId異步請求數據
    
        。。。。。。 
   
}
#pragma mark RCIMGroupUserInfoDataSource
/**
 *  獲取羣組內的用戶信息。
 *  如果羣組內沒有設置用戶信息,請注意:
 1,不要調用別的接口返回全局用戶信息,直接回調給我們nil就行,SDK會自己巧用用戶信息提供者;
 2一定要調用completion(nil),這樣SDK才能繼續往下操作。
 *
 *  @param groupId  羣組ID.
 *  @param completion 獲取完成調用的BLOCK.
 */
- (void)getUserInfoWithUserId:(NSString *)userId inGroup:(NSString *)groupId completion:(void (^)(RCUserInfo *))completion {
    
    completion(nil);
}
@end

3.聊天界面新建控制器 繼承 RCConversationViewController 就OK。

需要傳遞的屬性值conversationType(會話類型:單聊羣聊這種)+ 目標會話IDtargetId;

聊天界面遵循RCMessageCellDelegate ,點擊頭像的回調方法。

- (void)didTapCellPortrait:(NSString *)userId 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章