iOS Vuforia ошибка после входа из фона

Я использую Vuforia SDK версии 6.2.9 в своем приложении для iOS.
Все работает нормально, но при входе приложения из фона возникает ошибка.

Контроллер вида VUFORIA прослушивает UIApplicationWillResignActiveNotification а также UIApplicationDidBecomeActiveNotification уведомления.
В случае UIApplicationWillResignActiveNotification приостановить AR, в случае UIApplicationDidBecomeActiveNotification возобновить AR.

// we use the iOS notification to pause/resume the AR when the application goes (or come back from) background

[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(pauseAR)
name:UIApplicationWillResignActiveNotification
object:nil];

[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(resumeAR)
name:UIApplicationDidBecomeActiveNotification
object:nil];

Это методы

- (void) pauseAR {
NSError * error = nil;
if (![vapp pauseAR:&error]) {
NSLog(@"Error pausing AR:%@", [error description]);
}
}

- (void) resumeAR {

NSError * error = nil;
if(! [vapp resumeAR:&error]) {
NSLog(@"Error resuming AR:%@", [error description]);
}

// on resume, we reset the flash
Vuforia::CameraDevice::getInstance().setFlashTorchMode(false);

[self handleRotation:self.interfaceOrientation];
}

Когда я возвращаюсь в режим сканирования, после того, как приложение вошло из фона, камера зависла, с ошибкой
Не удалось найти UIView с классом слоя CAEAGLLayer или CAMetalLayer, который отвечает селектору renderFrameVuforia

2017-07-17 11:13:01.187406+0200 App[8689:2961061] frame: {{0, 0}, {375, 667}}
2017-07-17 11:13:01.243707+0200 App[8689:2961061] DEBUG/AR(8689) Could not find a UIView with CAEAGLLayer or CAMetalLayer layer class that responds to selector renderFrameVuforia
2017-07-17 11:13:01.253958+0200 App[8689:2961061] Vuforia Library version 6.2.9
2017-07-17 11:13:01.731099+0200 App[8689:2961061] AR View: Rotating to Portrait
2017-07-17 11:13:01.731406+0200 App[8689:2961061] frame: {{0, 0}, {375, 667}}
2017-07-17 11:13:01.731562+0200 App[8689:2961061] VideoBackgroundConfig: size: 750,1334
2017-07-17 11:13:01.731589+0200 App[8689:2961061] VideoMode:w=1280 h=720
2017-07-17 11:13:01.731611+0200 App[8689:2961061] width=750.000 height=1334.000
2017-07-17 11:13:01.731638+0200 App[8689:2961061] ViewPort: X,Y: 0,0 Size X,Y:750,1334
2017-07-17 11:13:02.598959+0200 App[8689:2962160] INFO/AR(8689) 2017-07-18 11:13:02: Completed CloudReco transaction with ID '6f5c61ecc07741a7b652242abf909479'
2017-07-17 11:13:02.843834+0200 App[8689:2961061] frame: {{0, 0}, {375, 667}}
2017-07-17 11:13:02.844215+0200 App[8689:2961061] frame: {{0, 0}, {375, 667}}
2017-07-17 11:13:02.860971+0200 App[8689:2961061] DEBUG/AR(8689) UIView has CAEAGLLayer layer class
2017-07-17 11:13:02.861114+0200 App[8689:2961061] DEBUG/AR(8689) UIView does not respond to selector renderFrameVuforia
2017-07-17 11:13:02.861191+0200 App[8689:2961061] DEBUG/AR(8689) UIView has CAEAGLLayer layer class
2017-07-17 11:13:02.861222+0200 App[8689:2961061] DEBUG/AR(8689) UIView does not respond to selector renderFrameVuforia

Спасибо за вашу помощь!

2

Решение

В какой метод вы вызываете pauseAR() ?

Я столкнулся с той же проблемой, когда вернулся к ViewController (которому принадлежит EAGLView), камера зависла.

Я звоню pauseAR() в viewWillDisappear() а также resumeAR() в viewWillAppear()По мере выхода вопроса вышел метод делегата renderFrameVuforia() в EAGLView никогда не вызывается, я думаю, что это проблема, причина проблемы:

Не удалось найти UIView с классом слоя CAEAGLLayer или CAMetalLayer, который отвечает селектору renderFrameVuforia

Поэтому я посмотрел библиотеку разработчиков Vuforia и обнаружил:

Иерархия представления приложения полностью настраивается перед вызовом QCAR :: onResume () (после чего QCAR пытается найти представление приложения, соответствующее UIGLViewProtocol).

Я изменился resumeAR() метод называется позицией для viewDidAppear()все работает как обычно. Надеюсь, это поможет вам.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]