J'utilise JSQMessagesViewController pour envoyer des messages photo dans mes chats et je suis confronté à ce problème lorsque j'essaie de télécharger l'image de la galerie. Voici mon code:Le fichier "IMG_0001.JPG" n'a pas pu être ouvert car vous n'avez pas l'autorisation de le voir
override func didPressAccessoryButton(_ sender: UIButton) {
let picker = UIImagePickerController()
picker.delegate = self
if (UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary)) {
picker.sourceType = UIImagePickerControllerSourceType.photoLibrary
}
present(picker, animated: true, completion:nil)
}
func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [String : Any]) {
picker.dismiss(animated: true, completion:nil)
// 1
if let photoReferenceUrl = info[UIImagePickerControllerReferenceURL] as? URL {
// Handle picking a Photo from the Po8hoto Library
// 2
let assets = PHAsset.fetchAssets(withALAssetURLs: [photoReferenceUrl], options: nil)
let asset = assets.firstObject
// 3
if let key = sendPhotoMessage() {
// 4
asset?.requestContentEditingInput(with: nil, completionHandler: { (contentEditingInput, info) in
let imageFileURL = contentEditingInput?.fullSizeImageURL
// 5
let path = "\(FIRAuth.auth()?.currentUser?.uid)/\(Int(Date.timeIntervalSinceReferenceDate * 1000))/\(photoReferenceUrl.lastPathComponent)"
// 6
self.storageRef.child(path).putFile(imageFileURL!, metadata: nil) { (metadata, error) in
if let error = error {
print("Error uploading photo: \(error.localizedDescription)")
return
}
// 7
self.setImageURL(self.storageRef.child((metadata?.path)!).description, forPhotoMessageWithKey: key)
}
})
}
} else {
// Handle picking a Photo from the Camera - TODO
}
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion:nil)
}
passe beaucoup lu à ce sujet dans google (The file “xxx.mp4” couldn’t be opened because you don’t have permission to view it), mais malheureusement, il n'y a pas de solution pour elle. S'il vous plaît aidez-moi à comprendre comment pourrais-je réparer cet avertissement? message d'avertissement entier:
Body file is unreachable: /var/mobile/Media/PhotoData/Sync/100SYNCD/IMG_0001.JPG Error Domain=NSCocoaErrorDomain Code=257 "The file “IMG_0001.JPG” couldn’t be opened because you don’t have permission to view it." UserInfo={NSURL=file:///var/mobile/Media/PhotoData/Sync/100SYNCD/IMG_0001.JPG, NSFilePath=/var/mobile/Media/PhotoData/Sync/100SYNCD/IMG_0001.JPG, NSUnderlyingError=0x17464d4a0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}} Error uploading photo: An unknown error occurred, please check the server response.
post-scriptum cela fonctionne bien dans l'émulateur, je reçois cet avertissement uniquement sur le périphérique réel.
ajouter une description de l'utilisation de la photothèque dans votre fichier Info.plist .and dans la section de valeur ajouter un message que vous voulez –
@Samarth Kejriwal déjà fait, encore obtenir cet avertissement – Burning
utiliser 'si laisser photoReferenceUrl = info [UIImagePickerControllerImageURL] comme? URL', parce que 'UIImagePickerControllerReferenceURL'est obsolète ' –