iOS应用跳转原生相机App实现方案(不使用UIImagePickerController)
直接跳转iOS原生相机App的实现方案(无需UIImagePickerController)
可行性说明
完全可以通过URL Scheme直接跳转至iOS原生相机App,无需使用UIImagePickerController,也不需要在你的App内获取图片。
Info.plist 配置(必填)
iOS 9及以后,App需要在Info.plist中声明要查询的URL Scheme,否则canOpenURL:会返回NO。添加以下配置:
<key>LSApplicationQueriesSchemes</key> <array> <string>camera</string> </array>
或者在Xcode可视化编辑Info.plist时:
- 添加「LSApplicationQueriesSchemes」类型为数组
- 向数组中添加字符串元素「camera」
跳转代码实现
Swift 版本
func openNativeCamera() { guard let cameraURL = URL(string: "camera://") else { return } if UIApplication.shared.canOpenURL(cameraURL) { UIApplication.shared.open(cameraURL, options: [:], completionHandler: { success in if !success { print("相机App打开失败") } }) } else { print("设备不支持打开原生相机") } }
Objective-C 版本
- (void)openNativeCamera { NSURL *cameraURL = [NSURL URLWithString:@"camera://"]; if ([[UIApplication sharedApplication] canOpenURL:cameraURL]) { [[UIApplication sharedApplication] openURL:cameraURL options:@{} completionHandler:^(BOOL success) { if (!success) { NSLog(@"相机App打开失败"); } }]; } else { NSLog(@"设备不支持打开原生相机"); } }
关键注意点
camera://是iOS原生相机的标准URL Scheme,适配绝大多数iOS版本,但无相机模块的设备(如部分iPad)会无法打开,因此必须保留canOpenURL:的判断逻辑。- iOS 10及以上推荐使用带回调的
open(_:options:completionHandler:)方法,便于处理打开失败的场景。 - 此方式无需申请相机权限,因为只是跳转至系统相机App,并未在自身App内访问相机硬件。
内容的提问来源于stack exchange,提问作者Joao Victor Simonassi Farias
相关产品推荐
相关产品推荐

