Как запустить Safari из приложения для iPhone?

127

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

keuminotti
источник

Ответы:

200

должно быть следующее:

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

if (![[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"%@%@",@"Failed to open url:",[url description]);
}
surtyaar
источник
Будет ли это учитываться при использовании памяти вашим приложением? Кроме того, есть ли хороший способ вернуться к вашему приложению (например, функция входа в систему в социальных сетях)?
brendan 09
1
@brendan, я предполагаю, что "веб-просмотр" запускается в приложении safari, поэтому он
подпадет
12
обман из более раннего ответа 09.05.09
Баретт
2
@Barett: Не совсем так, потому что это ответ от 21 сентября 2009 г.
Берги,
4
ИМО, вызов API достаточно похож, чтобы этот ответ лучше было применить как редактирование или комментарий к предыдущему ответу.
Barett
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 у нас есть один другой метод с обработчиком завершения :

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
}
DZoki019
источник
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

В Swift 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

class InterAppCommunication {
    static func openURI (_ URI: String) {
        UIApplication.shared.open (URL (строка: URI) !, параметры: [:], completedHandler: {(succ: Bool) in print ("Complete! Success? \ (Succ)")})
    }
}
сюсюкать-директор
источник