2010-01-06 2 views
0

UIApplication가 바로 표시 나던 그래서 내가, 내가 main.m 파일을 변경해야하는 프로젝트를 생성하고, 그래서 난 main.m에서 다음 줄을 삭제엑스 코드에서 UIWindow를 추가 아이폰 SDK

int retVal = UIApplicationMain(argc, argv, nil, nil); 

및 AppDelegate에

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    // Override point for customization after application launch 
    [window makeKeyAndVisible]; 
} 

에서이 라인을 삭제 그리고 난 내 일부 라인을 추가했습니다. 이제는 UIWindow가 기본적으로 나타나지 않습니다. 하지만 지금은 내 코드가 실행 된 후, 나는 창을 만들고 메시지를 표시하고 싶다.

main.m에 UIApplication이 없을 때 UIWindow를 만드는 방법은 무엇입니까?

+1

이것은 정말 나쁜 생각처럼 보입니다. –

답변

4

데몬에서 응용 프로그램을 시작하려면 SBSLaunchApplicationWithIdentifier을 사용하십시오.

BOOL SBSLaunchApplicationWithIdentifier(NSString* identifier, 
             BOOL  please_pass_NO_here); 

당신이 URL을 시작 -[UIApplication openURL:]를 사용하려면 또는 낮은 수준의 GSEventSendApplicationOpenURL

.
mach_port_t GSGetPurpleSystemEventPort(); 
void GSEventSendApplicationOpenURL(CFURLRef url, mach_port_t port); 

단순히 경고를 표시 할 경우, CFUserNotification을 사용합니다. (네, 그것은 iPhoneOS에서 작동합니다.) 내가 그의 위대한 조언에 대한 KennyTM에, 내가 일을하려고 있었는지 감사를 달성

http://developer.apple.com/mac/library/documentation/CoreFoundation/Reference/CFUserNotificationRef/Reference/reference.html

+0

Waoo는 정말 고무적인 것을 말합니다. 나는 그것을 시험해 볼 것이다. 한 가지 내가 물어보고 싶은 것은, 사실, 필자는 LaunchDaemon을 bash 스크립트로 작성했는데, 단순히 입력으로 파일을 기록하면 제대로 작동하지만, "/Applications/Appname.app/"을 사용하여 응용 프로그램을 열려고 시도 할 때마다 작동합니다. AppName ", 아무 일도 일어나지 않습니다. 어쨌든 iPhoneOS에서 Bash Script를 사용하여 앱을 열 수 있습니까? – raziiq

+0

예를 들어 식별자를 전달해야합니다. @ "com.yourcompany.appname". – kennytm

+0

답장을 보내 주셔서 감사합니다. 네, 당신이 이전에 말한 클래스에 식별자를 전달해야한다는 것을 알고 있습니다. 분명히 시도해 볼 것입니다. 그러나이 경우에는 어쨌든 bash에있는 것처럼 묻고있었습니다. bash 스크립팅 명령을 사용하여 응용 프로그램을 열려면 스크립팅을할까요? – raziiq

1

대부분의 경우 UIKit을 시작하지 않으면 찾고있는 해결책이 아닙니다. UI를 표시하지 말고 (applicationDidFinishLaunching:에서 돌아 오지 말고) 거기에서해야 할 일 (또는 그로부터 불리는 것)을 수행하십시오. 또는 UIActivityIndicatorView과 함께 로딩 화면을 보여줄 수도 있습니다.

또한 애플리케이션이 시작 후 20 초 이내에 완전히 시작되지 않으면 (일종의 UI 표시 및 이벤트 응답) SpringBoard 또는 OS가 자동으로 애플리케이션을 종료합니다. 또한 사용자는 기다리는 것을 좋아하지 않습니다.

편집 : UIKit 앱을 만들지 않으므로 중간에 UIKit을 시작할 수 있다는 꿈을 그만 두십시오. 할 수 없습니다. 이를 위해서는 SpringBoard를 연결하기위한 별도의 구성 요소가 필요합니다.

+0

답장을 보내 주셔서 감사합니다. 사실 나는 LaunchDaemon을 만들고 있습니다. 그래서 UIApplication을 만들면 항상 백그라운드에서 실행되는 많은 메모리가 필요하므로 내 main.m을 썼습니다. 진행 방법에 대한 제안이 있으십니까? – raziiq

+0

iPhone OS에서 응용 프로그램으로 백그라운드 데몬을 만들 수 없습니다. 전화를 탈옥해야합니다. – Nimrod

+0

그리고 저와 완전히 똑같습니다. 그렇다면 모든 UIKit을해서는 안됩니다. –

0

언제 데몬에서 창을 열려고합니까? 그것은 슈퍼 나쁜 생각처럼 보입니다. 그리고 실제로하는 것이 어렵다는 것을 메모하십시오.

대신 URL 처리 나 다른 방법을 통해 창을 표시하고 싶을 때 수행 할 작업을 수행하고 데몬에서 실행하는 앱을 만듭니다. 하지만 기본적으로 app과 데몬은 일단 실행되고 나면 통신 할 수 있으며 데몬의 도메인에서 모든 UI 항목을 제거 할 수 있습니다.

+0

또는 스프링 후크를 연결하십시오. –

+0

스프링 보드와 후크하는 방법에 대한 예는 무엇입니까? – raziiq

0

.

내가

1) 나는 내 응용 프로그램에 대한 모든 재료를 한 후 텍스트 파일에 모든 설정을 쓰고 내 응용 프로그램을 만들고 해당 txt 파일을 배치하게하는 내 응용 프로그램을 생성 한 일이다/개인/var/모바일/SomeFile.txt (이것은 모바일 사용자로서 앱이 권한없이 망가뜨릴 수있는 곳입니다)

2) xcode, (Window Based), Delegate (h/m) 파일을 삭제 한 다른 프로그램을 작성하고 내 자신의 주요 기능, 내가 다른 애플 리케이션을 만들고 첫 번째 단계에서 쓴 파일 (/private/var/mobile/SomeFile.txt)에서 읽습니다. 조건이있는 경우

3) 나는 (당신은) 내가 PLIST 2 단계마다 60 초 (1 분에서 내 응용 프로그램을 읽을 수 있다고했다))

4 여기 http://www.tuaw.com/2008/02/21/tuaw-responds-iphone-lojack/을 LaunchDaemon 작성에 도움을 찾을 수있는 PLIST를 생성 사실, 두 번째 단계의 응용 프로그램은 CFUserNotificationDisplayAlert를 사용하여 경고를 표시합니다 (KennyTM의 도움으로 안내).

내가 현재 가지고있는 유일한 문제는 내가 launchdaemon을/Library/LaunchDaemons 디렉토리에 수동으로 배치해야하지만 루트를 사용하는 SSH는 내 응용 프로그램이 그 디렉토리에 쓸 수 없기 때문입니다.