You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 01:38:19