2012-10-13 5 views
0

여러 사용 사례가있는 앱을 만들고 있습니다. 그것은 주요 기능 (응용 프로그램 아이콘을 눌러 활성화), 그리고 사용자 정의 URL 스키마에 의해 활성화되는 주요 기능의 다른 하위 집합을 가지고 있습니다.맞춤 앱 동작이 포함 된 맞춤 URL 체계

내 문제를 설명하기 위해 현재 내 앱이 어떻게 다르게 동작하도록 지시해야하는지 설명해야합니다.

내가 사용하고 있습니다 : - (BOOL) 응용 프로그램 : 옵션에서 URL을 잡아

: didFinishLaunchingWithOptions [launchOptions가 objectForKey : [keyArray objectAtIndex : 0]

지금 나는 것으로 분석 URLString는 내 모든 launchType 매개 변수를 가져 와서 NSUserDefaults에 넣습니다. 그런 다음 내 스플래시 화면이 나타날 때까지 기다렸다가 내 앱에 동작 방법을 알려줍니다.

처음에는 괜찮 았지만 다음과 같이 깨달았습니다. 앱에 딥 링크하고 기능 B를 표시하면 다음에 앱이 포 그라운드로 돌아갈 때 앱이 백그라운드로 들어갑니다 (아니요. 어떤 방식 으로든), 그것은 기능성 B를 표시 할 것입니다.

표준 실행에 대한 아이디어가 있다면 누구나 보통 사람들이 사용하는 방법이 궁금합니다.

참고로, 내가 popToRootViewController, 내있는 navigationController을 말함으로써이 문제를 해결하기 위해 노력 할 것입니다 - (BOOL) 응용 프로그램 : 응용 프로그램이 handleOpenURL :이 경우, didFinishLaunchingWithOptions 않는 한 전에 호출되어, 가 호출되고, 그냥 이전에 구현 한 것을 해보십시오.

답변

2

이 접근 방법에 대해 고려해야 할 몇 가지가있는 것처럼 들리 네요.

우선 UIApplicationDelegate 설명서를 살펴보십시오. -application:willFinishLaunchingWithOptions:은 경고 : 앱이 URL을 열 출시 된 경우

, 당신은 UIApplicationLaunchOptionsURLKey 키 값 을 검토하고 앱이 실제로 URL을 열 수 있는지 여부를 나타내는 부울 값 을 반환해야합니다. 이 방법으로 URL을 열려고하면 안됩니다. 대신, 응용 프로그램을 openURL : sourceApplication : annotation : 메소드를 구현하여 위임자로 만들고 해당 메소드를 사용하여 URL을 엽니 다.

-application:openURL:sourceApplication:annotation:를 살펴보면 우리는 참조 : 다음, 첫번째 방법 : willFinishLaunchingWithOptions : 및 응용 프로그램 : didFinishLaunchingWithOptions 앱이 URL을 열려면 시작해야했습니다 경우

, 앱이 응용 프로그램을 호출 이 방법은 입니다. 이러한 메서드의 반환 값을 사용하면 메서드가 호출되는 것을 방지 할 수 있습니다. (응용 프로그램이 이미 실행중인 경우, 에만이 방법은.라고합니다) 앱이 URL을 통해 출시 된 경우 지속적으로 NSUserDefaults가 (임시 상태이어야한다 무엇을 저장할 사용하는 것처럼

둘째는 소리 또는 아닙니다).한번 설정 한 값을 재설정하거나 URL을 통해 앱을 시작하면 해당 경로를 항상 따라 잡습니다.

마지막으로 사용자는 앱을 중단 한 위치에서 다시 시작할 것이라고 예상합니다. 사용자는 전화 통화, 문자 메시지, 알림, 외부 산만 함, 다른 앱 요구 및 기타 여러 가지 이유로 응답하도록 앱을 떠납니다. 앱을 재개/재발행 할 때 (URL이 아닌) 중단 한 위치로 돌아갈 수 있도록 허용하지 않으면 사용자 환경이 좋지 않을 수 있습니다.