PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 23 → Nouveauté 715 de la version 23 - Exécuter un traitement en arrière plan sous iOS
Nouveauté 715 de la version 23 - Exécuter un traitement en arrière plan sous iOS
Débuté par Jérôme, 11 juil. 2018 11:56 - 4 réponses
Membre enregistré
117 messages
Popularité : +1 (1 vote)
Posté le 11 juillet 2018 - 11:56
Bonjour à tous,

Est-ce que quelqu'un a réussi à faire fonctionner le traitement en arrière plan sous iOS correctement ?

J'ai lu attentivement la doc de cette page : https://doc.pcsoft.fr/fr-FR/?1000023473&name=taches_arriereplan
Et plus particulièrement les points sur les spécificités iOS :

Durée d'exécution :
Les tâches en arrière-plan ont un total de 30 secondes pour s'exécuter. Si ce délai est dépassé, l'application est arrêtée directement (ce délai peut être réduit selon la disponibilité du système). L'exécution de la tâche doit donc être le plus rapide possible. => Mon traitement fait moins de 30 sec.

Pour que le système considère que l'application peut exécuter des tâches en arrière-plan, l'application doit réaliser des requêtes réseau (appels de Webservices, requêtes HTTP, accès à une base HFSQL, GPS, Email, ...). En effet, iOS vérifie que l'application exploite des données provenant du réseau. => je fais un appel avec httpRequête

L'application doit être capable d'exécuter des tâches en arrière-plan. Sur le périphérique, dans les "Paramètres de l'appareil .. Nom de l'application", l'option "Actualiser en arrière-plan" doit être cochée. => c'est coché

Lorsque l'application est terminée spécifiquement par un double appui sur le bouton Home et un swipe, la procédure en arrière-plan a moins de chance de s'exécuter. => je ne fais pas cette manipulation
La procédure ne sera plus appelée si l'appareil passe en mode "économie d'énergie". => l’appareil n'est pas en économie d'énergie

De manière générale, plus le temps d'exécution de la procédure est long, plus les appels seront espacés dans le temps. Le système a tendance à prioriser les procédures les moins consommatrices en CPU. => j'ai patienté plus d'une heure sans résultat :(

Voici mon code :
Procedure ProcArrierePlan()

fLOG.mess = "Exécution de la proc en arrière plan"
HAjoute(fLOG)

HTTPRequête("https://www.google.ch")


Cette procédure est une procédure globale et j'ai coché "Exécution périodique lorsque l'application est en arrière-plan" avec un intervalle de 15 minutes.

Qui a réussi à faire ça et comment ?

Merci pour vos avis, pistes ou expériences!
Posté le 11 juillet 2018 - 23:00
Jérôme, comment fait tu pour vérifier si ta procédure est exécuté ou pas?
tu fais un httprequette mais pas de httprésultat?
Membre enregistré
117 messages
Popularité : +1 (1 vote)
Posté le 12 juillet 2018 - 11:04
Bonjour popoy et merci de l'intérêt à mon problème.

Je fais un Hajoute avec un message. Mon fichier fLOG est horodaté automatiquement par une rubrique de ce type donc je peux voir à quel moment l'ajout est fait.

Et comme il n'y a aucun enregistrement dans ce fichier je suis sûr que la procédure n'est pas exécutée.

Le HTTPRequête est là pour répondre à l'une des "spécifités iOS" présente dans la doc ( https://doc.pcsoft.fr/fr-FR/?1000023473&name=taches_arriereplan) :
Pour que le système considère que l'application peut exécuter 
des tâches en arrière-plan, l'application doit réaliser des requêtes 
réseau (appels de Webservices, requêtes HTTP, 
accès à une base HFSQL, GPS, Email, ...). 
En effet, iOS vérifie que l'application exploite des données provenant du réseau.


C'est le seul intérêt de cet appel donc c'est pour ça que je ne fais pas de httprésultat après.
Message modifié, 12 juillet 2018 - 11:06
Posté le 12 juillet 2018 - 21:24
il semble qu'il y a en effet un problème.
je te conseil de demander un exemple au support.
personnellement, c'est ce j'ai finis par faire concernant le champ natif.
et ils ont finit par fournir cet exemple dans la Lst et modifier l'aide en conséquence.
Membre enregistré
117 messages
Popularité : +1 (1 vote)
Posté le 13 juillet 2018 - 17:35
Merci popoy pour ces conseils.

J'ai fait quelque chose de semblable à savoir envoyer un petit projet de test que j'ai soumis au ST comme étant un bug.

Pour le moment je suis en attente d'une réponse.

Cependant, et c'est vraiment incroyable, mon app est installée depuis maintenant environ 30 heures et la procédure a été exécutée une seule fois, hier (12.7.2018 à 21h05).

Je comprends bien que ce ne soit pas garanti que la procédure soit exécutée chaque 30 minutes (ce que j'ai paramétré) mais qu'une fois en 30 heures c'est vraiment (trop) peu.