/ / Swift visualizzato firebase photoUrl non può sostituire l'immagine con il selettore di immagini - swift, firebase, firebase-autenticazione

Swift visualizzato firebase photoUrl non può sostituire l'immagine con il selettore di immagini - swift, firebase, firebase-authentication

Uso Firebase come back-end della mia app. Al termine dell'autenticazione dell'utente, passeranno alla pagina di creazione del profilo. Visualizza l'immagine del profilo utente da Facebook.

Uso questo codice per visualizzarlo

func displayProfilePic(user: FIRUser?){

let photoURL = user?.photoURL
struct last {
static var photoURL: NSURL? = nil
}
last.photoURL = photoURL;  // to prevent earlier image overwrites later one.
if let photoURL = photoURL {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
let data = NSData.init(contentsOfURL: photoURL)
if let data = data {
let image = UIImage.init(data: data)
dispatch_async(dispatch_get_main_queue(), {
if (photoURL == last.photoURL) {
self.profilePic.image = image
}
})
}
})
} else {
profilePic.image = UIImage.init(named: "DefaultPic")
}

però, Ho anche permesso all'utente di scegliere il proprio profilofoto dalla fotocamera o libreria di foto. Quando l'utente sceglie la propria immagine, visualizzerà l'immagine selezionata per 1-2 secondi e visualizzerà nuovamente l'immagine del profilo Facebook. Questo significa che l '"immagine scelta non può sostituire l'immagine del profilo Facebook"

È il mio codice per la fotocamera e la libreria di foto

func openGallary(){

if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum){
print("Pick Photo")

self.imagePicker.delegate = self
self.imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
self.imagePicker.allowsEditing = true
self.presentViewController(self.imagePicker, animated: true, completion: nil)
}
}

func openCamera(){
if(UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)){
self.imagePicker.sourceType = UIImagePickerControllerSourceType.Camera
self.imagePicker.allowsEditing = true
self.presentViewController(self.imagePicker, animated: true, completion: nil)

}else{
print("you got no camara")
}
}

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
self.dismissViewControllerAnimated(true, completion: { () -> Void in

})
profilePic.image = image
}

risposte:

0 per risposta № 1

L'autenticazione Firebase scatta una foto URL, quindi la posizione pubblica in cui una foto del profiloper l'utente è presente. Se si desidera consentire all'utente di caricare una nuova foto del profilo, sarà necessario trovare un posto per archiviare la foto e quindi inserire l'URL nel profilo di autenticazione Firebase.

Un posto dove conservare tale immagine del profilo sarebbe Firebase Storage. Vedi la documentazione su come caricare un'immagine da iOS e poi genera un URL di download che memorizzi nel profilo utente.