2011-09-13 1 views
8

내가 처리 할 수있는 응용 프로그램을 등록하고는 URL을 통해 열리고에 따르면응용 프로그램 :의 OpenURL은 : sourceApplication : 주석 반환 NO 대 YES

application:openURL:sourceApplication:annotation

와 혼란 스러워요되는 지원할 수있는 경우 documentation YES를 반환해야 URL과 그렇지 않은 경우 NO. 이것이 무슨 소용입니까? URL이 잘못되었거나 지원되지 않지만 아무 것도 잘못되지 않은 것처럼 응용 프로그램이 열리는 경우 NO를 반환합니다. 누가 그걸 듣고 그 BOOL 반환하고 그들과 함께 무엇을합니까? URL의 형식이 잘못되었거나 지원되지 않는 경우 앱을 열지 못하게 할 수 있습니까?

답변

4

URI를 성공적으로 열면 YES을, 그렇지 않은 경우 NO을 반환한다고 나와 있습니다. "이 성공했거나을 열지 못했습니다."는 의미 상으로 "수 또는 열 수 없음"은입니다. 안타깝게도 앱을 시작하지 못하도록 방지 할 수있는 방법이 없습니다. 스키마를 등록하면 나머지 URI의 형식이 올바른지 여부에 관계없이 앱이 시작됩니다.

UIApplication에는 canOpenURL:openURL:의 두 가지 방법이 있습니다. 첫 번째 은 스키마가 지원되는지 (전체 URL이 아닌지) 확인합니다. 후자는 앱을 시작하고 애플리케이션 위임의 결과를 반환합니다.

그래서 귀하의 질문에 대답하기 : [[UIApplication sharedApplication] openURL:url]를 호출하는 다른 프로그램이

+0

가 재미있는, 그래서/어떻게 다른 앱이 응답에 응답해야 대리인의 결과를 수신하는 하나? 이 시점에서 사용자는 전달 된 URL을 처리하는 방법을 모르는 앱에 있습니다. –

+0

맞습니다. 이 시점에서 사용자는 다른 앱에 있으며 다른 앱이 귀하의 앱을 특별히 실행하거나 사용자가 수동으로 다시 전환하지 않는 한 귀하의 앱으로 돌아 가지 않습니다. 나는 그들의 의도가이 API를 어떻게 만들지는 모르겠지만, 나는 그것이 서로 잘 놀고있는 동일한 개발자의 앱 사이의 통신을 위해 주로 생성되었다고 가정합니다. 이것은 추측입니다. Apple이 왜이 접근법을 사용하는지에 대한 문서를 찾을 수있을 것 같지 않습니다. 레거시 버전의 iOS를 기반으로 "할 수있는 최선"이었던 구형 API 일 수도 있습니다. – Nick

+1

그건 당연한 가정입니다. 입력 주셔서 감사합니다, 나는 이것이 쓸모없는 반환 값이라는 믿음으로 답을 표시 할 것입니다. –