首页 > 解决方案 > 打开相机需要 2-3 分钟,并导致 ionic 3 应用程序中的状态栏消失

问题描述

我们有一个 ionic 3 应用程序,它使用相机和图库来选择图像。我正在显示一个操作表,用户可以选择图库或相机来选择图像。

错误

尝试在应用程序中打开相机时,请求许可并开始拍摄图像需要很长时间。与此同时,应用程序只是冻结。捕获图像后,状态栏消失。它抛出以下堆栈跟踪;

  Main Thread Checker: UI API called on a background thread: -[UIImagePickerController init]
PID: 3140, TID: 1450459, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4   ManyTutors                          0x00000001027a87a4 +[CDVCameraPicker createFromPictureOptions:] + 112
5   ManyTutors                          0x00000001027a2d1c __25-[CDVCamera takePicture:]_block_invoke + 1148
6   libdispatch.dylib                   0x00000001030c3bcc _dispatch_call_block_and_release + 32
7   libdispatch.dylib                   0x00000001030c56c0 _dispatch_client_callout + 20
8   libdispatch.dylib                   0x00000001030c80ec _dispatch_queue_override_invoke + 952
9   libdispatch.dylib                   0x00000001030d8ae0 _dispatch_root_queue_drain + 364
10  libdispatch.dylib                   0x00000001030d9488 _dispatch_worker_thread2 + 140
11  libsystem_pthread.dylib             0x00000001f6dbb7c8 _pthread_wqthread + 216
12  libsystem_pthread.dylib             0x00000001f6dc275c start_wqthread + 8
2021-01-11 17:13:01.703428+0800 ManyTutors[3140:1450459] [reports] Main Thread Checker: UI API called on a background thread: -[UIImagePickerController init]
PID: 3140, TID: 1450459, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4   ManyTutors                          0x00000001027a87a4 +[CDVCameraPicker createFromPictureOptions:] + 112
5   ManyTutors                          0x00000001027a2d1c __25-[CDVCamera takePicture:]_block_invoke + 1148
6   libdispatch.dylib                   0x00000001030c3bcc _dispatch_call_block_and_release + 32
7   libdispatch.dylib                   0x00000001030c56c0 _dispatch_client_callout + 20
8   libdispatch.dylib                   0x00000001030c80ec _dispatch_queue_override_invoke + 952
9   libdispatch.dylib                   0x00000001030d8ae0 _dispatch_root_queue_drain + 364
10  libdispatch.dylib                   0x00000001030d9488 _dispatch_worker_thread2 + 140
11  libsystem_pthread.dylib             0x00000001f6dbb7c8 _pthread_wqthread + 216
12  libsystem_pthread.dylib             0x00000001f6dc275c start_wqthread + 8


[Camera] Failed to read exposureBiasesByMode dictionary: Error Domain=NSCocoaErrorDomain Code=4864 "* -[NSKeyedUnarchiver _initForReadingFromData:error:throwLegacyExceptions:]: data is NULL" UserInfo={NSDebugDescription=* -[NSKeyedUnarchiver _initForReadingFromData:error:throwLegacyExceptions:]: data is NULL}

预计会发生什么?

当我第一次选择相机时,它应该立即请求许可,在获得许可后,它应该拍照并在应用程序中使用该照片。

WhatsApp 图片 2021-01-06 下午 4 55 55

实际发生了什么?

第一次点击相机时,显示权限对话框需要2多分钟,点击图片后,当我们回到应用程序时,应用程序标题消失,应用程序开始滞后,无法正常工作.

WhatsApp 图片 2021-01-06 在 4 58 08 PM

环境、平台、设备

我只在 IOS 应用程序中遇到这个问题。安卓运行良好。对于 IOS,我已经在模拟器上、在调试模式下的真实设备上进行了测试,并且还通过将其上传到测试飞行。

版本信息

  cli packages: (C:\nvm\v10.15.1\node_modules)

    @ionic/cli-utils  : 1.19.2
    ionic (Ionic CLI) : 3.20.0

global packages:

    cordova (Cordova CLI) : not installed

local packages:

    @ionic/app-scripts : 3.2.4
    Cordova Platforms  : android 7.0.0 ios 5.0.1
    Ionic Framework    : ionic-angular 3.9.10

System:

    Android SDK Tools : 26.1.1
    Node              : v10.15.1
    npm               : 6.4.1
    OS                : Windows 10

Versions:

    Xcode Version   : 12
    IOS Version       : 14
    


任何建议将不胜感激。

标签: javascriptiosiphoneionic-frameworkcamera

解决方案


这篇文章回答了缓慢的问题。您需要编辑src/ios/CDVCamera.m以移动代码块,如另一篇文章中所述。

另请参阅this GitHub issue的混乱,没有人合并修复。


推荐阅读