2017-04-04 1 views
0

Apache Cordova 앱을 만들고 있습니다. 브라우저 간 통신을 통해 InAppBrowser에서 연 페이지에서 호출되는 InAppBrowser 플러그인 및 바코드 스캐너 플러그인을 추가했습니다. 그것은 안드로이드에서 완벽하게 실행됩니다. 하지만 iOS에서 실행되면 InAppBrowser는 모달 팝업처럼 작동하고 InAppBrowser가 닫기/닫기 될 때까지 바코드 스캐너를 표시하지 않습니다.Cordova iOS - InAppBrowser가 항상 최우선 호 위에 있습니다.

바코드 스캐너가 배경에서도 작동한다는 것을 확인했지만 InAppBrowser가 항상 위에 있기 때문에 표시되지 않습니다.

나는 바코드 스캐너 플러그인 최대 z- 색인을 제공하는 해결 방법이있을 수 있다고 생각하지만 어떻게 될지 알 수 없습니다.

또한 InAppBrowser를 숨기려고했지만 iOS에서는 작동하지 않았습니다.

cordova.InAppBrowser.hide(); 

제 아이디어는 모바일 앱에서 실행할 때 기본 기능을 사용하도록 웹 사이트를 확장하는 것입니다.

답변

0

여기에 답변을 추가하는 것을 잊었습니다. 그러나 나는 그 다음날 그것을 고쳤다.

- (void)hide:(CDVInvokedUrlCommand*)command { 
self.inAppBrowserViewController.viewController.hidden = YES; 
} 

- (void)hide:(CDVInvokedUrlCommand*)command { 
self.inAppBrowserViewController.viewController.hidden = NO; 

}

: 수정 내가 다음에 InAppBrowser의 숨기기 및 표시 방법을 변경, 매우 정직
0

같은 문제가있었습니다. https://issues.apache.org/jira/browse/CB-12586에 이미 문제가있어 문제를 해결하는 데 도움이되었습니다.

iOS 폴더 (예 : YourApp/platforms/ios/YourApp/Plugins/cordova-plugin-inappbrowser/CDVInAppBrowser)에서 InAppBrowser Plugin의 hide() 메소드 코드를 변경하여 해결책을 찾았습니다. 엠). 제안 된 솔루션을 적용한 후 숨기기 방법은 다음과 같습니다.

- (void)hide:(CDVInvokedUrlCommand*)command 
{ 
    if (self.inAppBrowserViewController == nil) { 
     NSLog(@"Tried to hide IAB after it was closed."); 
     return; 


    } 
    if (_previousStatusBarStyle == -1) { 
     NSLog(@"Tried to hide IAB while already hidden"); 
     return; 
    } 

    _previousStatusBarStyle = [UIApplication sharedApplication].statusBarStyle; 

    __weak CDVInAppBrowser* weakSelf = self; 

    // Run later to avoid the "took a long time" log message. 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     if (weakSelf.inAppBrowserViewController != nil) { 
      _previousStatusBarStyle = -1; 
      [weakSelf.inAppBrowserViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 
     } 
    }); 
} 

다음 "코드도 빌드"가 끝나면 hide 메서드가 효과가있었습니다. 더 나은 해결책을 찾으면 알려주세요.

관련 문제