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종료
webRtc 사용 종료처리한다.
- (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]]; }];