Як запустити Safari з програми iPhone?


127

Це може бути досить очевидним питанням, але чи можна запустити браузер Safari з програми iPhone?

Відповіді:


200

має бути наступним:

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

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

Чи буде це рахуватися із використанням пам'яті вашого додатка? Також, чи є хороший спосіб повернутися до свого додатка (як, наприклад, функція входу в сайти соціальних мереж)?
бренда

1
@brendan моїй здогадці буде ні, тому що я припускаю, що "веб-перегляд" запускається в програмі safari, тому він підпадає під цей процес
surtyaar

12
дупе раніше 5/9/09 відповідь
Barett

2
@Barett: Не зовсім на насправді, тому що це 9/21/09 відповідь
Берги

4
IMO API-виклик досить схожий, що цю відповідь було б краще застосувати як редагування або коментар до попередньої відповіді.
Баретт

52

UIApplication має метод, який називається openURL:

приклад:

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

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

16

ви можете відкрити URL-адресу в сафарі за допомогою цього:

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

4

У 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
}

2

Можливо, хтось може скористатися версією Swift:

Швидко 2.2:

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

І 3.0:

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

2

У швидких 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)
}

Хоча цей фрагмент коду може вирішити питання, у тому числі пояснення допомагає покращити якість вашої відповіді. Пам'ятайте, що ви відповідаєте на запитання читачів у майбутньому, і ці люди можуть не знати причини вашої пропозиції щодо коду.
Стефан Крейн

1

У Swift 3.0 ви можете використовувати цей клас, щоб допомогти вам спілкуватися. Підтримка фреймворку застаріла або видалила попередні відповіді.

імпорт UIKit

клас InterAppCommunication {
    static func openURI (_ URI: String) {
        UIApplication.shared.open (URL (рядок: URI) !, параметри: [:], завершенняHandler: {(succ: Bool) у друку ("завершено! Успіх? \ (Succ)")})
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.