在设置页面上,我想包含三个链接
- 我的应用支持网站
- YouTube 应用教程
- 我的主站点(即:链接到“由 Dale Dietrich 创建”标签。)
我搜索了这个网站、网络和我的文档,但没有发现任何明显的东西。
注意:我不想在我的应用程序中打开网页。我只想将链接发送到 Safari,并且该链接在那里打开。我已经看到许多应用程序在他们的设置页面中做同样的事情,所以这一定是可能的。
在设置页面上,我想包含三个链接
我搜索了这个网站、网络和我的文档,但没有发现任何明显的东西。
注意:我不想在我的应用程序中打开网页。我只想将链接发送到 Safari,并且该链接在那里打开。我已经看到许多应用程序在他们的设置页面中做同样的事情,所以这一定是可能的。
这是我所做的:
我在头 .h 文件中创建了一个 IBAction,如下所示:
- (IBAction)openDaleDietrichDotCom:(id)sender;
我在“设置”页面上添加了一个 UIButton,其中包含我要链接到的文本。
我将按钮适当地连接到文件所有者中的 IBAction。
然后执行以下操作:
Objective-C
- (IBAction)openDaleDietrichDotCom:(id)sender {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.daledietrich.com"]];
}
迅速
(viewController中的IBAction,而不是头文件)
if let link = URL(string: "https://yoursite.com") {
UIApplication.shared.open(link)
}
请注意,我们不需要转义字符串和/或地址,例如:
let myNormalString = "https://example.com"; let myEscapedString = myNormalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!
事实上,逃逸可能会导致打开失败。
斯威夫特语法:
UIApplication.sharedApplication().openURL(NSURL(string:"http://www.reddit.com/")!)
适用于 iOS 9.3 及更早版本的新 Swift 语法
作为 Swift 的一些新版本(可能是 swift 2?), UIApplication.sharedApplication() 现在是 UIApplication.shared (我猜是更好地利用计算属性)。此外,URL 不再隐式转换为 NSURL,必须使用 as! 显式转换!
UIApplication.sharedApplication.openURL(NSURL(string:"http://www.reddit.com/") as! URL)
从 iOS 10.0 开始的新 Swift 语法
从 iOS 10.0 开始,openURL 方法已被弃用并替换为更通用的方法,该方法采用选项对象和异步完成处理程序
UIApplication.shared.open(NSURL(string:"http://www.reddit.com/")! as URL)
这里需要检查要打开的 url 是否能够被设备或模拟器打开。因为有时(模拟器中的大多数)我发现它会导致崩溃。
Objective-C
NSURL *url = [NSURL URLWithString:@"some url"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
斯威夫特 2.0
let url : NSURL = NSURL(string: "some url")!
if UIApplication.sharedApplication().canOpenURL(url) {
UIApplication.sharedApplication().openURL(url)
}
斯威夫特 4.2
guard let url = URL(string: "some url") else {
return
}
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
看一下-openURL:
UIApplication 上的方法。它应该允许您将 NSURL 实例传递给系统,这将确定在哪个应用程序中打开它并启动该应用程序。(请记住,您可能需要先检查一下-canOpenURL:
,以防系统上当前安装的应用程序无法处理该 URL - 尽管这对于普通http://
链接来说可能不是问题。)
而且,如果您不确定提供的 URLtext
是否有方案:
NSString* text = @"www.apple.com";
NSURL* url = [[NSURL alloc] initWithString:text];
if (url.scheme.length == 0)
{
text = [@"http://" stringByAppendingString:text];
url = [[NSURL alloc] initWithString:text];
}
[[UIApplication sharedApplication] openURL:url];
不推荐使用的 Objective-C 版本是:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://apple.com"] options:@{} completionHandler:nil];
斯威夫特 3.0
if let url = URL(string: "https://www.reddit.com") {
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:])
} else {
UIApplication.shared.openURL(url)
}
}
这也支持运行旧版本 iOS 的设备
带有完成按钮的Swift 3解决方案
不要忘记import SafariServices
if let url = URL(string: "http://www.yoururl.com/") {
let vc = SFSafariViewController(url: url, entersReaderIfAvailable: true)
present(vc, animated: true)
}
由于自 iOS 10.0 起已弃用此答案,因此更好的答案是:
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}else{
UIApplication.shared.openURL(url)
}
y en Objective-c
[[UIApplication sharedApplication] openURL:@"url string" options:@{} completionHandler:^(BOOL success) {
if (success) {
NSLog(@"Opened url");
}
}];
斯威夫特 5:
func open(scheme: String) {
if let url = URL(string: scheme) {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:],
completionHandler: {
(success) in
print("Open \(scheme): \(success)")
})
} else {
let success = UIApplication.shared.openURL(url)
print("Open \(scheme): \(success)")
}
}
}
用法:
open(scheme: "http://www.bing.com")
参考:
openURL( :)在 iOS 10.0 中已被弃用,您应该在 UIApplication 上使用以下实例方法:open( :options:completionHandler :)
使用 Swift 的示例这将在 Safari 中
打开“ https://apple.com ”。
if let url = URL(string: "https://apple.com") {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
https://developer.apple.com/reference/uikit/uiapplication/1648685-open
在 SWIFT 3.0 中
if let url = URL(string: "https://www.google.com") {
UIApplication.shared.open(url, options: [:])
}
尝试这个:
NSString *URL = @"xyz.com";
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:URL]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:URL]];
}
在 Swift 1.2 中,试试这个:
let pth = "http://www.google.com"
if let url = NSURL(string: pth){
UIApplication.sharedApplication().openURL(url)
斯威夫特 4 解决方案:
UIApplication.shared.open(NSURL(string:"http://yo.lo")! as URL, options: [String : Any](), completionHandler: nil)