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
diese Arbeit für mich aber wkwebview. https://github.com/liqichao/wkwebview-test
dieses Beispiel ist ein sfsafariview aber u müssen mit wkwebview https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch11p552webkit/ch24p825webview/WebViewController.swift
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.
Danke euch allen. Dieser gibt alle Details an. Für mich geht das. Vielen Dank. –
@ShalinaHu bitte akzeptieren Sie die Antwort, wenn es für Sie funktioniert. –