大家好,这里是程序员阿山哥🤓最近在写个App小功能的时候,无意间发现了,在用户未授权的情况情况下,也能访问到照片。这次发现也解答了我一个多年来的疑问,为何别人的APP没有授权情况下也能传入用户选择的照片🤔
测试环境:
Xcode 13.2.1
iPhone5s(iOS 12.5.6)
实现方案:UIImagePickerController
// 创建一个UIImagePickerController()
let imagePicker = UIImagePickerController()
// 设置代理,可以在后面实现代理方法中获得用户选择的照片
imagePicker.delegate = self
// 设置类型,有photoLibrary,camera,savedPhotosAlbum
imagePicker.sourceType = .photoLibrary
imagePicker.sourceType的三种类型的一些了解
- photoLibrary,相簿列表,用户可以选择不同的相簿里的照片视频
- savedPhotosAlbum,保存的照片列表,用户可以选择照片列表里的照片视频
- camera,调用摄像头,这个需要再多一点设置,UIImagePickerController里有对应的设置属性
注意: 记得在info里加上对应Privacy配置,这是Apple开发的要求
附上完整的ViewController代码
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
let imagePicker = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary
}
@IBAction func addImageBtnPressed(_ sender: UIButton) {
present(imagePicker, animated: true, completion: nil)
}
}
extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let userPickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
imageView.image = userPickedImage
}
imagePicker.dismiss(animated: true, completion: nil)
}
}
所以,iOS用户如果发现App没有照片授权,却能选择图片要多加小心。希望开发者不要搞什么幺蛾子(大概率不会的)。通过App Store下载的APP大部分都是安全的,放心,Apple的审核挺严格的(不过有时候审核也是莫名其妙的,所以iOS软件开发最大的挑战不是编程,是上架审核🤣)