PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → ACCESS_BACKGROUND_LOCATION : l'idée de géni !
ACCESS_BACKGROUND_LOCATION : l'idée de géni !
Débuté par Pascal BOULESTEIX, 21 mar. 2021 10:01 - 20 réponses
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 21 mars 2021 - 10:01
Bonjour à tous
Une bien belle matinée ce dimanche:) ; il fait beau et une de mes applications a été mise en ligne avec le fameux ABL !
Comment j'ai fait ?
Depuis fin décembre, j'ai essayé des dizaines de fois de mettre mon application en ligne pour des tests internes, avec autant de refus.
Le seul restant est le fameux "Prominent disclosure not found".
Vendredi, j'ai décidé de mettre ma mise à jour directement en production (au cas ou le validateur serait différent !)
Et bingo, ce matin, elle est disponible dans le Play Store !
Par contre, je n'ai pas reçu de message m'indiquant le changement de statut (ou alors c'est juste Apple qui en envoie un ?)
Je vais essayé avec mon autre application !
A suivre.
Membre enregistré
184 messages
Popularité : +4 (4 votes)
Posté le 21 mars 2021 - 13:18
Je suis impatient Pascal, pour moi j'ai mis le message apple et mon application dans les mains du support de pcsoft et j'attends une réponse...
à suivre
Posté le 22 mars 2021 - 09:59
Bonjour,

Merci Pascal pour ce retour.
J'ai moi même essayé de mettre directement en production et même refus à 2 reprises.

Pourrais-tu nous mettre le code que tu as mis dans l'initialisation de ton rojet et la vidéo que tu as posté pour qu'on puisse s'en inspirer ?

J'ai tout essayé de mon côté et je n'ai que des refus...

Par avance merci.
Posté le 22 mars 2021 - 12:55
Bonjour,

Merci Pascal pour ce retour.
J'ai moi même essayé de mettre directement en production et même refus à 2
reprises.

Pourrais-tu nous mettre le code que tu as mis dans l'initialisation de ton
rojet et la vidéo que tu as posté pour qu'on puisse s'en inspirer ?

J'ai tout essayé de mon côté et je n'ai que des refus...

Par avance merci.


excusez moi mais vous parlez du play store et de Apple ???

donc l'accèss_background_location est un pb Android si j'ai bien
compris
donc quid de apple ?


et si j'ai toujours bien compris, c'est si et seulement si on utilise
la geolocalisation ?
Merci de me confirmer car je vais bient^t en avoir besoin pour une
appli

--
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Membre enregistré
184 messages
Popularité : +4 (4 votes)
Posté le 22 mars 2021 - 15:56
oui tu as parfaitement raison on parle bien d'apple et de l'accèss_background_location
Membre enregistré
184 messages
Popularité : +4 (4 votes)
Posté le 22 mars 2021 - 15:59
grrrrrrrrr ! oui tu as parfaitement raison on parle bien d'ANDROID et de l'accèss_background_location

mon clavier a fourché....;(
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 22 mars 2021 - 17:18
Voici le code

Au tout début de l'init projet
// pas de titre suivant car bug dans l'init projet sinon TitreSuivant("Politique de confidentialité")
nRC =gPROC_DEMANDE_AUTORISATION_LOCALISATION(Faux)

SELON nRC
CAS 0
gbMyAcceptationGeolocalisation=Faux
CASE 1
gbMyAcceptationGeolocalisation=Vrai
gPROC_INIT_GPS()
CAS -1
gbMyAcceptationGeolocalisation=Vrai
FIN


Procédure globale
Procedure gPROC_DEMANDE_AUTORISATION_LOCALISATION(bParmSilencieux est un booléen=Faux)

nRC est un entier=0

SI fFichierExiste(gsRepEnCoursLorsInit+[fSep()]+"localisation.txt") ALORS
RENVOYER -1
FIN

SI bParmSilencieux=Faux ALORS

nRC=Dialogue("AVERTISSEMENT"+RC+RC+"Cette application utilise votre localisation pour vous situer sur la carte et vous guidez sur les parcours."+RC+RC+"Votre localisation est stockée sur votre appareil uniquement quand vous enregistrez un parcours (même si l'application est inactive ou en arrière-plan) ou un point d'intérêt."+RC+RC+"Quand l'enregistrement d'un parcours est activé, une notification est affichée."+ RC +RC + "Votre localisation n'est jamais partagées sans action de votre part.",["Ok","Annuler"],1,2,dlgIcôneInfo)

SINON
nRC=Oui
FIN

SI nRC=Oui ALORS
QUAND EXCEPTIONEXCEPTION DANS

lnNumFichier = fOuvre(gsRepEnCoursLorsInit+[fSep()]+"localisation.txt",foCréation)
fEcritLigne(lnNumFichier,"1")
fFerme(lnNumFichier)
RENVOYER 1
FAIRE
RENVOYER 0
FIN

SINON
RENVOYER 0
FIN
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 31 mars 2021 - 11:55
Salut à tous
La fin d'un calvaire : mes deux applications sont en ligne avec les recettes précédemment évoquées.
Reste le point suivant : je pense que les valideurs des versions de prod se sont attachés à la forme et non au fond.
En effet, un psychorigide comme moi fait une différence entre afficher une 'popop alert', le grief du rejeté pour les versions internes, et l'affichage d'une fenêtre qui ressemble à une popup alerte.
Il est vrai que fin décembre quand j'ai soumis ma nouvelle version en version interne, on était loin de l'ergonomie actuelle et que ma politique de confidentialité n'était pas aux normes.
Je pense que le valideur de l'époque est entré plus en avant dans le code pour rechercher l'affichage de cette satanée "popup alert" et à rejeté systématiquement mes mises à jour.
Pour l'avenir, et pour lever toute ambigüité, j'ai demandé à PCSoft qu'une nouvelle instruction WL soit ajoutée : AffichePoppuAlert("mon texte").
A suivre
Membre enregistré
2 messages
Posté le 12 avril 2021 - 15:55
Bonjour,

je développe actuellement une application qui a besoin de la localisation en arrière-plan et enregistre le trajet de l'utilisateur en windev 25 (je vais passer en W26 dans la semaine). Le problème est que la fonction GPSSuitDéplacement marche correctement en arrière-plan sur iOS mais pas en Android. Avez-vous rencontré ce problème sur Android ? Utilisez-vous une autre fonction pour suivre la localisation de l'utilisateur ? Je veux éviter d'utiliser un ThreadPersistant. Merci.
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 13 avril 2021 - 08:32
Oui. Il faut ajouter un thread permanent pour que cela fonctionne en arrière-plan sous Android.

Voici comment j'initialise ce thread
<Compile SI TypeConfiguration=Android>
QUAND EXCEPTIONEXCEPTION DANS

ThreadExecute("gTHREAD_TRACE_GPS_START", threadContexteGlobal, gTHREAD_TRACE_GPS_START)

// Crée la notification à afficher pendant la lecture du morceau de musique
Notif est une Notification
Notif..Titre = "Pour info : capture d'une trace en cours"
//Notif..ActionClic = gTHREAD_TRACE_GPS_STOP_BY_NOTIFICATION



// tant que le thread n'est pas terminé
ThreadPersistant("gTHREAD_TRACE_GPS_START", Notif)

FAIRE
//Info ("Thread déjà lancé","*"+gsTheadSignal+"*")
gsTheadSignal=""
FIN

<FIN>
gbTraceActive=Vrai

Procedure gTHREAD_TRACE_GPS_START()
BOUCLE
SI ThreadAttendSignal() = Vrai ALORS
// SI OuiNon("Voulez-vous arrêter la prise de trace en cours ?")=Oui ALORS
// ToastAffiche("Arrêt GPS arrière-plan")

// SELON FenEtat(FI_CHRONO)
// CAS Actif
SI gsTheadSignal="Arrêt par notification" ALORS
gPROC_TRACE_ENREGISTREMENT_TRACE("Appel depuis le thread")
FIN
// ExécuteTraitement(FI_CHRONO.BTN_TRACE_ARRET, trtClic)
// FIN
gsTheadSignal=""
ThreadFin()

SORTIR
// FIN
FIN
FIN
RETOUR


Le plus dur sera de gérer la fin de la capture de la trace (envoie d'un signal au thread), le début de capture (le thread précédent n'est pas fermé), ...

Une copie de ma fenêtre de gestion




Posté le 06 avril 2023 - 18:23
Bonjour,

Je comprends pas où est lancer ton thread et ou GpsSuitDeplacement interviens ?

Je suis bloqué à ce thread et aucune documentation réel pour suivre le déplacement en mode veille / arrière plan..

Avez-vous des réels solutions ?

Merci d'avance !
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 08 avril 2023 - 09:52
Dans le clic du bouton Démarrer la trace

ThreadExécute("gTHREAD_TRACE_GPS_START", threadContexteGlobal, gTHREAD_TRACE_GPS_START)
ThreadPersistant("gTHREAD_TRACE_GPS_START", Notif)

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 08 avril 2023 - 11:34
Ne pas oublier de supprimer le thread quand nécessaire
ThreadEnvoieSignal("gTHREAD_TRACE_GPS_START")

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Posté le 11 avril 2023 - 09:54
Bonjour,

Merci de ton retour, dans ta méthode : gTHREAD_TRACE_GPS_START

Elle contient un "GpsSuitDeplacement" on est d'accord ?

Donc je ne dois pas mettre ce thread dans la partie "Mise en arrière plan de l'application"


Bonne journée
Posté le 11 avril 2023 - 10:17
Ta méthode qui est appelé par le thread, tu l'a spécifié "Thread principal" dans Automatisme de la procédure ?

Dans l'exemple de WM sport, ils font rien de tout cela
Posté le 11 avril 2023 - 11:33
Je viens de voir ta méthode au dessus, cependant je voudrais savoir pourquoi tu n'appelle pas dans "gTHREAD_TRACE_GPS_START" GpsSuitDeplacement

Et que tu appelle encore une autre méthode, Il faut suivre ce process ?
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 11 avril 2023 - 11:41
WM Sport ne fonctionne pas en arrière plan ; l'application ne plante pas mais le suivi de position n'est pas activé, En d'autres mots, il n'y aura qu'un seul segment de trace entre le moment de la mise en arrière plat et le retour à la surface, et ton tracé voir :
https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windevmobile/45311-wm26-27-android-12-gros-probleme-geopositionnement-45986/read.awp… au niveau du "Posté le 09 avril 2022 - 13:01"

Pour répondre ta question, la procédure gTHREAD_TRACE_GPS_START est une proc de base est n'est pas déclarée comme thread.

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Posté le 12 avril 2023 - 09:58
Je n'ai pas trouvé ton raisonnement pour le mode arrière plan avec thread

Et si finalement GpsRecupereposition serait idéal ? Avec un intervalle de 10 sec par position ?

Je suis sous Android 10
Posté le 12 avril 2023 - 17:51
Et je souhaiterais avoir une prévision concernant cette logique :

Je voudrais savoir pourquoi tu n'appelle pas dans "gTHREAD_TRACE_GPS_START" GpsSuitDeplacement

Et que tu appelle encore une autre méthode, Il faut suivre ce process ?

Donc techniquement un seul appel de GpsSuitDeplacement via le thread et en arrière plan etc il suit le déplacement tant qu'il n'y a pas d'arrêt du thread on est d'accord ? (Android 10)

Bonne fin de journée,
Posté le 13 avril 2023 - 09:53
Update : Le thread fonctionne en arrière plan mais il y a un souci d'intervalle avec GpsSuitDeplacement

Il prends ma position toutes les 1 minutes voir 2 minutes, est-ce que tu aurais une idée de pourquoi cela ?

Merci d'avance !
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 13 avril 2023 - 10:42
GPSSuitDéplacement(GPS_SUIVI_DEPLACEMENT,gnGPS_Frequence,gnGPS_Distance)

--
Pascal Boulesteix
Applications Visiolittoral et WNat