設定ページでは、3つのリンクを
私はこのサイトとウェブと私の文書を検索しましたが、明白なことは何も見つかりませんでした。
注:自分のアプリ内でWebページを開きたくない場合は、Safariにリンクを送信し、そこから開いてください。それが可能でなければならないので、私は彼らの設定ページで同じことをしているアプリの数を見ました。
私がしたことをヘレス:
次のように、ヘッダーの.hファイルにIBActionを作成しました。
- (IBAction)openDaleDietrichDotCom:(id)sender;
リンクしたいテキストを含むUIButtonをSettingsページに追加しました。
ボタンをFile OwnerのIBActionに適切に接続しました。
その後、以下を実装します。
Obj 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)
}
スウィフト構文:
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構文
OpenURLメソッドは非推奨となり、iOS 10.0以降ではoptionsオブジェクトと非同期完了ハンドラを使用する、より用途の広いメソッドに置き換えられました。
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];
}
Swift 2.0
let url : NSURL = NSURL(string: "some url")!
if UIApplication.sharedApplication().canOpenURL(url) {
UIApplication.sharedApplication().openURL(url)
}
Swift 4.2
guard let url = URL(string: "some url") else {
return
}
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
UIApplicationの -openURL:
メソッドを見てください。 NSURLインスタンスをシステムに渡して、どのアプリケーションでそれを開いてそのアプリケーションを起動するかを決定します。 (システムに現在インストールされているアプリケーションでURLを処理できない場合に備えて、おそらく最初に-canOpenURL:
をチェックすることをお勧めします - これは普通のhttp://
リンクではおそらく問題にならないでしょう。)
また、提供されたURL text
がスキームを持っているかどうかわからない場合は、
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];
Swift 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)
}
objective-c
[[UIApplication sharedApplication] openURL:@"url string" options:@{} completionHandler:^(BOOL success) {
if (success) {
NSLog(@"Opened url");
}
}];
openURL(:)はiOS 10.0では推奨されていませんでしたが、代わりに次のインスタンスメソッドをUIApplicationで使用してください。open(:オプション: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)