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.