ios - Xcode 10 主线程检查器:Cordova 相机插件
问题描述
在 iOS13 发布之后,我正在使用 Cordova 测试一个混合应用程序。启动相机非常慢,并生成以下内容:
==================================================== ================
主线程检查器:在后台线程上调用的 UI API:-[UIImagePickerController init]
PID:1347,TID:618928,线程名称:(无),队列名称:com.apple.root.default-qos,QoS:0
回溯:
4 0x0000000100f1bba0 +[CDVCameraPicker createFromPictureOptions:] + 124
5 0x0000000100f15d54 -[CDVCamera showCameraPicker:withOptions:] + 108
6 0x0000000100f15570 __25-[CDVCamera 拍摄图片:]_block_invoke_2 + 336
7 AVFoundation 0x00000001b76178f8 2BC0C357-314E-3AE8-B006-C28528B87512 + 710904
8 TCC 0x00000001b35dfbf8 85A762AF-99DB-3B4C-B24B-09600CC17196 + 7160
9 TCC 0x00000001b35e3de4 85A762AF-99DB-3B4C-B24B-09600CC17196 + 24036
10 libxpc.dylib 0x00000001acfe3804 79A1F1AD-9CB4-3334-91D9-E1ED6B1032A3 + 104452
11 libxpc.dylib 0x00000001acfd72c4 79A1F1AD-9CB4-3334-91D9-E1ED6B1032A3 + 53956
12 libdispatch.dylib 0x000000010109b3b4 _dispatch_client_callout3 + 20
13 libdispatch.dylib 0x00000001010b7000 _dispatch_mach_msg_async_reply_invoke + 392
14 libdispatch.dylib 0x00000001010ada8c _dispatch_kevent_worker_thread + 1436
15 libsystem_pthread.dylib 0x00000001ad0e6adc _pthread_wqthread + 336
16 libsystem_pthread.dylib 0x00000001ad0ecc7c start_wqthread + 8
Xcode 10.3 科尔多瓦插件相机版本 4.1.0
在 iPhone X、iOS13 上运行
最终,相机打开并允许我拍照,但之后 UI 无法正确显示。我尝试创建一个只添加了相机插件的全新应用程序,并且发生了同样的事情。
如何解决?
解决方案
似乎 UIImagePickerController 需要在 UI 线程中调用。幸运的是,代码已经为这种变化做好了准备!
只需将 cameraPicker 初始化部分移动到主线程部分:
dispatch_async(dispatch_get_main_queue(), ^{
// UI MainThread execution
CDVCameraPicker* cameraPicker = [CDVCameraPicker createFromPictureOptions:pictureOptions];
weakSelf.pickerController = cameraPicker;
cameraPicker.delegate = weakSelf;
cameraPicker.callbackId = command.callbackId;
// we need to capture this state for memory warnings that dealloc this object
cameraPicker.webView = weakSelf.webView;
...
}
D.
推荐阅读
- frameworks - 使用 BDD 进行 API 测试
- c# - WIX 不会在 unistall 上停止 Windows 服务
- angular6 - Angular v6、rxjs v6 错误 TS2339:“OperatorFunction”类型上不存在属性“管道”
- r - 如何在R中导入不同的文件,每个文件都包含xml文件?
- geoserver - 地理服务器:没有这样的工作区 'gwc/service'
- python - 为什么我不能在代码中确定对象是 DataTime 类型?
- c# - 从本机代码控制第三方线程
- python-3.x - 使用 Gensim 进行动态主题建模/哪个代码?
- javascript - 我已将函数名称“测试”添加到关注中,但错误提示它无法识别为函数。谁能帮助我
- java - 如何在Java中转换字符集?