【问题标题】:iOS 11 UIImagePickerController not displaying privacy alert - how to force display permission dialog?iOS 11 UIImagePickerController 不显示隐私警报 - 如何强制显示权限对话框?
【发布时间】:2018-03-20 12:53:24
【问题描述】:

我有一个应用程序在选择带有UIImagePickerController 的照片时未显示隐私对话框而被商店拒绝。 我尝试了一个不同的项目并在下面粘贴了我的代码,但仍然没有收到任何隐私警报。

用户点击按钮选择照片,显示相机胶卷列表,可以选择照片。一切正常,除了不显示此操作之前要求用户允许操作的警报。

在应用提交时没有任何错误或警告,只有应用审核团队拒绝让应用通过,因为没有显示警报。

如何强制应用在访问照片库之前显示隐私提醒?

- (IBAction)pickAction:(id)sender {

    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
    imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    imagePickerController.delegate = self;
    [self presentViewController:imagePickerController animated:YES completion:nil];

}

<key>NSPhotoLibraryUsageDescription</key>
    <string>To pick photos for analysis</string>

我尝试了一个使用 Swift3 的全新项目,但也没有得到任何隐私/权限警报对话框,代码如下:

    var imagePicker = UIImagePickerController()

    @IBAction func btnClicked() {

        if UIImagePickerController.isSourceTypeAvailable(.savedPhotosAlbum){
            print("Button capture")

            imagePicker.delegate = self
            imagePicker.sourceType = .savedPhotosAlbum;
            imagePicker.allowsEditing = false

            self.present(imagePicker, animated: true, completion: nil)
        }
    }

    func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){
        self.dismiss(animated: true, completion: { () -> Void in

        })

//        imageView.image = image
    }

【问题讨论】:

  • Re: 评论,你的应用只适用于 iOS11 吗?
  • 看看NSPhotoLibraryAddUsageDescriptionNSPhotoLibraryUsageDescription。有很多 iOS 10 和 iOS 11 特定的行为。 (我在 iOS 11 上,我们不要求烫发,它对我们有用。developer.apple.com/library/archive/documentation/General/…

标签: objective-c swift3 ios11 xcode9 info.plist


【解决方案1】:

iOS 11 引入了带有照片库对象的新“照片”框架,可以明确地向用户请求权限:

你必须像这样使用:

import Photos
class ViewController: UIViewController {
    override func viewDidLoad() {
        PHPhotoLibrary.requestAuthorization { (status) in
            switch status {
            case .authorized:
                print("authorized")
            case .denied:
                print("denied")
            default:
                print("default")
            }
        }
    }
}

【讨论】:

猜你喜欢
  • 2017-03-16
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多