2015-12-11 4 views
5

Apple hat meine App heute abgelehnt und unter anderem vorgeschlagen, dass ich meine Benutzer nicht zu Safari zwingen sollte, um meine Webseite zu besuchen. Sie schlugen vor, SafariWebController zu verwenden, der in iOS9 neu ist. Ich suchte nach Anleitung und fand nur Swift Tutorials.Wie verwende ich den SafariViewController in Objective-c?

Ich hatte mit dem folgenden Safari zu starten, mit einem Knopf verbunden: versuchen, Schritt zu halten, die noch nicht auf Swift

NSURL *url = [NSURL URLWithString:WEBSITE_REGISTRATION_URL]; 
[[UIApplication sharedApplication] openURL:url]; 

Also, ich werde meine einfache Konfiguration für die von uns teilen.

Antwort

21

Es gibt 5 Stufen:

  1. Klicken Sie auf Ihr Projektziel und wählen Sie dann "Phasen Build". Klicken Sie unter "Build Phases" auf den Pfeil bei "Link Binary with Libraries" und klicken Sie auf das Pluszeichen. Suchen Sie im folgenden Fenster nach SafariServices. Markieren Sie es in der Liste und klicken Sie auf "Hinzufügen". enter image description here

  2. Importieren Sie die Bibliothek in .m Datei, in der Sie Ihre Schaltfläche befindet:

    #import <SafariServices/SafariServices.h> 
    
  3. eine Klassenerweiterung in .m-Datei auf Safari VC-Protokoll entsprechen definieren:

    @interface SKWelcomeViewController() <SFSafariViewControllerDelegate> 
    
  4. Implementieren Sie die folgende Delegate-Methode, die aufgerufen wird, wenn der Safari View Controller abgewiesen werden muss:

    - (void)safariViewControllerDidFinish:(SFSafariViewController *)controller { 
        [self dismissViewControllerAnimated:true completion:nil]; 
    } 
    
  5. Und schließlich der Code innerhalb der IBAction:

    SFSafariViewController *svc = [[SFSafariViewController alloc] initWithURL:url]; 
    svc.delegate = self; 
    [self presentViewController:svc animated:YES completion:nil]; 
    

Viel Spaß!

+0

@Julian, ich folge dir nicht. Worauf beziehen Sie sich? – SteveSTL

+1

Warum fügen Sie in Schritt 3 'SFSafariViewControllerDelegate' in der .h-Datei hinzu? Müssen die Clients Ihrer 'SKWelcomeViewController' Klasse wissen, dass die' SKWelcomeViewController' Klasse mit 'SFSafariViewController' arbeitet? – rmaddy

+1

In Schritt 4, warum fügen Sie diese 'delegate' Eigenschaft hinzu? Werden sich Clients Ihres 'SKWelcomeViewControllers' zum' Delegierten' machen? – rmaddy

Verwandte Themen