iOS 12 中不会弹出请求访问相机的权限

2024-01-05

根据苹果标准,我们需要获得访问用户摄像头的许可。所以我已经成功集成了相机,并且在iOS 11中工作正常。但目前,我正在测试相机功能,发现如果用户一次允许相机访问,即使在全新安装后(来自应用程序商店),同一个应用程序也不会请求许可)。

所以我的问题是,iOS 12 中的行为是否发生了变化,或者每次用户尝试安装新应用程序时,我们都需要进行一些设置来询问权限?

Thanks


iOS 12.1 / 斯威夫特 4.2

每次用户点击应用程序中的“相机”按钮时,您都会调用此代码。它首先请求权限,如果过去安装的设置仍然存在,则会弹出 UIAlertController,允许用户打开设备上的“设置”应用程序,并更改相机权限设置。

OnCameraOpenButtonTap()

if UIImagePickerController.isSourceTypeAvailable(.camera) {
   checkCameraAccess(isAllowed: {
            if $0 {
                DispatchQueue.main.async {
                    self.presentCamera()
                }
            } else {
                DispatchQueue.main.async {
                self.presentCameraSettings()
            }
        }
    })
}

func checkCameraAccess(isAllowed: @escaping (Bool) -> Void) {
    switch AVCaptureDevice.authorizationStatus(for: .video) {
    case .denied:
        isAllowed(false)
    case .restricted:
        isAllowed(false)
    case .authorized:
        isAllowed(true)
    case .notDetermined:
        AVCaptureDevice.requestAccess(for: .video) { isAllowed($0) }
    }
}

private func presentCamera() {
    let imagePicker = UIImagePickerController()
    imagePicker.delegate = self
    imagePicker.sourceType = .camera
    present(imagePicker, animated: true, completion: nil)
}

private func presentCameraSettings() {
    let alert = UIAlertController.init(title: "allowCameraTitle", message: "allowCameraMessage", preferredStyle: .alert)
    alert.addAction(UIAlertAction.init(title: "Cancel", style: .cancel, handler: { (_) in
    }))

    alert.addAction(UIAlertAction.init(title: "Settings", style: .default, handler: { (_) in
        UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!, options: [:], completionHandler: nil)
    }))

    present(alert, animated: true)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 12 中不会弹出请求访问相机的权限 的相关文章

  • 带约束的嵌套集合视图的意外行为 (Swift 4)

    我的表格视图中有一个单元格 其中包含水平分页集合视图 该集合视图的每个页面内都有一个垂直集合视图 为了避免 滚动滚动 问题 我在垂直集合视图中禁用了垂直滚动 垂直集合视图的单元格计数不是静态的 可以是任意数字 因此 这会产生一个问题 集合视
  • 在情节提要中将 Segue 拖至自身

    我想将一个 Segue 从我的视图控制器拖到其自身 所以我可以推送该特定视图控制器的 无限 实例 我知道如何在代码中执行此操作 即以编程方式实例化视图控制器 但是 我想尽可能使用 segues 我发现了一些在故事板中进行自我延续的 技巧 但
  • 如何将CIFilter应用到UIView上?

    根据Apple docs 过滤属性CALayer不支持iOS 当我使用正在申请的应用程序之一时CIFilter to UIView即 Splice Funimate 和 Artisto 的视频编辑器 Videoshow FX 这意味着我们可
  • TTTAttributedLabel 可点击截断标记

    我有一个 TTTAttributedLabel 并为其指定了一个自定义属性截断标记 NSAttributedString atributedTruncationToken NSAttributedString alloc initWithS
  • 使用 BGTaskScheduler 进行后台获取与调试模拟完美配合,但在实践中却不起作用

    我在 appDelegate 的 didFinishLaunchingWithOptions 中注册后台获取任务 BGTaskScheduler shared register forTaskWithIdentifier Backgroun
  • Swift:协议、结构、类

    我开始学习 Swift 语言 但在理解协议 结构和类方面遇到了困难 我来自 Android 方面的编程 所以我相信 Swift 协议基本上是 Java 接口 其中每一个的正确用例是什么 这些类比并不 完全 正确 但这就是我所理解的要点 是的
  • 带有 allowedEditing 的 UIImagePickerController 不允许平移裁剪

    我在这里看到这个问题 UIImagePicker 允许编辑卡在中心 https stackoverflow com questions 12630155 uiimagepicker allowsediting stuck in center
  • 在 UITableView 的部分标题文本下方添加一些边距

    我已经设计了标题文本的样式 func tableView tableView UITableView cellForRowAtIndexPath indexPath NSIndexPath gt UITableViewCell let ce
  • NSUserDefaults 多久同步一次?

    的文档NSUserDefaults说synchronise方法被定期调用 但没有提及频率 10分钟的谷歌搜索没有发现任何信息 发生的频率是多少synchronise方法调用 这是一个未公开的实现细节 可能甚至不是一个恒定的时间间隔 但是 您
  • 在故事板中将 UITableView 的 rowHeight 设置为 UITableViewAutomaticDimension ?

    在 Xcode 6 中创建 iOS 8 应用程序时 如何设置 UITableViewrowHeight to UITableViewAutomaticDimension In WWDC 2014 第 226 场会议 表和集合视图中的新增功能
  • 在 IOS 中从 iPhone 删除资产(图片或视频)

    我正在开发一个 Iphone 应用程序 我可以使用 Assetslibrary 枚举资产并将它们加载到表视图中 用户可以在应用程序中删除一行 图片 视频 但如何直接从我的应用程序更新 Iphone 相册 否则 刷新时 表视图将重新加载之前删
  • 如何去掉 UIWebView 上的状态栏背景?

    从 iOS 11 开始 当UIWebView全屏时 状态栏上会出现与屏幕颜色相同的假背景UIWebView背景 有人知道如何摆脱它吗 甚至添加IUWebView到故事板并使其全屏将使状态栏背景出现 我一直在尝试编辑 UIWebView 的大
  • 我们能否检测用户是否通过主页按钮或锁定按钮离开而没有监听 darwin 通知?

    我最近向应用程序商店提交了一个新的二进制文件并将其发送以供审核 但它立即被拒绝并显示以下消息 不支持的操作 不允许应用程序监听设备锁定通知 经过一番挖掘后 我发现我们无法使用 com apple springboard lockstate
  • 从 Mac 命令行访问 iOS 应用程序目录(沙箱)

    我需要使用 Mac 或 Linux 上的命令行 非 GUI 访问 iOS 设备上安装的应用程序的沙箱目录 这有助于开发和测试自动化 将 json 文件放入沙箱中可以让我设置参数 例如额外的调试消息和更小的刷新间隔 像 iFunBox 这样的
  • 以弯曲格式显示文本

    我正在寻找以曲线格式绘制一些文本 我使用哪个控件并不重要 UITextField UILabel or UITextView 我只想显示如图所示的文本 仍在寻找解决方案 请帮忙 查看此链接 https nodeload github com
  • NSCFData fastCharacterContents 崩溃? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前在控制台中收到此崩溃日志 20
  • AWS S3 公共对象与私有对象?

    回到 S3 我的存储桶中有图像的 URL 我将在我的应用程序中呈现这些图像 但它们被设置为私有 当我尝试单击该链接时 它显示 访问被拒绝 当我将链接的设置更改为公共时 它会通过 但是我读到公共访问并不是最安全的事情 所以这本质上是一个由两部
  • iOS 视图控制器内存在被关闭后未释放

    当用户单击按钮时 它会显示一个带有两个视图控制器的新选项卡栏视图控制器 我是这样做的 ACLevelDownloadController dvc ACLevelDownloadController alloc initWithNibName
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘

随机推荐

  • 一张有 100 列的大表与许多小表

    我创建了一些网站 其中包含用户 评论 视频 照片 消息等 所有数据都在一张包含 100 列的表中 我认为一张表比多张表更好 因为用户只需要连接一张表 但我听说有些程序员不喜欢这种方法 有人能告诉我哪一个更好吗 一张非常大的表或很多小表 为什
  • 右值参考还是左值?

    我有一个类似性质的问题 就像 5 年前发布的问题一样 为什么右值引用变量不是右值 https stackoverflow com questions 32620750 why are rvalues references variables
  • 如何在Repeater中获取文字内容值

    我有一个中继器 如下所示 如何在代码隐藏中获取报告ID 从hiddenContent2内的表达式 表达式为 注意 我更喜欢一种方法not使用 查找控件 ASP NET
  • 从任何音乐文件 ios 生成波形

    我正在寻找如何根据音乐绘制声波 我想要像这样的图片的波浪 这是一些关于显示音乐中的波浪的讨论 iOS 上的波形 https stackoverflow com questions 8298610 waveform on ios 在 iPho
  • 如何在keras中单独使用Autoencoder的编码器?

    我训练了以下自动编码器模型 input img Input shape 1 32 32 x Convolution2D 16 3 3 activation relu border mode same input img x MaxPooli
  • kubectl删除/创建秘密禁止(谷歌云平台)

    我正在遵循以下关于使用 gitlab 和 Kubernetes 持续集成的教程 在我的例子中是在谷歌云上 https about gitlab com 2016 12 14 continuous delivery of a spring b
  • 禁用(并重新启用)元素上的 href 和 onclick

    我只想启用 禁用onclick和元素 a 或 div 上的 href 我不知道该怎么做 我可以禁用onclick通过在单击事件上添加处理程序 但 href 仍然可用 this unbind click function event even
  • 阻止后退按钮暴露安全页面?

    我遇到了浏览器缓存的 显然是常见的 问题 并且我的安全页面可以通过后退按钮访问 在用户注销后 这是我的 logout php
  • Vue.js/vuex ajax 使用 ajax 状态更新组件

    我将 vue webpack 模板与 vuex 一起使用 基本上遇到组件不随状态更新的问题 我有一家商店 const state userData 在我的应用程序中我有一个方法 methods addUserData function co
  • JSON.parse 如何管理“未定义”?

    我改变了这个 function MangaElt obj use strict this mirror obj mirror this name obj name this url obj url if obj lastChapterRea
  • Linq toEntity - 2 个键之间的字符串的第一个字母

    我正在使用实体框架 并遇到了缺乏对某些扩展的支持的问题 我有 2 个钥匙 都是字符 fromKey and toKey我正在寻找建造一个Where将搜索列表的语句Stores 然后选择第一个字母Store Name在 之间fromKey a
  • 如何限制模板只接受某些类型

    在 Java 中 您可以定义仅接受扩展您选择的类的类型的泛型类 public class ObservableList
  • 返回 REST API 的部分成功响应的好方法是什么? [复制]

    这个问题在这里已经有答案了 我正在研究一个依赖下游 API 的用例 问题是 对我来说 单个资源是由下游服务的多个资源组成的 因此 对我的 API 的一次写入可能会在内部对外部服务进行多次调用 并且其中任何一个调用都可能会失败 如果一切顺利
  • 将结构体值作为接口值传递时如何避免装箱?

    Interface I 是引用类型 struct S 是值类型 结构体可以实现接口 public interface I struct S I 假设有一个 S 值作为 I 的参数传递给方法 在这种情况下 必须将其装箱 void Method
  • 忽略 Powershell 字符串中的通配符 []

    我有一个 Powershell 脚本 它以文件名作为输入 param string folder string input filename logfile folder duplicate log Write Output nScript
  • 我想在oracle 11g中所有表的所有列中搜索特定值

    是否可以在 Oracle 中搜索每个表的每个字段以获取特定值 我想在不使用任何程序的情况下做到这一点 我们可以用查询来做吗 您可以使用单个查询来完成此操作 尽管它有点复杂 此查询将在当前模式中的所有 CHAR 和 VARCHAR2 列中搜索
  • Flutter iOS Firebase 动态链接推送带有链接值的命名页面

    目前我正在使用 Firebase 的动态链接来实现密码重置功能 在 Android 上 一切工作正常 如果应用程序被打开 我正在处理深层链接 另一方面 在 iOS 上它也可以工作 但是 Flutter 应用程序会推送一个带有链接值的额外命名
  • 由类型类形成的类型之间关系的术语

    面向对象编程使用 is a 继承 等术语 class Cat extends Animal cat is a animal 和 has a 组合 class Car engine Engine car has a engine 来描述类型之
  • 如何在 Gulp 中添加特定的 Bower 组件作为 IE8 条件块

    我有几个凉亭组件 其中我需要一些组件 例如json3 respondjs es5shim添加到 IE8 条件块中 在构建和服务中 如下所示 我应该如何继续编写任务 我找不到任何合适的例子gulp inject也wiredep对于这个问题 请
  • iOS 12 中不会弹出请求访问相机的权限

    根据苹果标准 我们需要获得访问用户摄像头的许可 所以我已经成功集成了相机 并且在iOS 11中工作正常 但目前 我正在测试相机功能 发现如果用户一次允许相机访问 即使在全新安装后 来自应用程序商店 同一个应用程序也不会请求许可 所以我的问题