2015-12-11 4 views
2

La récupération de moi avons développé deux applications différentesfond intervalle de temps fréquent fait

  1. App1 - Avec Healthkit activé.
  2. App2 - Application ionique

tâche App1: lire les données de healthkit qui est magasin dans le serveur.

Tâche App2: Récupère les données stockées du serveur et de l'affichage.

J'ai démarré App2 depuis App1 en utilisant openURLScheme. Alors App1 fonctionnant sur le mode de fond et aussi Il devrait être continué plus de 3 minutes à une heure.

J'ai essayé suivant Scénario:

bgTask = self.applicationUI!.beginBackgroundTaskWithName("MyTask", expirationHandler: {() -> Void in 

     self.applicationUI!.endBackgroundTask(self.bgTask!) 

     self.bgTask = UIBackgroundTaskInvalid; 
    }) 

    self.bgTask = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({() -> Void in 
     self.monitorInBackground() 
    }) 

J'obtiens l'erreur: permittedBackgroundDuration: 180,000000 raison:. FinishTask

processus d'arrière-plan

mesure pour la prochaine 3 minute (Après IOS 7 introduire avant IOS 7, la le temps d'exécution du processus était de 10 minutes).

Note:

je l'espère, il peut être possible en utilisant APNS notification silencieuse. Mais je m'attendais à une meilleure solution que l'APNS.

+0

Je travaille également sur le même type d'application où l'extraction d'arrière-plan est nécessaire, mais n'a pas trouvé de solution pour maintenir la connexion socket au serveur en mode d'arrière-plan pendant plus de 10 minutes. C'est en quelque sorte possible avec l'aide de VOIP, mais je ne suis pas sûr que Apple va approuver cela. –

+0

@VijaySanghavi pouvez-vous s'il vous plaît partager le code pour atteindre (jusqu'à 10 minutes) – Senthilkumar

+0

Vous aviez 10 minutes avant (iOS 7. Après iOS 7 le temps d'exécution de fond est de 3 minutes.Vous devez utiliser une approche différente de votre application. l'exécution en arrière-plan avec des mises à jour fréquentes du serveur épuisera la batterie et l'utilisateur des données cellulaires.Vous pouvez utiliser le mode d'extraction d'arrière-plan sans notification push mais votre exécution ne sera que toutes les quelques heures – Paulw11

Répondre

2

Apple a une bonne section sur background execution in their documentation. Les deux façons de procéder sont une notification silencieuse (comme vous le suggérez) et l'extraction d'arrière-plan. Le "pro" de l'utilisation d'une notification silencieuse est que vous pouvez contrôler quand cela arrive assez précisément tant que votre utilisateur est en ligne. (Ce qu'ils doivent probablement être pour accéder au serveur de toute façon.) Mais, oui, cela ajoute beaucoup de complexité.

L'extraction d'arrière-plan fonctionne bien, mais vous n'avez pas beaucoup de contrôle sur quand cela arrive. Cela peut ou peut ne pas être un problème, en fonction de ce que fait votre application.

D'autres options qui pourraient fonctionner incluent l'audio de fond, les mises à jour de localisation et la VoIP, mais elles pourraient vous avoir rejeté. Exécuter simplement une tâche en arrière-plan ne fonctionne pas - cela est conçu pour terminer les tâches plutôt que de les faire tourner pendant longtemps.