Question

Je suis en train de créer un projet dans lequel je dois changer le fichier main.m, de sorte que UIApplication ne marche pas apparaître tout de suite, donc je supprimé la ligne suivante main.m

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

et supprimé ces lignes de AppDelegate

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

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

Et j'ai ajouté quelques lignes de la mienne. Maintenant UIWindow ne marche pas apparaître par défaut, et à juste titre. Mais maintenant, après mon code est exécuté, je veux créer une fenêtre et afficher un certain message.

Comment créer un UIWindow quand il n'y a pas UIApplication dans main.m?

Était-ce utile?

La solution

Si vous voulez lancer une application à partir d'un démon, utilisez SBSLaunchApplicationWithIdentifier.

BOOL SBSLaunchApplicationWithIdentifier(NSString* identifier,
                                        BOOL      please_pass_NO_here);

Si vous voulez lancer une URL, utilisez -[UIApplication openURL:] ou GSEventSendApplicationOpenURL niveau inférieur.

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

Si vous voulez simplement afficher une alerte, utilisez CFUserNotification. (Oui, il fonctionne sur iPhoneOS.)

http://developer.apple .com / mac / bibliothèque / documentation / CoreFoundation / Référence / CFUserNotificationRef / Référence / reference.html

Autres conseils

Très probablement, pas à partir UIKit n'est pas la solution que vous recherchez. Essayez tout simplement pas montrer une interface utilisateur (ne revenez de applicationDidFinishLaunching:) et faites ce que vous devez faire là-dedans (ou dans ce qu'on appelle de cela). Ou, vous pouvez simplement montrer un écran de chargement agréable avec un UIActivityIndicatorView.

En outre, notez que si votre demande n'a pas pleinement lancé dans les 20 secondes de démarrage (montrant une sorte d'interface utilisateur et répondre à des événements), le système d'exploitation ou SpringBoard quittera automatiquement votre application. De plus, les utilisateurs n'aiment pas attendre:.)

Edit: Puisque vous ne faites pas une application UIKit, cesser de rêver d'être en mesure de commencer UIKit au milieu: vous ne pouvez pas. Cela nécessite un SpringBoard d'accrochage des composants séparés pour accomplir.

Pourquoi vous essayez d'ouvrir une fenêtre d'un démon? Il semble comme une idée super-mauvais, et que vous constatez difficile à faire en fait.

Au lieu de cela, créer une application pour faire ce que vous voulez faire et le lancer à partir du démon lorsque vous souhaitez afficher une fenêtre - soit par la manipulation d'URL ou d'autres moyens. Mais fondamentalement cette application et votre démon peut communiquer une fois qu'il est en marche, et il peut faire tous les trucs de l'interface utilisateur loin du domaine du démon.

i ce que j'accompli en train de faire, grâce à KennyTM pour ses grands conseils.

est ce que je l'ai fait

1) j'ai créé mon application dans laquelle je l'ai fait tous les trucs pour mon application, puis écrit tous ces paramètres dans un fichier texte et fait mon application créer et placez ce fichier txt à /private/var/mobile/SomeFile.txt (Ceci est l'endroit où un utilisateur mobile, votre application peut écrire sans déconner avec des autorisations)

2) Ensuite, j'ai créé une autre application dans Xcode, (Fenêtre Based), délégué supprimé (h / m) fichiers et écrit mon propre fonction principale, où je l'ai lu à partir du fichier mon autre application créer et écrit à la 1ère l'étape (/private/var/mobile/SomeFile.txt).

3) J'ai créé un plist (Vous pouvez trouver de l'aide sur la création d'un LaunchDaemon ici http://www.tuaw.com/2008/02/21/tuaw-responds-iphone-lojack/ )

4) Je fait que plist à lire mon application à l'étape 2 toutes les 60 secondes (1 min) et si la condition est vraie, l'application dans la 2ème étape affiche une alerte à l'aide CFUserNotificationDisplayAlert (grâce à KennyTM pour ses conseils).

Le seul problème que je suis actuellement HAVING est que je dois placer cette launchDaemon dans / Bibliothèque / répertoire LaunchDaemons manuellement mais SSH en utilisant la racine, parce que je ne peux pas / mon application ne peux pas écrire dans ce répertoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top