ChatGPT解决这个技术问题 Extra ChatGPT

如何从 iPhone 应用程序启动 Safari?

这可能是一个相当明显的问题,但是您可以从 iPhone 应用程序启动 Safari 浏览器吗?


I
Intrications

应该如下:

NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];

if (![[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"%@%@",@"Failed to open url:",[url description]);
}

这会计入您的应用程序的内存使用量吗?另外,有没有一种很好的方法可以返回您的应用程序(例如社交网站中的登录功能)?
@brendan 我的猜测是否定的,因为我假设“webview”是在 safari 应用程序中启动的,所以它属于该过程
2009 年 5 月 9 日之前的回答被骗了
@Barett:实际上并非如此,因为 that's a 9/21/09 answer
IMO API 调用非常相似,因此这个答案本来可以更好地用作对先前答案的编辑或评论。
I
Intrications

UIApplication 有一个名为 openURL 的方法:

例子:

NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];

if (![[UIApplication sharedApplication] openURL:url]) {
  NSLog(@"%@%@",@"Failed to open url:",[url description]);
}

R
Rahul Patel

您可以使用以下方法在 safari 中打开网址:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.google.com"]];

J
Jens Peter

也许有人可以使用 Swift 版本:

在 Swift 2.2 中:

UIApplication.sharedApplication().openURL(NSURL(string: "https://www.google.com")!)

和 3.0:

UIApplication.shared().openURL(URL(string: "https://www.google.com")!)

D
DZoki019

在 iOS 10 中,我们有一种不同的完成处理程序方法:

目标C:

NSDictionary *options = [NSDictionary new];
//options can be empty
NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];
[[UIApplication sharedApplication] openURL:url options:options completionHandler:^(BOOL success){
}];

迅速:

let url = URL(string: "http://www.stackoverflow.com")
UIApplication.shared.open(url, options: [:]) { (success) in
}

J
Jia Chen

在 swift 4 和 5 中,随着 OpenURL 的贬值,一个简单的方法就是

if let url = URL(string: "https://stackoverflow.com") {
    UIApplication.shared.open(url, options: [:]) 
}

您也可以使用 SafariServices。类似于应用程序中的 Safari 窗口。

import SafariServices

...

if let url = URL(string: "https://stackoverflow.com") {
    let safariViewController = SFSafariViewController(url: url)        
    self.present(safariViewController, animated: true)
}


虽然此代码段可能会解决问题,但 including an explanation 有助于提高您的回复质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。
l
lisp-ceo

在 Swift 3.0 中,你可以使用这个类来帮助你进行交流。框架维护者已弃用或删除了以前的答案。

import UIKit

class InterAppCommunication {
    static func openURI(_ URI: String) {
        UIApplication.shared.open(URL(string: URI)!, options: [:], completionHandler: { (succ: Bool) in print("Complete! Success? \(succ)") })
    }
}