Safari'yi bir iPhone uygulamasından nasıl başlatabilirim?


127

Bu oldukça açık bir soru olabilir, ancak Safari tarayıcısını bir iPhone uygulamasından başlatabilir misiniz?

Yanıtlar:


200

aşağıdaki gibi olmalıdır:

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

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

Bu, uygulamanızın bellek kullanımına dahil edilecek mi? Ayrıca, uygulamanıza geri dönmenin iyi bir yolu var mı (sosyal ağ sitelerinde oturum açma özelliği gibi)?
— brendan

1
@brendan, safari uygulamasında 'webview'in başlatıldığını varsaydığım için tahminim hayır olurdu, bu yüzden bu sürecin altına düşecektir
— surtyaar

12
önceki 5/9/09 cevabının dupe'si
— Barett

2
@Barett: Aslında tam olarak değil, çünkü bu 9/21/09 cevabı
— Bergi

4
IMO API çağrısı, bu yanıtın önceki yanıt üzerinde bir düzenleme veya yorum olarak daha iyi uygulanabileceği kadar benzerdir.
— Barett

52

UIApplication, openURL adlı bir yönteme sahiptir:

misal:

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

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

16

url'yi safaride bununla açabilirsiniz:

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

4

İOS 10 ile tamamlama işleyicili farklı bir yöntemimiz var :

ObjectiveC:

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){
}];

Swift:

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

2

Belki birisi Swift sürümünü kullanabilir:

Swift 2.2'de:

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

Ve 3.0:

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

2

Hızlı 4 ve 5'te, OpenURL değer kaybettiği için, bunu yapmanın kolay bir yolu

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

Ayrıca kullanabilirsiniz SafariServices. Uygulamanızdaki Safari penceresi gibi bir şey.

import SafariServices

...

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

Bu kod parçacığı soruyu çözebilir ancak bir açıklama da dahil olmak üzere yanıtınızın kalitesini artırmaya yardımcı olur. Gelecekte okuyucular için soruyu yanıtladığınızı ve bu kişilerin kod önerinizin nedenlerini bilmeyebileceklerini unutmayın.
— Stefan Crain

1

Swift 3.0'da, iletişim kurmanıza yardımcı olması için bu sınıfı kullanabilirsiniz. Çerçeve geliştiricileri, önceki yanıtları kullanımdan kaldırdı veya kaldırdı.

UIKit'i içe aktar

class InterAppCommunication {
    statik func openURI (_ URI: Dize) {
        UIApplication.shared.open (URL (dize: URI) !, seçenekler: [:], completeHandler: {(succ: Bool) baskıda ("Tamamlandı! Başarı? \ (Succ)")})
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.