Как запустить сафари и открыть URL-адрес приложения iOS
На странице настроек, я хочу включить три ссылки на
- Мой сайт поддержки приложений
- Учебник YouTube для приложений
- Мой основной сайт (т.е. связанный с меткой "Создано Dale Dietrich".)
Я искал этот сайт, веб-сайт и мою документацию, и я ничего не нашел, что очевидно.
ПРИМЕЧАНИЕ.. Я не хочу открывать веб-страницы в своем приложении, просто хочу отправить ссылку на Safari, и эта ссылка будет открыта там. Я видел, как количество приложений делает то же самое на странице настроек, что и должно быть возможно.
Ответы
Ответ 1
Вот что я сделал:
-
Я создал IBAction в заголовочных файлах .h следующим образом:
- (IBAction)openDaleDietrichDotCom:(id)sender;
-
Я добавил UIButton на странице настроек, содержащей текст, на который я хочу сослаться.
-
Я подключил кнопку к IBAction в File Owner соответственно.
-
Затем выполните следующее:
Obj C
- (IBAction)openDaleDietrichDotCom:(id)sender {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.daledietrich.com"]];
}
стриж
(IBAction в viewController, а не в заголовочном файле)
if let link = URL(string: "https://yoursite.com") {
UIApplication.shared.open(link)
}
Ответ 2
Swift Синтаксис:
UIApplication.sharedApplication().openURL(NSURL(string:"http://www.reddit.com/")!)
Новый синтаксис Swift для iOS 9.3 и более ранних версий
Как и в случае с новой версией Swift (возможно, быстрой 2?), UIApplication.sharedApplication() теперь является UIApplication.shared(лучше использовать рассчитанные свойства, которые я предполагаю). Кроме того, URL-адрес уже неявно конвертируется в NSURL, должен быть явно преобразован с помощью:
UIApplication.sharedApplication.openURL(NSURL(string:"http://www.reddit.com/") as! URL)
Новый быстрый синтаксис с iOS 10.0
Метод openURL устарел и заменен более универсальным методом, который принимает объект options и асинхронный обработчик завершения с iOS 10.0
UIApplication.shared.open(NSURL(string:"http://www.reddit.com/")! as URL)
Ответ 3
Здесь требуется одна проверка, чтобы открываемый URL мог открываться устройством или симулятором или нет. Потому что иногда (большинство в симуляторе) я обнаружил, что это вызывает сбои.
Objective-C
NSURL *url = [NSURL URLWithString:@"some url"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
Swift 2.0
let url : NSURL = NSURL(string: "some url")!
if UIApplication.sharedApplication().canOpenURL(url) {
UIApplication.sharedApplication().openURL(url)
}
Swift 4.2
guard let url = URL(string: "some url") else {
return
}
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Ответ 4
Посмотрите на метод -openURL:
в UIApplication. Он должен позволить вам передать экземпляр NSURL в систему, который определит, какое приложение откроет его и запустит это приложение. (Имейте в виду, что вы, вероятно, захотите проверить -canOpenURL:
во-первых, на всякий случай, если URL-адрес не может быть обработан приложениями, установленными в системе, хотя это, вероятно, не проблема для простых ссылок http://
.)
Ответ 5
И если вы не уверены, имеет ли поставляемый URL text
схему:
NSString* text = @"www.apple.com";
NSURL* url = [[NSURL alloc] initWithString:text];
if (url.scheme.length == 0)
{
text = [@"http://" stringByAppendingString:text];
url = [[NSURL alloc] initWithString:text];
}
[[UIApplication sharedApplication] openURL:url];
Ответ 6
Не устаревшая версия Objective-C будет:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://apple.com"] options:@{} completionHandler:nil];
Ответ 7
Swift 3.0
if let url = URL(string: "https://www.reddit.com") {
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:])
} else {
UIApplication.shared.openURL(url)
}
}
Это поддерживает устройства, работающие с более ранними версиями iOS.
Ответ 8
Swift 3
Решение с помощью кнопки "Готово"
Не забывайте import SafariServices
if let url = URL(string: "http://www.yoururl.com/") {
let vc = SFSafariViewController(url: url, entersReaderIfAvailable: true)
present(vc, animated: true)
}
Ответ 9
Поскольку этот ответ устарел с iOS 10.0, лучшим ответом будет:
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}else{
UIApplication.shared.openURL(url)
}
y en Objective-c
[[UIApplication sharedApplication] openURL:@"url string" options:@{} completionHandler:^(BOOL success) {
if (success) {
NSLog(@"Opened url");
}
}];
Ответ 10
openURL (:) устарел в iOS 10.0, вместо этого вы должны использовать следующий метод экземпляра для UIApplication: open (: options: completeHandler:)
Пример использования Swift
Это откроет " https://apple.com" в Safari.
if let url = URL(string: "https://apple.com") {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
https://developer.apple.com/reference/uikit/uiapplication/1648685-open
Ответ 11
В SWIFT 3.0
if let url = URL(string: "https://www.google.com") {
UIApplication.shared.open(url, options: [:])
}
Ответ 12
Попробуйте следующее:
NSString *URL = @"xyz.com";
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:URL]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:URL]];
}
Ответ 13
В Swift 1.2 попробуйте следующее:
let pth = "http://www.google.com"
if let url = NSURL(string: pth){
UIApplication.sharedApplication().openURL(url)
Ответ 14
Решение Swift 4:
UIApplication.shared.open(NSURL(string:"http://yo.lo")! as URL, options: [String : Any](), completionHandler: nil)