J'écris une application pour iOS 4 qui a besoin de jouer un son (ou vibrer) à des intervalles réguliers (spécifiés par l'utilisateur) en arrière-plan. Je ne souhaite pas utiliser les notifications locales car il n'est pas nécessaire d'afficher une alerte cliquable.Comment appeler une méthode à plusieurs reprises lorsque l'application iOS 4 est en arrière-plan?
Ce code (à partir de documents d'Apple) se déclenche lorsque mes changements d'applications à l'arrière-plan:
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task.
NSLog(@"I am now in the background");
// Here I need something like this:
[self performSelector:@selector(myMethod) withObject:nil afterDelay:5.0];
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
La ligne [self performSelector: ...]
est exécuté lorsque l'application est mis à l'arrière-plan, mais la méthode myMethod
n'est pas appelé jusqu'à ce que l'application est remise au premier plan (pas en 5 secondes, comme défini au paramètre afterDelay:
). Alors, comment puis-je provoquer l'appel de la méthode alors que l'application est toujours en arrière-plan?
Pourriez-vous nous le dire pendant combien de temps votre application restera en arrière-plan? J'ai lu que c'est 10 minutes maximum ... est-ce vrai ou faux? – Wasim