2012-06-16 2 views
1

이 작업을 전혀 수행 할 수 있는지 잘 모르겠습니다 ...IOS - UIApplication 외부에서 모달 사용자/암호를 만드는 방법?

배경 : 앱 스토어에 들어 가지 않아 앱 스토어 가이드 라인의 제한을받지 않는 사내 애플리케이션을 구축 중입니다.

주 응용 프로그램 전에로드되는 dylib가 있습니다. 응용 프로그램 용 라이브러리의 일종입니다. 내 물건을로드하려면 생성자 __attribute__을 사용하고 있습니다. 거기에 사용자/비밀 번호 질문을 받게 될 alertview이나 팝업의 종류를 넣어 싶습니다. 암호가 올 Y 르면 사용자가 원래 응용 프로그램으로 계속 진행할 수 있습니다.

이것은 dylib에 있기 때문에 아직 UIApplication이 없으므로 원본 응용 프로그램이나 소스에 간섭하고 싶지 않습니다.

제안, 팁을 환영합니다 ... 감사.

답변

2

이 내가 내 응용 프로그램에서 매우 비슷한 일을 한 방법이다.

1) 불투명 한 전체 화면 UIWindow (예 : 검정색)를 만듭니다.

2) windowLevelUIWindowLevelAlert + 1으로 설정하면 앱의 모든 다른 창을 숨길 수 있습니다.

3) 사용자 및 암호 필드를이 UIWindow에 추가하십시오.

+0

나는 이것을 좋아한다. 나는 이미 applicationDidFinishLaunching을 가로 채고 있지만 windowLevel을 사용하지 않았습니다. 나는 rootViewController를 꺼내서 (그리고 나중에 다시 돌려 주어서) 이전 창을 숨길 수 있었다. 그것은 나에게 너무 많이 보였다. 나는 너의 방식으로 그것을 시도 할 것이다 ... – Tzahi

0

로그인에 대한보기를 작성해야합니다. 로그인을 통과 한 경우 앱을 사용하여 계속 진행할 수 있습니다. 그렇지 않으면 앱이 종료됩니다.

+0

그러나 dylib에서는 응용 프로그램이 아직 존재하지 않으므로 이러한 뷰를 어떻게 팝업합니까? 또는 응용 프로그램 대리인 swizzled 있지만 정품 인증 및 표시되는 원래 응용 프로그램의 창을 중지하는 방법을 잘 모르겠습니다. – Tzahi

0

dylib를로드 할 때 스레드를 시작하고 UIApplication이 사용 가능 해지도록 기다린 다음 주 스레드에 경고를 표시 할 수 있습니다.

+0

이미 응용 프로그램 대리인이이를 수행 할 수 있으므로 응용 프로그램의 비동기 특성으로 인해 원래 응용 프로그램의 화면이 화면에 그려지는 것이 문제입니다. – Tzahi

+0

당신은 무엇을 뽐내고 있습니까? 당신은 당신의 애플 리케이션 델리게이트의'applicationDidFinishLaunching : swizzling을 시도 했습니까? – sergio

+0

네, 그랬습니다. 나는 성공적으로 말했어 :) – Tzahi

1

UIApplication 및 UIWindow 인스턴스를 초기화하지 않고도 UIAlertView를 표시 할 수 없다고 확신합니다.

만 아이폰 OS 자체가 권한 또는 iTunes 또는 게임 센터 로그인의 경우 물을 때 예를 들어, 응용 프로그램 외부에서 경고를 표시 할 수 있습니다 ... 당신이 할 수있는 해결 방법으로

:

  • 응용 프로그램 내에서 로그인보기를 만듭니다.
  • 로그인 프로세스를위한 웹 응용 프로그램을 만듭니다. 웹 앱은 맞춤 URL 스키마를 사용하여 기본 앱을 실행하고 '사용자'및 '비밀번호'와 같은 매개 변수를 앱에 전달할 수 있습니다.

    0) 절편 applicationDidFinishLaunching 메시지, 자신의 코드를 추가, 원래의 구현을 실행