2016-06-23 10 views
2

Ich bin neu in iOS App-Entwicklung. Derzeit arbeite ich an einem Projekt, das die Interaktion zwischen App und Webseite erfordert. Ich weiß, dass ich Safari View Controller verwenden kann, um eine Webseite innerhalb der App zu laden, und benutze die Schaltfläche "Fertig" in der rechten oberen Ecke der Webseite, um zur App zurückzukehren. Aber ich möchte in die App zurückkehren, indem ich auf einen Link in der Webseite anstelle des Buttons done klicke. Ich konnte dafür keine Lösung finden. Kann jemand helfen? Vielen Dank im Voraus.Safari View Controller

Antwort

3

Sie innere benutzen Sie diese leicht genug, um mit einem benutzerdefinierten URL-Schema zu tun. Fügen Sie zunächst ein Schema zu Ihrem Info.plist:

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLName</key> 
     <string>com.mydomain.MyCallback</string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>mydomainwebcallback</string> 
     </array> 
    </dict> 
</array> 

Nun haben Sie einen Mechanismus, der die App von jeder URL öffnet, die angeklickt wird. In diesem Fall würde die URL mydomainwebcallback://whatever

Jetzt in Ihrem Web-Seite in Ihrem View-Controller geladen werden, fügen Sie eine URL wie folgt aus:

<a href="mydomainwebcallback://whateverinfo">Return to app</a> 

ich hier zur Vereinfachung werde, aber Sie müssen einen Verweis auf Ihre SFSafariViewController von Ihrer AppDelegate. Zuerst in der AppDelegate:

import UIKit 
import SafariServices 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 
    var safariVC: SFSafariViewController? 

    func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool { 

     // Here we dismiss the SFSafariViewController 
     if let sf = safariVC 
     { 
      sf.dismissViewControllerAnimated(true, completion: nil) 
     } 

     return true 
    } 

Wie man sehen kann ich die SFSafariViewController in den Delegierten bin zu halten. Jetzt in meiner Ansicht-Controller, wo ich zeigen die VC:

import UIKit 
import SafariServices 

class ViewController: UIViewController { 

    @IBAction func showSafariVC(sender: UIButton) { 

     if let url = NSURL(string: "https://mywebserver/callback.html") 
     { 
      let delegate = UIApplication.sharedApplication().delegate as! AppDelegate 
      delegate.safariVC = SFSafariViewController(URL: url) 
      presentViewController(delegate.safariVC!, animated: true, completion: nil) 
     } 
    } 
} 

Nun, wenn Sie auf den Link getroffen wird es die SFSafariViewController entlassen.

+0

Danke euch allen. Dieser gibt alle Details an. Für mich geht das. Vielen Dank. –

+0

@ShalinaHu bitte akzeptieren Sie die Antwort, wenn es für Sie funktioniert. –