打开相机需要 2-3 分钟,并导致状态栏在 ionic 3 应用程序中消失
Opening Camera takes 2-3 minutes and causes status bar to disappear in ionic 3 app
我们有一个 ionic 3 应用程序,它使用相机和图库来 select 图像。我正在展示一个动作 sheet,用户可以 select 画廊或相机到 select 图像。
错误
尝试在应用中打开相机时,需要很长时间才能请求许可并开始拍摄图像。与此同时,应用程序只是冻结。捕获图像后,状态栏消失。
它抛出以下堆栈跟踪;
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}
预计会发生什么?
当我第一次 select 相机时,它应该立即请求许可,在给予许可后它应该拍照并在应用程序中使用该照片。
实际发生了什么?
当我第一次点击相机时,需要 2 多分钟才能显示权限对话框,当我们返回应用程序时点击图片后,应用程序 header 消失并且应用程序开始滞后并且无法正常工作。
环境、平台、设备
我只在 IOS 个应用中遇到过这个问题。 Android 工作正常。对于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
任何建议将不胜感激。
缓慢问题在 中得到解答。
您需要编辑 src/ios/CDVCamera.m
以移动代码块,如其他 post.
中所述
另请参阅 this GitHub issue 处的混乱情况,其中没有人合并修复程序。
我们有一个 ionic 3 应用程序,它使用相机和图库来 select 图像。我正在展示一个动作 sheet,用户可以 select 画廊或相机到 select 图像。
错误
尝试在应用中打开相机时,需要很长时间才能请求许可并开始拍摄图像。与此同时,应用程序只是冻结。捕获图像后,状态栏消失。 它抛出以下堆栈跟踪;
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}
预计会发生什么?
当我第一次 select 相机时,它应该立即请求许可,在给予许可后它应该拍照并在应用程序中使用该照片。
实际发生了什么?
当我第一次点击相机时,需要 2 多分钟才能显示权限对话框,当我们返回应用程序时点击图片后,应用程序 header 消失并且应用程序开始滞后并且无法正常工作。
环境、平台、设备
我只在 IOS 个应用中遇到过这个问题。 Android 工作正常。对于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
任何建议将不胜感激。
缓慢问题在 src/ios/CDVCamera.m
以移动代码块,如其他 post.
另请参阅 this GitHub issue 处的混乱情况,其中没有人合并修复程序。