IntroViewController.m 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. //
  2. // IntroViewController.m
  3. // kneet2
  4. //
  5. // Created by Jason Lee on 9/16/15.
  6. // Copyright (c) 2015 Jason Lee. All rights reserved.
  7. //
  8. #import "RequestHandler.h"
  9. #import "IntroViewController.h"
  10. @interface IntroViewController () <NSNetServiceBrowserDelegate, NSNetServiceDelegate> {
  11. NSNetServiceBrowser *_netServiceBrowser;
  12. BOOL _isNotFirstLoading;
  13. }
  14. @property (weak, nonatomic) NSNetService *netService;
  15. @end
  16. #pragma mark - Class Definition
  17. @implementation IntroViewController
  18. - (void)viewDidLoad {
  19. [super viewDidLoad];
  20. // Do any additional setup after loading the view.
  21. [self initUI];
  22. NSLog(@"%s\n applicationState = %zd", __PRETTY_FUNCTION__, [UIApplication sharedApplication].applicationState);
  23. if ([UIApplication sharedApplication].applicationState == UIApplicationStateInactive) {
  24. [self prepareViewDidLoad];
  25. }
  26. }
  27. - (void)initUI {
  28. NSString *test = @"test";
  29. NSLog(@"%s\n %@", __PRETTY_FUNCTION__, test);
  30. DDLogError(@"test colors");
  31. }
  32. - (void)prepareViewDidLoad {
  33. }
  34. - (void)viewDidAppear:(BOOL)animated {
  35. [super viewDidAppear: animated];
  36. [self requestBonjourList];
  37. //#ifndef PRODUCT_MODE
  38. //
  39. // ServerPopTableView *spopup = [[ServerPopTableView alloc] initFromNib];
  40. // [spopup showWithCompletion:^(CustomAlertView *alertView, NSInteger buttonIndex) {
  41. // if (buttonIndex == 0) {//OK
  42. // [self performSelector:@selector(requestVersionInfo) withObject:nil afterDelay:0.0f];
  43. // }
  44. // }];
  45. //
  46. //#else
  47. //
  48. // [self performSelector:@selector(requestVersionInfo) withObject:nil afterDelay:0.0f];
  49. //#endif
  50. }
  51. #pragma mark - Main Logic
  52. - (void)requestBonjourList {
  53. if (_netServiceBrowser) {
  54. [_netServiceBrowser stop];
  55. _netServiceBrowser = nil;
  56. }
  57. _netServiceBrowser = [[NSNetServiceBrowser alloc] init];
  58. _netServiceBrowser.delegate = self;
  59. NSString *browseType;
  60. if (_netService == nil) {
  61. browseType = @"_services._dns-sd._udp.";
  62. self.title = @"mDNS";
  63. } else {
  64. NSString *fullDomainName = [NSString stringWithFormat:@"%@.%@", _netService.name, _netService.type];
  65. NSArray *domainNameParts = [fullDomainName componentsSeparatedByString:@"."];
  66. browseType = [NSString stringWithFormat:@"%@.%@.", [domainNameParts objectAtIndex:0], [domainNameParts objectAtIndex:1]];
  67. self.title = _netService.name;
  68. }
  69. [_netServiceBrowser searchForServicesOfType:browseType inDomain:@""];
  70. }
  71. - (void)requestVersionInfo {
  72. //parameters
  73. NSDictionary *parameter = @{@"os_type": MOBILE_DEVICE_TYPE,
  74. @"store_code": APPSTORE_TYPE,
  75. @"app_version": [CommonUtil applicationShortVersion],
  76. @"service_id": MOBILE_SERVICE_ID};
  77. NSString *path = [NSString stringWithFormat:API_GET_APP_VERSION];
  78. [[RequestHandler handler] sendAsyncGetRequestAPIPath:path parameters:parameter modelClass:[JDJSONModel class] completion:^(id responseObject) {
  79. if (!responseObject) {//응답결과가 잘못되었거나 없을 경우,
  80. return;
  81. }
  82. JDJSONModel *result = (JDJSONModel *) responseObject;
  83. if (result) {//API 성공 ,
  84. if ([result.resultCode isEqualToString:@"99"]) {//사용불가
  85. //앱 업그레이드 유도
  86. [[JDFacade facade] alert:MSG_ALERT_APP_UPDATE completionHander:^{
  87. NSString *appURL = URL_APP_UPDATE;
  88. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:appURL]];
  89. }];
  90. } else {
  91. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  92. UIViewController *vc = [CommonUtil instantiateViewControllerWithIdentifier:@"LoginViewController" storyboardName:@"Main"];
  93. [JDFacade facade].appDelegate.window.rootViewController = vc;
  94. });
  95. }
  96. }
  97. } failure:^(id errorObject) {
  98. JDErrorModel *error = (JDErrorModel *)errorObject;
  99. [[JDFacade facade] alert:error.errorMessage];
  100. }];
  101. }
  102. #pragma mark NSNetServiceBrowserDelegate methods
  103. -(void)netServiceBrowser:(NSNetServiceBrowser *)browser didNotSearch:(NSDictionary *)errorDict {
  104. _netServiceBrowser.delegate = nil;
  105. [_netServiceBrowser stop];
  106. }
  107. -(void)netServiceBrowserDidStopSearch:(NSNetServiceBrowser *)browser {
  108. _netServiceBrowser.delegate = nil;
  109. }
  110. -(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing {
  111. if (!_isNotFirstLoading) {
  112. [self performSelector:@selector(requestVersionInfo) withObject:nil afterDelay:0.0f];
  113. _isNotFirstLoading = YES;
  114. }
  115. [_netService stop];
  116. // [_serviceArray addObject:aNetService];
  117. //
  118. // if (moreComing == NO) {
  119. // [self.tableView reloadData];
  120. //
  121. // NSSortDescriptor *sd = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
  122. // [_serviceArray sortUsingDescriptors:[NSArray arrayWithObject:sd]];
  123. //
  124. // // self.netServiceBrowser.delegate = nil;
  125. // // [self.netServiceBrowser stop];
  126. // // self.netServiceBrowser = nil;
  127. // NSRange stringRange = [self.title rangeOfString:@"mDNS"];
  128. // if (stringRange.location == 0) {
  129. // self.title = [NSString stringWithFormat:@"mDNS (%lu)", (unsigned long)[_serviceArray count]];
  130. // }
  131. // }
  132. }
  133. - (void)netServiceBrowser:(NSNetServiceBrowser *)netServiceBrowser didRemoveService:(NSNetService *)netService moreComing:(BOOL)moreComing {
  134. // for (int i = 0; i < _serviceArray.count; i++) {
  135. // if ([((NSNetService *)[_serviceArray objectAtIndex:i]).name isEqualToString:netService.name]) {
  136. // [_serviceArray removeObjectAtIndex:i];
  137. // break;
  138. // }
  139. // }
  140. // if (moreComing == NO) {
  141. // [self.tableView reloadData];
  142. //
  143. // NSSortDescriptor *sd = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
  144. // [_serviceArray sortUsingDescriptors:[NSArray arrayWithObject:sd]];
  145. //
  146. // NSRange stringRange = [self.title rangeOfString:@"mDNS"];
  147. // if (stringRange.location == 0) {
  148. // self.title = [NSString stringWithFormat:@"mDNS (%lu)", (unsigned long)[_serviceArray count]];
  149. // }
  150. // }
  151. }
  152. #pragma mark -
  153. #pragma mark NSNetServiceDelegate methods
  154. -(void)netService:(NSNetService *)sender didNotResolve:(NSDictionary *)errorDict {
  155. NSNumber *errorCode = [errorDict valueForKey:NSNetServicesErrorCode];
  156. NSString *errorMessage;
  157. switch ([errorCode intValue]) {
  158. case NSNetServicesActivityInProgress:
  159. errorMessage = @"서비스에 연결중입니다. 잠시 기다려 주세요.";
  160. // errorMessage = @"Service Resolution Currently in Progress. Please Wait.";
  161. break;
  162. case NSNetServicesTimeoutError:
  163. errorMessage = @"서비스에 연결할 수 없습니다.";
  164. // errorMessage = @"Service Resolution Timeout";
  165. [sender stop];
  166. break;
  167. }
  168. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"mDNS Browser" message:errorMessage delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
  169. [alert show];
  170. }
  171. -(void)netServiceDidResolveAddress:(NSNetService *)service {
  172. // mDNSDetailViewController *sdvc = [self.storyboard instantiateViewControllerWithIdentifier:@"mDNSDetailViewController"];
  173. // sdvc.selectedService = service;
  174. //
  175. // [self.navigationController pushViewController:sdvc animated:YES];
  176. }
  177. #pragma mark - MemoryWarning
  178. - (void)viewDidDisappear:(BOOL)animated {
  179. [_netServiceBrowser stop];
  180. }
  181. #pragma mark - UI Events
  182. #pragma mark - MemoryWarning
  183. - (void)didReceiveMemoryWarning
  184. {
  185. [super didReceiveMemoryWarning];
  186. // Dispose of any resources that can be recreated.
  187. }
  188. @end