Parcourir la source

- WebSocket 관련 라이브러리 작성
- Polling 로직 제거

KaRam Kim il y a 8 ans
Parent
commit
cc9290a867

+ 28 - 6
OneCable/Classes/Definitions.h

@@ -9,10 +9,31 @@
 #ifndef kneet2_Definitions_h
 #define kneet2_Definitions_h
 
+
+/*
+ //    kneet 3.0 운영
+ final static int KEY_URL_KNEET_V3 = 1;
+ final static String URL_KNEET_V3 = "http://52.163.90.87:5017";
+ final static String SMART_URL_KNEET_V3 = "http://52.163.90.87:5017";
+ final static String SERVICE_ID_KNEET_V3 = "30001";
+ final static String PROJECT_ID_KNEET_V3 = "439012691127";
+ final static String APP_START_ID_KNEET_V3 = "ntels_kneet_v3";
+ final static String URL_SERVICE_HUB_WEBSOCKET_V3 = "ws://13.76.96.27:8081";
+ final static String URL_SERVICE_HUB_REST_V3 = "http://13.76.96.27:8080";
+ final static String URL_CLOUD_GATEWAY_V3 = "http://13.76.96.27:7070";
+ final static String VSAAS_SIP_URL_KNEET_V3 = "sip:23.98.73.196:6061;lr";
+ final static String VSAAS_TURN_URL_KEET_V3 = "23.98.73.196";
+ final static int VSAAS_TURN_PORT_KNEET_V3 = 3478;
+ final static String VSAAS_SIP_DOMAIN_KNEET_V3 = "vsaas.com";
+ final static String VSAAS_SIP_PASSWORD_KNEET_V3 = "qwer!@#$%1";
+
+ 
+ */
+
 #ifndef PRODUCT_MODE
 
 //static NSString *kAPIServer = @"http://61.40.220.132:5007";     //개발
-static NSString *kAPIServer = @"https://www.iotbusan.com";      //운영
+static NSString *kAPIServer = @"http://52.163.90.87:5017";      //운영
 
 //    #define API_SERVER      @"http://61.40.220.132:5008"      //개발서버 old
 //    #define API_SERVER      @"http://61.40.220.132:5009"      //개발서버 - 0.6
@@ -28,7 +49,7 @@ static NSString *kSocketServer = @"ws://13.76.96.27:8081";      //운영
 
 #else //운영모드
 
-static NSString *kAPIServer = @"https://www.iotbusan.com";      //운영
+static NSString *kAPIServer = @"http://52.163.90.87:5017";      //운영
 
 //static NSString *kAPIServer = @"https://home-api.allofthings.com";
 //static NSString *kNISCServer = @"https://home-api.allofthings.com:5003";
@@ -49,10 +70,10 @@ static NSString *kSocketServer = @"ws://13.76.96.27:8081";      //운영
 
 
 //Network Constants
-#define API_ROOT_PATH       @"/v2"
+#define API_ROOT_PATH       @"/v3"
 
 //1 - 공통
-#define API_GET_APP_VERSION     @"/app_version"
+#define API_GET_APP_VERSION     @"/mobile_app/version"
 //#define API_GET_CODE_LIST   @"/getCodeList"
 
 #define API_GET_MOBILE                  @"/mobile_device/%@"
@@ -65,7 +86,8 @@ static NSString *kSocketServer = @"ws://13.76.96.27:8081";      //운영
 #define API_POST_SIGN_OUT               @"/member/logout"       //로그아웃
 
 #define API_POST_SIGN_UP                @"/member"              //회원가입
-#define API_POST_MEMBER_UPDATE          @"/member/%@/%@"        //회원정보 수정
+//#define API_POST_MEMBER_UPDATE          @"/member/%@/%@"        //회원정보 수정
+#define API_POST_MEMBER_UPDATE          @"/member/%@"        //회원정보 수정
 #define API_POST_AUTH_MAIL              @"/member/auth_mail"    //이메일 인증 재발송
 #define API_POST_RESET_PWD              @"/member/password"     //비밀번호 재설정
 #define API_GET_MOBILE_DEVICES          @"/member/devices"      //단말 목록
@@ -211,7 +233,7 @@ typedef NS_ENUM(NSInteger, KNMenuId) {
 #define HOME_MODE_MORNING   @"MORNING"
 #define HOME_MODE_NIGHT     @"NIGHT"
 
-#define MOBILE_SERVICE_ID       @"20003"     //for 스마트시티
+#define MOBILE_SERVICE_ID       @"30001"     //for OneCable
 #define MOBILE_DEVICE_TYPE      @"MI"        //디바이스 타입
 
 #define APPSTORE_TYPE           @"A"

+ 3 - 0
OneCable/Classes/Handler/RequestHandler.h

@@ -25,6 +25,9 @@ typedef void(^RequestHandlerFailureBlock)(id errorObject);
 //비동기 API-GET 요청
 - (void)sendAsyncGetRequestAPIPath:(NSString *)apiPath parameters:(NSDictionary *)parameters modelClass:(Class)modelClass completion:(RequestHandlerCompletionBlock)completion failure:(RequestHandlerFailureBlock)failure;
 
+//비동기 API-PUT 요청
+- (void)sendAsyncPutRequestAPIPath:(NSString *)apiPath parameters:(NSDictionary *)parameters modelClass:(Class)modelClass completion:(RequestHandlerCompletionBlock)completion failure:(RequestHandlerFailureBlock)failure;
+
 //비동기 API-POST 요청
 - (void)sendAsyncPostRequestAPIPath:(NSString *)apiPath parameters:(NSDictionary *)parameters modelClass:(Class)modelClass completion:(RequestHandlerCompletionBlock)completion failure:(RequestHandlerFailureBlock)failure;
 

+ 5 - 0
OneCable/Classes/Handler/RequestHandler.m

@@ -147,10 +147,15 @@
     [self sendAsyncRequestAPIPath:apiPath method:ksHTTPRequestGET parameters:parameters modelClass:modelClass showLoadingView:YES completion:completion failure:failure];
 }
 
+- (void)sendAsyncPutRequestAPIPath:(NSString *)apiPath parameters:(NSDictionary *)parameters modelClass:(Class)modelClass completion:(RequestHandlerCompletionBlock)completion failure:(RequestHandlerFailureBlock)failure {
+    [self sendAsyncRequestAPIPath:apiPath method:ksHTTPRequestPUT parameters:parameters modelClass:modelClass showLoadingView:YES completion:completion failure:failure];
+}
+
 - (void)sendAsyncPostRequestAPIPath:(NSString *)apiPath parameters:(NSDictionary *)parameters modelClass:(Class)modelClass completion:(RequestHandlerCompletionBlock)completion failure:(RequestHandlerFailureBlock)failure {
     [self sendAsyncRequestAPIPath:apiPath method:ksHTTPRequestPOST parameters:parameters modelClass:modelClass showLoadingView:YES completion:completion failure:failure];
 }
 
+
 - (void)sendAsyncPostRequestAPIPath:(NSString *)apiPath parameters:(NSDictionary *)parameters modelClass:(Class)modelClass showLoadingView:(BOOL)showLoadingView completion:(RequestHandlerCompletionBlock)completion failure:(RequestHandlerFailureBlock)failure {
     [self sendAsyncRequestAPIPath:apiPath method:ksHTTPRequestPOST parameters:parameters modelClass:modelClass showLoadingView:showLoadingView completion:completion failure:failure];
 }

+ 6 - 2
OneCable/Classes/Handler/SocketServiceHandler.h

@@ -12,7 +12,7 @@
 
 @optional
 - (void) socketConnectComplete;
-
+- (void) didReceiveMessage:(id)message;
 
 @end
 
@@ -26,10 +26,14 @@
 
 + (id)sharedManager;
 
-- (void) connect;
+- (void) connectServer;
 - (void) disconnect;
 
+- (void) sendData:(NSDictionary *)data;
+
 - (void) initWithDelegate:(id<SocketServiceHandlerDelegate>) delegate;
 
 
+
+
 @end

+ 51 - 16
OneCable/Classes/Handler/SocketServiceHandler.m

@@ -66,22 +66,22 @@
     }
 }
 
-- (void) connect
+- (void) connectServer
 {
     if( !_isConnected )
     {
-        NSString* token = @"";
-        
-//        if( ![[[APUserDefaultManager sharedManager] getUserDefault:UDKEY_TOKEN] isEqualToString:@""] )
-//            token = [[APUserDefaultManager sharedManager] getUserDefault:UDKEY_TOKEN];
-        
-        NSData * jsonData = [NSJSONSerialization  dataWithJSONObject:@{@"token":token} options:0 error:nil];
-        NSString * myString = [[NSString alloc] initWithData:jsonData   encoding:NSUTF8StringEncoding];
-        NSLog(@"%@ : %ld" ,myString, (long)_socket.readyState);
+//        NSString* token = @"";
+//        
+////        if( ![[[APUserDefaultManager sharedManager] getUserDefault:UDKEY_TOKEN] isEqualToString:@""] )
+////            token = [[APUserDefaultManager sharedManager] getUserDefault:UDKEY_TOKEN];
+//        
+//        NSData * jsonData = [NSJSONSerialization  dataWithJSONObject:@{@"token":token} options:0 error:nil];
+//        NSString * myString = [[NSString alloc] initWithData:jsonData   encoding:NSUTF8StringEncoding];
+//        NSLog(@"%@ : %ld" ,myString, (long)_socket.readyState);
         
         if( _socket.readyState == SR_OPEN )
         {
-            [_socket send:myString];
+//            [_socket send:myString];
             _isConnected = YES;
         }
         else if ( _socket.readyState == SR_CLOSED || _socket.readyState == SR_CLOSING )
@@ -101,16 +101,55 @@
     }
 }
 
+- (void) sendData:(NSDictionary *)data
+{
+    if(_socket.readyState == SR_OPEN)
+    {
+        NSError *error;
+        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data
+                                                           options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
+                                                             error:&error];
+        
+        if (! jsonData) {
+            NSLog(@"Got an error: %@", error);
+        } else {
+            NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
+            NSLog(@"Socket Send Data : %@", jsonString);
+            [_socket send:jsonString];
+        }
+    }
+    else if ( _socket.readyState == SR_CLOSED || _socket.readyState == SR_CLOSING )
+    {
+        [self reConnect];
+    }
+}
+
+
+-(void) reConnect
+{
+    [self disconnect];
+    _socket = nil;
+    [self socketOpen];
+}
+
 #pragma mark - SRWebSocketDelegate
 - (void)webSocketDidOpen:(SRWebSocket *)webSocket
 {
     NSLog(@"SOCKET didOpen");
+    
+    if (self.delegate && [self.delegate respondsToSelector:@selector(socketConnectComplete)]) {
+        [self.delegate socketConnectComplete];
+    }
 }
 
 - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message
 {
     NSLog(@"SOCKET didReceiveMessage : %@", message);
     
+    if (self.delegate && [self.delegate respondsToSelector:@selector(didReceiveMessage:)]) {
+        [self.delegate didReceiveMessage:message];
+    }
+    
     NSString *errString = @"";
     
     if( message == nil || [message isEqualToString:@""] )
@@ -149,9 +188,7 @@
     NSLog(@"WebSocket error: %@", error);
     
     _isConnected = NO;
-    [_socket close];
-    _socket = nil;
-    [self socketOpen];
+    [self reConnect];
 }
 
 - (void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload
@@ -165,9 +202,7 @@
           (long)code, reason, wasClean);
     
     _isConnected = NO;
-    [_socket close];
-    _socket = nil;
-    [self socketOpen];
+    [self reConnect];
 }
 
 @end

+ 6 - 0
OneCable/Classes/Model/LoginModel.h

@@ -116,6 +116,12 @@
 
 @property (copy, nonatomic) NSString *invitationsCount;
 
+@property (copy, nonatomic) NSString *servicehubApplicationId;
+
+@property (copy, nonatomic) NSString *deviceOnline;
+@property (copy, nonatomic) NSString *deviceOnlineLastDatetime;
+@property (copy, nonatomic) NSString *deviceConn;
+
 //local store
 @property (strong, nonatomic) NSMutableDictionary *localStorage;
 @property (strong, nonatomic) NSString *newEmailId; //로컬에 저장 - 임시 이메일

+ 13 - 11
OneCable/Classes/ViewControllers/MainScreens/IntroViewController.m

@@ -68,16 +68,17 @@
 - (void)viewDidAppear:(BOOL)animated {
     [super viewDidAppear: animated];
     
-    if ([NetworkServiceHandler.handler startSearchBonjourServices])
-    {
-        NSLog(@"mdns 찾기");
-        NetworkServiceHandler.handler.delegate = self;
-    }
-    else
-    {
-        NSLog(@"mdns 찾기2");
-        [self requestVersionInfo];
-    }
+//    if ([NetworkServiceHandler.handler startSearchBonjourServices])
+//    {
+//        NSLog(@"mdns 찾기");
+//        NetworkServiceHandler.handler.delegate = self;
+//    }
+//    else
+//    {
+//        NSLog(@"mdns 찾기2");
+//        [self requestVersionInfo];
+//    }
+    [self requestVersionInfo];
 }
 
 #pragma mark - Main Logic
@@ -140,7 +141,7 @@
 
 - (void)didSucceedPublishService {
     
-//    [self requestVersionInfo];
+    [self requestVersionInfo];
 }
 
 - (void)didSucceedPublishService:(NSArray *)arrService
@@ -158,6 +159,7 @@
     }
     
     [NetworkServiceHandler.handler stopSearchBonjourServices];
+    [self requestVersionInfo];
 }
 
 - (void)didFailPublishService:(id)errorInfo {

+ 3 - 2
OneCable/Classes/ViewControllers/MainScreens/LoginViewController.m

@@ -125,6 +125,7 @@
         }
 
         LoginModel *loginInfo = (LoginModel *)responseObject;
+        NSLog(@"%@", loginInfo);
 
         if (loginInfo) {//API 성공 ,함
             [self actionForLoginSucceed:loginInfo];
@@ -325,11 +326,11 @@
 
 #ifdef DEBUG_MODE
     if ([_txtEmail.text isEmptyString]) {
-        _txtEmail.text = @"gojeong@ntels.com";
+        _txtEmail.text = @"asura77@ncomz.com";
     }
 
     if ([_txtPasswd.text isEmptyString]) {
-        _txtPasswd.text = @"goj132!#@";
+        _txtPasswd.text = @"rkfkadl77";
     }
 #endif
 

+ 29 - 3
OneCable/Classes/ViewControllers/MainScreens/MainViewController.m

@@ -27,7 +27,9 @@
 #import "CustomImageView.h"
 #import "PwdPopupView.h"
 
-@interface MainViewController () <ImageUtilDelegate> {
+#import "SocketServiceHandler.h"
+
+@interface MainViewController () <ImageUtilDelegate, SocketServiceHandlerDelegate> {
     
     RulesViewController *_rvc;
     HomeMemberViewController *_mvc;
@@ -93,6 +95,17 @@
     _constraintExpandViewHeight.constant = IPHONE_HEIGHT;
     
     [self.view layoutIfNeeded];
+    
+    [self testSocket];
+}       
+
+-(void)testSocket
+{
+//    [[SocketServiceHandler sharedManager] connect];
+    [[SocketServiceHandler sharedManager] connectServer];
+    [[SocketServiceHandler sharedManager] initWithDelegate:self];
+    
+    
 }
 
 - (void)initThingsViewController {
@@ -150,7 +163,8 @@
 - (void)prepareViewDidLoad {
 //    [self requestDashboard:nil];
     
-    [[JDFacade facade] requestPollingHomeHubStatusInBackground];
+//    [[JDFacade facade] requestPollingHomeHubStatusInBackground];
+    // TODO: 웹소켓 연결해서 정보 받아오는 형식으로 전환할것
 }
 
 - (void)setCurrentChildViewController:(JDViewController *)currentChildViewController {
@@ -328,6 +342,18 @@
     [self requestUpdateHomeGroupImage:image];
 }
 
+#pragma mark - SocketServiceHandler delegate
+-(void)socketConnectComplete
+{
+    NSMutableDictionary *data = [[NSMutableDictionary alloc] init];
+    
+    data[@"message_type"] = @"auth";
+    data[@"member_id"] = [JDFacade facade].loginUser.memberId;
+    data[@"auth_token"] = [RequestHandler handler].authorization;
+    
+    [[SocketServiceHandler sharedManager] sendData:data];
+}
+
 #pragma mark - UI Control
 - (void)loadThingsViewController {
     [[JDFacade facade] showLoadingWhileExecutingBlock:^{
@@ -516,4 +542,4 @@
     // Dispose of any resources that can be recreated.
 }
 
-@end
+@end

+ 2 - 2
OneCable/Classes/ViewControllers/SettingsScreens/PwdPopupView.m

@@ -67,9 +67,9 @@
     NSDictionary *parameter = @{@"new_password": _txtPwd.text,
                                 @"confirm_password": _txtPwdConfirm.text};
 
-    NSString *path = [NSString stringWithFormat:API_POST_MEMBER_UPDATE, [JDFacade facade].loginUser.memberId, @"password"];
+    NSString *path = [NSString stringWithFormat:API_POST_MEMBER_UPDATE, @"password"];
 
-    [[RequestHandler handler] sendAsyncPostRequestAPIPath:path parameters:parameter modelClass:[JDJSONModel class] completion:^(id responseObject) {
+    [[RequestHandler handler] sendAsyncPutRequestAPIPath:path parameters:parameter modelClass:[JDJSONModel class] completion:^(id responseObject) {
         if (!responseObject) {//응답결과가 잘못되었거나 없을 경우,
             return;
         }

+ 1 - 1
OneCable/Info.plist

@@ -17,7 +17,7 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>1.0.1</string>
+	<string>1.0.0</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>