UIImagePickerController和info.plist问题

时间:2019-03-17 17:59:26

标签: ios swift

在我的项目中,我尝试添加两件事:

  1. 一个人的化身的相机来源。
  2. info.plist 文件中添加对相机和照片库的访问权限。

但是当我尝试在真实设备上测试我的应用程序时,该应用程序未显示任何权限,而当我选择摄像头时,该应用程序退出却没有在日志控制台中显示错误消息?

对于info.plist,我使用以下两行:

public class StringTrimmingMessageInspector : IDispatchMessageInspector
{
    public object AfterReceiveRequest(ref Message request,
        IClientChannel channel, InstanceContext instanceContext)
    {
        if(request.Header.Action!=null) // Issue : this property is always null
        {
        }
    }

    return null;
}

public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
}    

并添加一张我使用此代码的照片:

<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) camera use</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) photo use</string>

谢谢。

2 个答案:

答案 0 :(得分:1)

在您的addNewPerson()方法中,在显示警报之前,您应该检查用户是否已授予访问其相机的权限,您可以通过以下方法进行操作:

if AVCaptureDevice.AVCaptureDevice.authorizationStatus(AVMediaTypeVideo) ==  AVAuthorizationStatus.Authorized {
    // Already Authorized
} else {
    AVCaptureDevice. requestAccess(AVMediaTypeVideo, completionHandler: { (granted: Bool) -> Void in
       if granted == true {
           // User granted
       } else {
           // User rejected
       }
   })
}

在此之前,请确保您添加了enter image description here

答案 1 :(得分:0)

只需提一下,在iOS 11中不需要使用UIImagePicker进行摄像头访问

这是rickster's post中粘贴粘贴的片段。

  

在iOS 11中,UIImagePickerController与您的应用程序分开运行。这意味着:

     

您的应用看不到用户的整个照片库-它仅对用户在图像选择器中选择的任何资产都具有只读访问权限。   由于(1),您的应用不需要标准的隐私授权即可访问照片库。用户明确选择一个   在您的应用中使用的特定资产(或多个),这意味着用户已授予您的应用读取有关资产的权限。