Domanda

Io sono la creazione di un progetto in cui devo cambiare il file main.m, in modo che UIApplication doesnt appaiono subito, così ho cancellato la riga seguente da main.m

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

e cancellati queste righe da AppDelegate

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

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

E ho aggiunto alcune linee di mine. Ora UIWindow doesnt appaiono per default, ed è giusto così. Ma ora dopo l'esecuzione il mio codice, voglio creare una finestra e visualizzare alcuni messaggi.

Come creare un UIWindow quando non c'è UIApplication in main.m?

È stato utile?

Soluzione

Se si desidera avviare un app da un demone, usare SBSLaunchApplicationWithIdentifier.

BOOL SBSLaunchApplicationWithIdentifier(NSString* identifier,
                                        BOOL      please_pass_NO_here);

Se si desidera avviare un URL, l'uso -[UIApplication openURL:] o GSEventSendApplicationOpenURL di livello inferiore.

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

Se si desidera semplicemente visualizzare un avviso, utilizzare CFUserNotification. (Sì funziona su iPhoneOS.)

http://developer.apple .com / mac / biblioteca / documentazione / CoreFoundation / Reference / CFUserNotificationRef / Reference / reference.html

Altri suggerimenti

Molto probabilmente, non di partenza UIKit non è la soluzione che state cercando. Prova semplicemente non mostrare alcuna interfaccia utente (non tornano da applicationDidFinishLaunching:) e fare ciò che è necessario fare in là (o in qualcosa chiamato da quella). In alternativa, si può solo mostrare una schermata di caricamento con un bel UIActivityIndicatorView.

Si noti inoltre che se l'applicazione non ha pienamente avviato entro 20 secondi di avvio (che mostra una sorta di interfaccia utente e di risposta agli eventi), trampolino o il sistema operativo uscirà automaticamente l'applicazione. Inoltre, gli utenti non piace aspettare:.)

Modifica: Dal momento che non si stanno facendo un'applicazione UIKit, smettere di sognare di essere in grado di avviare UIKit nel mezzo: non si può. Ciò richiede un trampolino componente aggancio separato da realizzare.

Perché stai tentando di aprire una finestra da un demone? Sembra un'idea super-cattivo, e come si nota in realtà difficile da fare.

Invece, creare un app per fare quello che vuoi fare e lanciarlo dal daemon quando si desidera mostrare una finestra - attraverso la manipolazione URL o altri mezzi. Ma in fondo che l'app e il demone in grado di comunicare una volta che è installato e funzionante, e può fare tutte le cose UI lontano dal dominio del demone.

ho realizzato quello che stavo cercando di fare, grazie a KennyTM per le sue grandi consigli.

Questo è quello che ho fatto

1) Ho creato il mio app in cui ho fatto tutte le cose per la mia app e poi scritto tutte quelle impostazioni in un file di testo e ho fatto la mia app creare e posizionare il file txt a /private/var/mobile/SomeFile.txt (Questo è il luogo in cui, come un utente mobile, la vostra applicazione può scrivere senza fare confusione con i permessi)

2) Poi ho creato un altro file (h / m) applicazione in Xcode, (Window Based), delegato cancellato e scritto la mia funzione principale, in cui ho letto dal file mia altra applicazione creare e scrissi nel 1 ° passo (/private/var/mobile/SomeFile.txt).

3) Ho creato un plist (È possibile trovare aiuto sulla creazione di un LaunchDaemon qui http://www.tuaw.com/2008/02/21/tuaw-responds-iphone-lojack/ )

4) Ho fatto che plist per leggere la mia applicazione nella fase 2 ogni 60 sec (1 min) e se la condizione è vera, l'applicazione nel 2 ° fase verrà visualizzato un avviso utilizzando CFUserNotificationDisplayAlert (grazie a KennyTM per la sua guida).

L'unico problema che sto avendo è che al momento devo mettere che launchDaemon in / directory / LaunchDaemons Biblioteca manualmente, ma usando SSH radice, perché i cant / la mia app non posso scrittura a quella directory.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top