iOS 앱에서 Safari를 시작하고 URL을 여는 방법
설정 페이지에 다음에 대한 세 개의 링크를 포함합니다.
- 내 앱 지원 사이트
- 유튜브 앱 튜토리얼
- 내 기본 사이트(즉, 'Dale Dietrich가 만든' 레이블에 링크됨)
저는 이 사이트와 웹 그리고 제 문서를 검색했지만 명백한 것은 아무것도 발견하지 못했습니다.
참고: 앱 내에서 웹 페이지를 열지 않습니다.나는 단지 사파리 링크를 보내고 싶고 그 링크는 그곳에서 열려 있습니다.여러 앱이 설정 페이지에서 동일한 작업을 수행하는 것을 보았으므로 가능할 것입니다.
제가 한 일은 다음과 같습니다.
헤더 .h 파일에 다음과 같이 IBAction을 생성했습니다.
- (IBAction)openDaleDietrichDotCom:(id)sender;
링크할 텍스트가 포함된 설정 페이지의 UI 버튼을 추가했습니다.
나는 파일 소유자의 IBAction에 버튼을 적절히 연결했습니다.
그런 다음 다음을 구현합니다.
목표-C
- (IBAction)openDaleDietrichDotCom:(id)sender {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.daledietrich.com"]];
}
스위프트
(헤더 파일이 아닌 viewController의 IBAaction)
if let link = URL(string: "https://yoursite.com") {
UIApplication.shared.open(link)
}
다음과 같은 문자열 및/또는 주소를 이스케이프할 필요가 없습니다.
let myNormalString = "https://example.com"; let myEscapedString = myNormalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!
사실, 탈출은 열림을 실패하게 할 수 있습니다.
빠른 구문:
UIApplication.sharedApplication().openURL(NSURL(string:"http://www.reddit.com/")!)
iOS 9.3 및 이전 버전을 위한 새로운 Swift 구문
Swift의 일부 새로운 버전(아마도 swift 2?)부터 UIA 응용 프로그램입니다.공유 응용 프로그램()이 이제 UIA 응용 프로그램입니다.공유(계산된 속성을 더 잘 활용하는 것으로 추측됩니다.또한 URL은 더 이상 암묵적으로 NSURL로 변환할 수 없으므로 as!로 명시적으로 변환해야 합니다.
UIApplication.sharedApplication.openURL(NSURL(string:"http://www.reddit.com/") as! URL)
iOS 10.0의 새로운 Swift 구문
오픈iOS 10.0부터는 URL 메서드가 더 이상 사용되지 않으며 옵션 개체와 비동기 완료 핸들러를 사용하는 보다 다용도의 메서드로 대체되었습니다.
UIApplication.shared.open(NSURL(string:"http://www.reddit.com/")! as URL)
여기서 열려는 URL이 장치 또는 시뮬레이터로 열릴 수 있는지 여부를 한 번 확인해야 합니다.왜냐하면 때때로 (시뮬레이터에서 주로) 충돌을 일으키는 것을 발견했기 때문입니다.
목표-C
NSURL *url = [NSURL URLWithString:@"some url"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
스위프트 2.0
let url : NSURL = NSURL(string: "some url")!
if UIApplication.sharedApplication().canOpenURL(url) {
UIApplication.sharedApplication().openURL(url)
}
스위프트 4.2
guard let url = URL(string: "some url") else {
return
}
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
UIA 응용 프로그램의 방법을 살펴봅니다.NSURL 인스턴스를 시스템에 전달할 수 있어야 합니다. 시스템은 NSURL 인스턴스를 열고 해당 애플리케이션을 시작할 앱을 결정합니다.(아마도 확인하고 싶을 것입니다.-canOpenURL:
첫 번째, 현재 시스템에 설치된 앱에서 URL을 처리할 수 없는 경우 - 일반적으로 문제가 되지 않을 가능성이 높습니다.http://
링크).
에는 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];
사용되지 않는 Objective-C 버전은 다음과 같습니다.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://apple.com"] options:@{} completionHandler:nil];
완료 버튼이 있는 Swift 3 솔루션
잊지 마세요import SafariServices
if let url = URL(string: "http://www.yoururl.com/") {
let vc = SFSafariViewController(url: url, entersReaderIfAvailable: true)
present(vc, animated: true)
}
스위프트 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를 실행하는 장치도 지원합니다.
이 답변은 iOS 10.0부터 사용되지 않으므로 더 나은 답변은 다음과 같습니다.
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}else{
UIApplication.shared.openURL(url)
}
yen 목표-c
[[UIApplication sharedApplication] openURL:@"url string" options:@{} completionHandler:^(BOOL success) {
if (success) {
NSLog(@"Opened url");
}
}];
스위프트 5:
func open(scheme: String) {
if let url = URL(string: scheme) {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:],
completionHandler: {
(success) in
print("Open \(scheme): \(success)")
})
} else {
let success = UIApplication.shared.openURL(url)
print("Open \(scheme): \(success)")
}
}
}
용도:
open(scheme: "http://www.bing.com")
참조:
openURL(:)iOS 10.0에서는 더 이상 사용되지 않습니다. 대신 UIA 응용 프로그램에서 다음 인스턴스 방법을 사용해야 합니다. open(:옵션:completionHandler:)
사용 예: Swift 사
그러면 Safari에서 "https://apple.com "이 열립니다.
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
SWIFT 3.0에서
if let url = URL(string: "https://www.google.com") {
UIApplication.shared.open(url, options: [:])
}
사용해 보십시오.
NSString *URL = @"xyz.com";
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:URL]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:URL]];
}
Swift 1.2에서 다음을 시도합니다.
let pth = "http://www.google.com"
if let url = NSURL(string: pth){
UIApplication.sharedApplication().openURL(url)
Swift 4 솔루션:
UIApplication.shared.open(NSURL(string:"http://yo.lo")! as URL, options: [String : Any](), completionHandler: nil)
언급URL : https://stackoverflow.com/questions/12416469/how-to-launch-safari-and-open-url-from-ios-app
'programing' 카테고리의 다른 글
Angular2 - 라디오 버튼 바인딩 (0) | 2023.04.26 |
---|---|
디렉토리의 모든 SQL 파일 실행 (0) | 2023.04.26 |
ARC를 사용하도록 프로젝트를 변환할 때 "스위치 케이스가 보호 범위 내에 있다"는 것은 무엇을 의미합니까? (0) | 2023.04.26 |
std:: 문자열을 const char* 또는 char*로 변환하는 방법 (0) | 2023.04.21 |
SQL Server 2008 빈 문자열과공간 (0) | 2023.04.21 |