2015-11-26 21 views
11

Sto lavorando con SFSafariViewController e ho riscontrato il seguente problema: L'utente viene presentato con un pulsante immagine di caricamento, quando viene fatto clic sul dispositivo visualizza correttamente più opzioni, uno dei quali è la fotocamera. Quando l'utente seleziona la fotocamera, carica la fotocamera ma lo schermo è nero e il pulsante di azione è disattivato. Tuttavia, se l'utente seleziona la libreria, l'immagine selezionata viene caricata correttamente.ios 9 - xcode 7 - SFSafariViewController - Upload immagine - Schermo nero fotocamera

Ho verificato che l'app abbia le autorizzazioni della telecamera attivate.

Ho provato a implementare le correzioni trovate here e here, ma senza successo.

Qualcun'altro ha riscontrato questo problema?

Codice:

import UIKit 
import SafariServices 

class ViewController: UIViewController, SFSafariViewControllerDelegate 
{ 
    private var urlString:String = "https://example.com" 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func viewDidAppear(animated: Bool) 
    { 
     super.viewDidAppear(animated) 

     let svc = SFSafariViewController(URL: NSURL(string: self.urlString)!) 

     svc.delegate = self 

     self.presentViewController(svc, animated: true, completion: nil) 
    } 

    func safariViewControllerDidFinish(controller: SFSafariViewController) { 
     super.dismissViewControllerAnimated(true, completion: nil) 
    } 

    override func didReceiveMemoryWarning() 
    { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

----- Update # 1 -----

Dopo aver ripristinato le impostazioni di privacy e cercando di caricare immagini direttamente dalla fotocamera, non sono sempre " SafariViewService vorrebbe accedere alla telecamera, che ritengo possa essere il problema, perché dopo aver accettato, lo schermo è ancora nero, mi chiedo perché non stia dicendo che il mio nome app come "FooBar" vorrebbe l'accesso ... Forse questo il disallineamento è il motivo per cui lo schermo della fotocamera è nero. Non è sicuro come cambiarlo.

----- Aggiornamento # 2 -----

Questo sembra essere un problema di SFSafariViewController, come ho implementato WKWebView e la fotocamera funziona bene.

+0

Vuol pulsante immagine caricare appare all'interno del SFSafariViewController o come opzione nella barra degli strumenti in basso? Ho provato sopra il codice e non mostra alcun pulsante di caricamento dell'immagine. –

+0

Stai usando 2 viewControllers o solo uno per questo? Sono sicuro che tu ne sia a conoscenza ma: "A differenza di Safari, l'interfaccia utente di SFSafariViewController è personalizzata per la visualizzazione di una singola pagina, con un pulsante Fine che riporta gli utenti al punto in cui si trovavano nella tua app. Se la tua app visualizza contenuti web , ma non personalizza quel contenuto, considera la possibilità di sostituire i browser basati su WKWebView o UIWebView con SFSafariViewController. Potresti essere tu stesso l'utente/utente a una pagina che non esiste ancora. – lukaivicev

+0

@ManishVerma: Il pulsante NON è IOS nativo, piuttosto è un pulsante di caricamento file da una visualizzazione Web. –

risposta

3

Questo è apparentemente un bug noto con SFSafariViewController (Ho inviato un radar che è stato chiuso). Ho affrontato lo stesso problema che il nostro sito Web mobile non è stato in grado di ottenere nulla dal dispositivo, non dalla fotocamera per una foto scattata o immagini dal rullino fotografico. Questo persisteva in Safari e in SFSafariViewController, quindi abbiamo finito semplicemente ripetendo il processo di caricamento completo tramite VC nativo e Parse. Tuttavia, ho ricevuto alcuni suggerimenti dall'Assistenza tecnica prima di fare tutto questo e mi hanno detto di provare quanto segue:

  1. Verificare con un secondo dispositivo. A volte questo potrebbe essere un errore che si verifica solo su un dispositivo a causa di un errore nelle autorizzazioni. Il controllo con il secondo dispositivo dovrebbe escludere l'opzione che qualcosa è andato storto durante l'installazione
  2. Controllare le autorizzazioni dell'app in Impostazioni. Mi hanno detto che a volte veniva visualizzata la schermata vuota se l'utente rifiutava il permesso di usare la videocamera. Per verificare se questo è il caso, apri le impostazioni, scorri verso il basso e seleziona la tua app. qui dovresti vedere un interruttore ON/OFF, che dovrebbe entrambi indicare su on. Come si vede nello screenshot qui sotto. screenshot

Tuttavia, i miei due centesimi sarebbe:

  1. Considerare l'utilizzo di un UIWebView o WKWebview invece. Hai detto che il tuo sito è ottimizzato per i dispositivi mobili, quindi potresti semplicemente considerare di trascinare un UIWebview nello storyboard e impostarlo in modo che punti al tuo sito. Here è un buon tutorial su UIWebviews. L'altra alternativa più ovvia sarebbe usare WKWebview. Nel tuo aggiornamento, hai comunque già indicato che hai fatto questo, quindi non ti collegherò a nessun tutorial.

Altrimenti non c'è molto da fare al momento, oltre a presentare un altro radar ad Apple con il loro Bug Reporter. Infine, è possibile inviare un ticket per il supporto tecnico, tuttavia non ne sprecherei nessuno in quanto ne hai solo 2 per anno di iscrizione.

Speranza che aiuta, Julian

+0

Aiuta molto, apprezza la risposta. A questo punto vado da noi wkwebview per sfruttare il motore JavaScript migliorato. –

+0

Ok. Sì, WKWebview è anche molto più veloce di UIWebview. Sono contento di poterti aiutare! –

Problemi correlati