1

내 응용 프로그램은 다른 화면에서 사용 URL을 열기 위해내 응용 프로그램 내에서 openURL을 호출 할 때 범용 링크를 사용하려면 어떻게해야합니까?

[[UIApplication sharedApplication] openURL:url]; 

내 웹 서비스에서 받았다. 때때로 이러한 URL은 내 프로젝트와 관련이 없으므로 Safari로 열면 OK입니다. 기타, 제품 URL과 같은 URL은 내 제품에 속합니다. 그 것들은 보편적 인 링크를 사용하고 적절한 화면으로가는 내 애플 리케이션에 의해 열 수 있지만, 그건 일어나지 않습니다. 이 "이 앱의 OpenURL을 사용하는 경우 이해하는 것이 중요합니다 :. 당신의 웹 사이트에 보편적 링크를 열려면 앱에서 열리지 않습니다이 시나리오에서는 링크, 아이폰 OS는 것을 인식

읽기 사과 문서 나는 이것을보고 전화는 앱에서 비롯된 것이므로 앱에서 범용 링크로 처리해서는 안됩니다. " https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html

그 동작은 나를 혼란스럽게합니다. openURL을 사용하여 Safari로 직접 이동하는 대신 내 URL을 처리하는 방법은 무엇입니까?

빠르고/더러운 해결 방법을 발견했습니다. openURL을 제거하고 내 응용 프로그램에서 openURL을 사용할 때마다 사용하십시오.

NSUserActivity * userActivity = [[NSUserActivity alloc] initWithActivityType : NSUserActivityTypeBrowsingWeb]; userActivity.webpageURL = url; [[UIApplication sharedApplication] .delegate 응용 프로그램 : [UIApplication sharedApplication] continueUserActivity : userActivity restorationHandler : nil];

내 appdelegate 응용 프로그램 : continueUserActivity : restorationHandler : 내 응용 프로그램에서 특정 화면이없는 URL을 openURL로 전달하므로 완벽하게 정상적으로 작동하지만이 방법은 끔찍한 해결책이라고 생각합니다. 아이디어 나 제안 사항이 있습니까?

+0

더 자세히 설명 할 수 있습니까? 일부 URL을 처리하고 앱에서 열어야하며 일부 링크를 건너 뛰고 사파리에서 열어야합니까? –

답변

2

귀하의 솔루션이 합리적인 것으로 보입니다. 왜 그렇게 끔찍한가요?

아마도 여러분은 독립형 클래스 LinkHandler처럼 더 멋지게 보이는 솔루션을 구현할 수 있습니다. 클래스는 앱이 링크를 처리 할 수 ​​있는지 여부를 식별 할 수 있습니다 (App의 처리를 사용하는 것보다). 그렇지 않으면 클래스가 [UIApplication openURL:]으로 iOS 처리에이 링크를 전달합니다.

이렇게 많은 앱이 Google+ 또는 Facebook iOS 앱이 이러한 소셜 네트워크에 게시 된 링크를 처리하는 방법을 상상해보십시오.

+0

답장을 보내 주셔서 감사합니다. 이 같은 것을 사용하는 구체적인 예를 알고 계십니까? 감사. – Ricardo

+1

중요한주의 사항 : NSUserActivity/NSUserActivityTypeBrowsingWeb은 http 및 https URL 만 처리합니다. mailto : ...와 같은 링크를 클릭하면 응용 프로그램이 충돌하므로 openURL로 리디렉션되고 문제가 해결됩니다. – Ricardo