gpt4 book ai didi

ios - Safari View Controller

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:56:39 25 4
gpt4 key购买 nike

我是 iOS 应用开发的新手。目前,我正在做一个需要在应用程序和网页之间进行交互的项目。我知道我可以使用 safari View Controller 在应用程序中加载网页,然后使用网页右上角的完成按钮返回应用程序。但是我想通过单击网页中的链接而不是完成按钮来返回应用程序。我找不到任何解决方案。谁能帮忙?非常感谢。

最佳答案

您可以使用自定义 URL 方案轻松完成此操作。首先向您的 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>

现在,您有了一种机制,可以从单击的任何 URL 打开您的应用程序。在这种情况下,url 将是 mydomainwebcallback://whatever

现在在您的 View Controller 中加载的网页中,添加如下 URL:

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

我将在这里进行简化,但您需要从 AppDelegate 中引用您的 SFSafariViewController。首先在 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
}

如您所见,我将 SFSafariViewController 保留在 Delegate 中。现在在我显示 VC 的 View Controller 中:

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

现在,当您点击链接时,它会关闭 SFSafariViewController

关于ios - Safari View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37981306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com