3.고객채팅 함수고객채팅

LAB3.1TEdit

3.1초기화 및 종료

3.1.1초기화

*  webRtc 초기화를 실행한다. 한번만 실행해야 한다.
- (void)initializeManager;
#import <NexusWebRTC/NexusWebRTC.h>


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {


    [[NexusWebRTCManager sharedInstance] initializeManager];
...
}

3.1.2종료

- (void)cleanup;
- (void)applicationWillTerminate:(UIApplication *)application {
    [[NexusWebRTCManager sharedInstance] cleanup];
}

3.2콜백

3.2.1이벤트 콜백

- (void)CustomChatManagerDidConnected
채팅방 접속 성공시 발생합니다.
- (void)CustomChatManagerDidClosed
채팅방 접속 종료시 발생합니다.

(네트웍으로 인한 연결 종료시는 발생하지 않습니다. 이때는 상태변화 함수를 참고하세요)

- (void)CustomCChatManagerDidReadMessage:(NSString *)message
message

NSString 형태의 메시지가 수신시 발생합니다.

- (void)CustomCChatManagerDidSendMessage:(NSString *)message
message

NSString 형태의 메시지가 발신 성공일 경우 발생합니다.

- (void)CustomChatManagerState:(CustomChatStatus)status
CustomChatStatus_DEFAULT

초기값

CDVCommandStatus_CONNECTED

채팅방 연결상태

CDVCommandStatus_CLOSE

채팅방 연결 해제상태

CDVCommandStatus_CONNECTING

채팅방 연결중 상태

3.2.2이벤트 콜백 등록

콜백을 받을 객체를 지정한다.

@interface LoginViewController ()<NexusCustomChatManagerDelegate>
{
    ...
}
@implementation LoginViewController

...
    // call back setting
     [[NexusCustomChatManager sharedInstance] setDelegate:self];

...
@end

3.2.3이벤트 콜백 함수 선언

deleagate 로 지정된 class 에 아래의 함수들이 선언 되어야 한다. 자세한 연동은 데모앱을 참조 하면 된다.

#pragma mark -
#pragma mark chat delegate
- (void)CustomChatManagerDidConnected
{
    NSLog(@"채팅방 접속됨 ");
    ...
}

- (void)CustomChatManagerDidClosed
{
    NSLog(@"채팅방 접속 종료됨");
   ...
}

- (void)CustomCChatManagerDidReadMessage:(NSString *)message
{   
    NSLog(@"채팅 수신 [%@]", message);
    ... 
}

- (void)CustomCChatManagerDidSendMessage:(NSString *)message
{     
    NSLog(@"채팅 발신 [%@]", message);
    ...
}

- (void)CustomChatManagerState:(CustomChatStatus)status
{
    NSLog(@"채팅방 접속 상태 변경됨 => [%d]", status);
    ...
}

3.3채팅방 입장/나가기

3.3.1채팅방 입장

채탕방에 입장을 요청한다. 입장 성공은 이벤트 콜백 으로 확인 가능하다.

- (void)CustomChatManagerDidConnected 콜백으로 성공 확인 가능합니다.

- (BOOL)customChatConnect:(NSString *)sipUri realm:(NSString *)sipRealm
                   chatDn:(NSString *)dn;
sipUri

접속 uri ex) ws://jedai.nexus.co.kr:8060

sipRealm

접속 Realm ex) /jedai.nexus.co.kr

dn

접속할 채팅방 dn

NSString* server = @"ws://jedai.nexus.co.kr:8060";
NSString* realm = @"nexuscommunity.net";
NSString* dn = @"1004";
[[NexusCustomChatManager sharedInstance] customChatConnect:server realm:realm chatDn:dn];

3.3.2채팅방 나가기

로그 아웃 처리를 한다. 로그아웃 성공은 이벤트 콜백으로 확인 가능하다.

- (void) CustomChatManagerDidClosed 콜백으로 방나기기 확인 가능합니다.

- (void)customChatClose;
[[NexusCustomChatManager sharedInstance] customChatClose];

3.4채팅

3.4.1메시지 보내기

메시지 보내기를 요청한다.

- (BOOL)sendMessage:(NSString *)message;
message

상담원에게 보낼 메시지

return

요청에 오류가 있을 경우 YES 를 반환한다.

-(IBAction)onClickSend:(id)sender
{
    [[ChatManager sharedInstance] requestSend:_textView.text];
}

3.4.2파일업로드

파일을 보내기 URL 위해서는 먼저 파일 업로드 후 URL 값을 생성해야 한다.

- (BOOL)uploadFile:(NSData *)fileData fileName:(NSString *)fileName
       progress:(void (^)(NSProgress *uploadProgress))uploadProgressBlock
completionHandler:(void(^)(NSDictionary *response, NSError *error))completionHandler;
fileData

상담원에게 보낼 메시지

fileName

요청에 오류가 있을 경우 YES 를 반환한다.

progress

업로드 상태

completionHandler

완료 되었을 경우 response 에 값이 있고, 실패의 경우 error 를 참고한다.

[[NexusCustomChatManager sharedInstance] uploadFile:fileData fileName:sendFileName progress:^(NSProgress *uploadProgress) {
    NSLog(@" uploadProgress => %@", uploadProgress);
} completionHandler:^(NSDictionary *response, NSError *error) {
    if(error){
        NSLog(@" error => %@", error);
        return;
    }
    NSString *url = [response objectForKey:@"url"];
    NSString *size = [response objectForKey:@"size"];
 
}];

3.4.3파일보내기

파일을 보내기를 요청한다.

(BOOL)sendFileURL:(NSString *)urlString fileName:(NSString *)fileName fileSize:(long)fileSize;
urlString

보낼 첨부파일 URL

fileName

보낼 첨부파일의 파일명

fileSize

보낼 첨부파일의 파일 사이즈(byte)

[[NexusCustomChatManager sharedInstance] uploadFile:fileData fileName:sendFileName progress:^(NSProgress *uploadProgress) {
    NSLog(@" uploadProgress => %@", uploadProgress);
} completionHandler:^(NSDictionary *response, NSError *error) {
    if(error){
        NSLog(@" error => %@", error);
        return;
    }
    NSString *url = [response objectForKey:@"url"];
    NSString *size = [response objectForKey:@"size"];
    [[NexusCustomChatManager sharedInstance] sendFileURL:url 
                                              fileName:sendFileName
                                             fileSize:[size longLongValue]];
    
}];