Как запустить 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]);
}

Будет ли это учитываться при использовании памяти вашим приложением? Кроме того, есть ли хороший способ вернуться к вашему приложению (например, функция входа в систему в социальных сетях)?
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
}

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)")})
    }
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.