2015-11-26 24 views
11

Pracuję z SFSafariViewController i wystąpił następujący problem: Użytkownik otrzymuje przycisk przesyłania obrazu, po kliknięciu urządzenie wyświetla poprawnie wiele opcji, jednym z nich jest kamera. Gdy użytkownik wybierze kamerę, ładuje kamerę, ale ekran jest czarny, a przycisk czynności jest wyszarzony. Jednak jeśli użytkownik wybierze bibliotekę, wybrany obraz zostanie poprawnie przesłany.ios 9 - xcode 7 - SFSafariViewController - Przesyłanie obrazu - czarny ekran aparatu

Sprawdziłem, czy aplikacja ma włączone uprawnienia aparatu.

Próbowałem wdrażanie poprawek znalezionych here i here, ale na próżno.

Ktoś jeszcze napotkał ten problem?

Kod:

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. 
    } 
} 

----- Aktualizacja # 1 -----

Po zresetowaniu ustawień prywatności i próbuje przesłać obraz bezpośrednio z kamery, nie otrzymuję " SafariViewService chciałby uzyskać dostęp do kamery, co moim zdaniem może stanowić problem, ponieważ po zaakceptowaniu ekran wciąż jest czarny, zastanawiam się, dlaczego nie oznacza to, że moja nazwa aplikacji brzmi "FooBar". Niewłaściwe ustawienie powoduje, że ekran aparatu jest czarny, ale nie wiesz, jak go zmienić.

----- Aktualizacja # 2 -----

To wydaje się być SFSafariViewController problem, jak realizowane WKWebView a aparat działa prawidłowo.

+0

Czy przycisk przesyłania obrazu pojawia się w SFSafariViewController lub jako opcja na pasku narzędzi u dołu? Wypróbowałem powyższy kod i nie widać żadnego przycisku do przesyłania zdjęć. –

+0

Czy używasz 2 viewControllers lub tylko jeden do tego? Jestem pewien, że zdajesz sobie z tego sprawę, ale: "W przeciwieństwie do samego Safari, interfejs użytkownika SFSafariViewController jest dostosowany do wyświetlania pojedynczej strony z przyciskiem Gotowe, który przenosi użytkowników do miejsca, w którym znajdowali się w Twojej aplikacji. Jeśli Twoja aplikacja wyświetla treść internetową , ale nie dostosowuje tej zawartości, zastanów się nad zastąpieniem przeglądarek WKWebView lub UIWebView za pomocą SFSafariViewController. "Możesz prowadzić użytkownika/użytkownika do strony, która jeszcze nie istnieje. – lukaivicev

+0

@ManishVerma: Przycisk NIE jest natywnym systemem IOS, a raczej przyciskiem przesyłania plików z przeglądarki internetowej. –

Odpowiedz

3

To najwyraźniej znany błąd z SFSafariViewController (przesłałem radar, który został zamknięty). Stawiłem czoła temu samemu problemowi, że nasza mobilna strona internetowa nie może uzyskać niczego z urządzenia, a nie aparat dla zrobionego zdjęcia ani zdjęć z rolki aparatu. Ta sytuacja utrzymywała się w Safari iw SFSafariViewController, więc zakończyliśmy proces ponawiania całego procesu przesyłania za pomocą natywnego VC i Parse. Zanim jednak to zrobiłem, otrzymałem kilka sugestii od pomocy technicznej i polecono mi wykonanie następujących czynności:

  1. Sprawdź za pomocą drugiego urządzenia. Czasami może to być błąd występujący tylko na jednym urządzeniu z powodu błędu w uprawnieniach. Sprawdzanie za pomocą drugiego urządzenia powinno wykluczyć opcję, że coś poszło nie tak podczas instalacji. Sprawdź uprawnienia aplikacji w Ustawieniach. Powiedzieli mi, że czasami pojawiał się pusty ekran, jeśli użytkownik odmówił zgody na korzystanie z aparatu. Aby to sprawdzić, otwórz ustawienia, przewiń w dół i wybierz swoją aplikację. tutaj powinieneś zobaczyć przełącznik ON/OFF, który powinien wskazywać zarówno na. Jak widać na zrzucie ekranu poniżej. screenshot

Jednak moje dwa centy byłoby:

  1. Rozważ użycie UIWebView lub WKWebview zamiast. Powiedziałeś, że Twoja witryna jest przyjazna dla urządzeń mobilnych, więc możesz po prostu przeciągnąć UIWebview do swojego storyboardu i ustawić tak, aby wskazywała na twoją stronę. Here to dobry samouczek dotyczący UIWebviews. Inną, bardziej oczywistą alternatywą byłoby użycie WKWebview. W swojej aktualizacji już zaznaczyłeś, że to zrobiłeś, więc nie będę Cię łączyć z samouczkami.

W przeciwnym razie nie można wiele zrobić, jak teraz, poza zgłoszeniem kolejnego radaru do Apple z ich numerem Bug Reporter. Na koniec możesz wysłać zgłoszenie do działu pomocy technicznej, jednak nie zmarnowałbym żadnego z nich, ponieważ masz tylko 2 na rok członkostwa.

Nadzieja, która pomaga, Julian

+0

Bardzo pomaga, doceń odpowiedź. W tym momencie idę do nas na twwebview, aby skorzystać z ulepszonego silnika JavaScript. –

+0

OK. Tak, WKWebview jest również znacznie szybszy niż UIWebview. Cieszę się, że mogłem pomóc! –