2015-06-24 4 views
1

Прямо сейчас, после того как пользователь одобрил разрешения для камеры и GPS, у меня есть черный экран с pois. Это похоже на проблему, связанную с камерой, потому что pois перемещается по позиции позиции, так что часть работает хорошо, в добавлении, если я убиваю приложение, а затем запускаю его, все отлично (пользователь уже одобрил разрешения). Любые мысли, что может быть проблема? Код ниже:Wikitude black screen на iOS 8.3

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSError *deviceNotSupportedError = nil; 
    if ([WTArchitectView isDeviceSupportedForRequiredFeatures:WTFeature_Geo error:&deviceNotSupportedError]) { // 1 
     self.architectView.delegate = self; 
     [self.architectView setLicenseKey:@""]; 

     self.architectWorldNavigation = [self.architectView loadArchitectWorldFromURL:[[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html" subdirectory:@"4_PointOfInterest_4_SelectingPois"] withRequiredFeatures:WTFeature_Geo | WTFeature_2DTracking]; 

     [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification 
                  object:nil 
                  queue:[NSOperationQueue mainQueue] 
                 usingBlock:^(NSNotification *note) { 
                  if (self.architectWorldNavigation.wasInterrupted) { 
                   [self.architectView reloadArchitectWorld]; 
                  } 
                  [self startRunning]; 
                 }]; 

     [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationWillResignActiveNotification 
                  object:nil 
                  queue:[NSOperationQueue mainQueue] 
                 usingBlock:^(NSNotification *note) { 
                  [self startRunning]; 
                 }]; 

    } else { 
     NSLog(@"device is not supported - reason: %@", [deviceNotSupportedError localizedDescription]); 
    } 
} 

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self startRunning]; 
} 

- (void)startRunning { 

    if (![self.architectView isRunning]) { 
     [self.architectView start:^(WTStartupConfiguration *configuration) { 
      configuration.captureDevicePosition= AVCaptureDevicePositionBack; 

     } completion:^(BOOL isRunning, NSError *error) { 
      if (!isRunning) { 
       NSLog(@"WTArchitectView could not be started. Reason: %@", [error localizedDescription]); 
      } 
     }]; 
    } 
} 

ответ

0

Я исправил эту проблему, проверив сообщение UIApplicationDidBecomeActiveNotification, если включен движок Wikitude. Если нет, я запускаю метод запуска Wikitude, и все работает нормально.

- (void)startRunning { 
    self.observers = [[NSMutableArray alloc] init]; 
    NSError *deviceNotSupportedError = nil; 
    if ([WTArchitectView isDeviceSupportedForRequiredFeatures:WTFeature_Geo error:&deviceNotSupportedError]) { 
     self.architectView.delegate = self; 
     self.architectView.desiredLocationAccuracy = kCLLocationAccuracyNearestTenMeters; 
     [self.architectView setLicenseKey:kWikiTudeLicenseKey]; 

     NSURL *architectWorldUrl = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html" subdirectory:kWikitudeHTMLFileSubDictionary]; 
     self.architectWorldNavigation = [self.architectView loadArchitectWorldFromURL:architectWorldUrl withRequiredFeatures:WTFeature_Geo]; 

     for (id object in self.observers) { 
      [[NSNotificationCenter defaultCenter] removeObserver:object]; 
     } 

     id observer = [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification 
                     object:nil 
                     queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) { 

                      if (self.architectWorldNavigation.wasInterrupted) { 
                       [self.architectView reloadArchitectWorld]; 
                      } 
                      [self startServiceIfNeeded]; 
                     }]; 
     id observer1 = [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationWillResignActiveNotification 
                     object:nil 
                      queue:[NSOperationQueue mainQueue] 
                    usingBlock:^(NSNotification *note) { 
                     if ([self.architectView isRunning]) 
                     { 
                      [self.architectView stop]; 
                     } 
                    }]; 
     [self.observers addObject:observer]; 
     [self.observers addObject:observer1]; 
    } else { 
     DLog(@"device is not supported - reason: %@", [deviceNotSupportedError localizedDescription]); 
    } 

    if (![self.architectView isRunning]) { 
     [self.architectView start:^(WTStartupConfiguration *configuration) { 
      configuration.captureDevicePosition = AVCaptureDevicePositionBack; 
     } completion:^(BOOL isRunning, NSError *error) { 
      if (!isRunning) { 
       NSLog(@"WTArchitectView could not be started. Reason: %@", [error localizedDescription]); 
      } 
      self.didStart = isRunning; 
      if (self.didStartedEngine) { 
       self.didStartedEngine(); 
      } 

     }]; 
    } 
} 

    - (void)startServiceIfNeeded { 
     if (![self.architectView isRunning]) { 
      [self.architectView start:^(WTStartupConfiguration *configuration) { 
       configuration.captureDevicePosition = AVCaptureDevicePositionBack; 
      } completion:^(BOOL isRunning, NSError *error) { 
       if (!isRunning) { 
        NSLog(@"WTArchitectView could not be started. Reason: %@", [error localizedDescription]); 
       } 
      }]; 
     } 
    } 
0

Set Другие флаги компоновщика для -ObjC как для отладки и выпуска на параметры сборки. enter image description here