L'exécution de l'Application iOS en arrière-plan pendant plus de 10 minutes

Je suis en train de permettre à mon application de s'exécuter en arrière-plan pendant plus de 10 minutes, en fonction de cela et mon bon ci-dessous. (Je veux l'utiliser à long exécution en arrière-plan pour garder une trace de l'emplacement, mon code ici, il suffit juste d'utiliser un compteur pour des fins de test)
N'importe qui peut aider à préciser quel est le problème?

La Mise En Œuvre À Long Exécution De Tâches De Fond

Pour les tâches qui nécessitent plus de temps d'exécution à mettre en œuvre, vous devez
demande des autorisations spécifiques à exécuter en tâche de fond sans
leur suspension. Dans iOS, seulement l'application spécifique types sont autorisés à
exécuter en arrière-plan:

Les applications qui lisent le contenu audible à l'utilisateur, alors que dans le fond,
comme un lecteur de musique app

Apps qui permettent aux utilisateurs de rester informés de leur emplacement à tout moment, comme
une application de navigation

Applications qui prennent en charge la Voix sur Protocole Internet (VoIP)

Kiosque à journaux des applications qui ont besoin de télécharger et traiter le contenu des Applications qui
recevoir des mises à jour régulières des accessoires externes

Applications qui mettent en œuvre ces services doivent déclarer les services qu'ils
l'utilisation et le soutien du système des cadres pour mettre en œuvre les aspects pertinents de la
ces services. Déclarer les services permet au système de savoir qui
les services que vous utilisez, mais dans certains cas c'est le système de cadres
effectivement empêcher votre application à partir de la suspension.

   - (void)viewDidLoad {
             [super viewDidLoad];

        counterTask = [[UIApplication sharedApplication]
                       beginBackgroundTaskWithExpirationHandler:^{

                       }];
                count=0;

        theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
                                                  target:self
                                                selector:@selector(countUp)
                                                userInfo:nil
                                                 repeats:YES];
         }
    - (void)countUp {

        {
            count++;
            NSString *currentCount;
            currentCount=[[NSString alloc] initWithFormat:@"%ld",count];
            theCount.text=currentCount;
            [currentCount release];
        }
        }

Une autre Question: puis-je avoir une Application iOS exécuter en arrière-plan pour toujours?

----Modifié le code pour ajouter un emplacement, ne marche pas encore fonctionner plus de 10 minutes, toute aide à ce que je fais mal?

- (void)viewDidLoad {
     [super viewDidLoad];

 count=0;

locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;

 [locationManager startUpdatingLocation];

counterTask = [[UIApplication sharedApplication]
               beginBackgroundTaskWithExpirationHandler:^{
                   //If you're worried about exceeding 10 minutes, handle it here

                   [locationManager startUpdatingLocation];
               }];
theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
                                          target:self
                                        selector:@selector(countUp)
                                        userInfo:nil
                                         repeats:YES];

 }



     (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
 NSLog(@"OldLocation %f %f", oldLocation.coordinate.latitude, oldLocation.coordinate.longitude); NSLog(@"NewLocation %f %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);

    count++; NSString *currentCount;
 currentCount=[[NSString alloc] initWithFormat:@"%ld",count];
 theCount.text=currentCount; [currentCount release];
 }

    (void)countUp { [locationManager startUpdatingLocation];
 { count++; NSString *currentCount; 
currentCount=[[NSString alloc] initWithFormat:@"%ld",count]; 
theCount.text=currentCount;
 [currentCount release]; } }
Vous avez spécifié dont les applications peuvent s'exécuter en arrière-plan si vous app n'est pas tombe dans l'une de ces catégories alors que vous êtes hors si la chance. Non il n'y a pas moyen de vous faire application de fonctionner en arrière-plan pour toujours. Apple ne permettra pas cela parce qu'il va tuer la vie de la batterie. Je n'ai qu'un utilisateur ne voulez qu'une application comme cela. Pourquoi votre application doivent être en cours d'exécution tout le temps???
il ne tombent dans les catégories décrites en particulier les Applications qui permettent aux utilisateurs de rester informés de leur emplacement à tout moment, comme une application de navigation) quand j'ai tester le code tâches en arrière-plan séjour pour seulement 10 minutes, devrais-je utiliser l'emplacement pour le test au lieu de simplement le compteur?
Si vous app, l'emplacement dans le fond, vous devriez commencer à CLLocationManager pour accueillir de grands changements. Ensuite, votre application sera informé lorsque l'utilisateur change d'emplacement.
Merci, vais le tester maintenant, et vous dire ce qui se passe
rckoenes, j'ai édité la question avec le nouveau code, qui comprend la cllocation, merci de toute aide à ce que je fais de mal, merci

OriginalL'auteur Ahmad | 2013-04-16