PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Impossible de valider sur appstore si géolocalisation et vous ?
Impossible de valider sur appstore si géolocalisation et vous ?
Débuté par MeMess, 25 mai 2022 13:47 - 36 réponses
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 25 mai 2022 - 13:47
Bonjour,

J'ai déjà publié il y a 10 jours, mais je n'arrive pas à croire que je suis le seul dans cette situation... et j’attends toujours le retour du support...

J'essaie de valider une appli qui a besoin d'utiliser la localisation, jusque là rien de foufou ;-)
Elle est validée dans le play store mais pour l'app store, j'ai le souci suivant :

Ces brigands de chez Apple testent l'appli et reste bloqués en n'autorisant pas à utiliser la position de l'appareil...
Du coup dès qu'il lance l'appli, elle plante et ensuite elle ne se lance plus sauf à la désinstaller et le réinstaller }:(

J'ai vu que dans l'aide de windev mobile, il est indiqué que pour ios :
Au premier lancement d'une fonction GPS, le système demande à l'utilisateur l'autorisation d'effectuer une géolocalisation. En cas de refus de l'utilisateur, toutes les fonctions GPS utilisées dans la suite de l'application échoueront (erreur fatale).
Pour ré-autoriser l'utilisation du GPS pour cette application, il est nécessaire de modifier la configuration système de l'application.


J'ai tenté de gérer ça avec des :
CAS EXCEPTION:
OuvreFenêtreMobile(Lafenetrequiditquecestpasbienderefuserlaccesalalocalisation)
FIN:

dans chaque bout de code qui gère l'accès à la localisation mais sans succès...
J'ai aussi tenté la gestion automatique des exceptions mais sans succès.

Et vous vous faites comment avec les pommes et le GPS ? On ne peut pas diffuser une appli WM qui utilise le gps ?

Merci

Franck
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 26 mai 2022 - 09:27
Comment fait tu pour connaitre la réponse de l'utilisateur ?
C'est cela qu'il faut programmer en Swift ou objective c
Demande peut être a Pascal Boulesteix qui a une application gps iOS et Android
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 26 mai 2022 - 09:47
Qu'est que tu veux dire par "Ces brigands de chez Apple testent l'appli et reste bloqués en n'autorisant pas à utiliser la position de l'appareil...".

Je présume qu'alors tu as des messages "en anglais" te disant pourquoi, voire de justifier l'emploi que tu en fais.

D'autre part, as-tu rempli les conditions d'utilisation de l'application pour justifier de l'emploi de la localisation ?

Si tu lances l'application déposée via xCode, àa fonctionne ?

Pour ma part, je n'ai pas livré une nouvelle version sur le AppStore depuis le 12 08 2021 mais je viens de finaliser une grosse évolution de l'application et je vais devoir la tester sous iOS. Je vous tiens au courant.

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 26 mai 2022 - 09:49
Je viens de trouver la réponse
C'est une nouveauté de WM27
https://doc.pcsoft.fr/?1410087934
A vérifier si cela fonctionne aussi pour le GPS
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 26 mai 2022 - 18:30
@Popoy De quelle planète viens-tu ?

J'ai posé la question au support et je crois que tu viens de me trouver la solution... mais d’où vient cette fonction ?
Même le support ne m'en parle pas ! et après moulte recherches je ne l'avais vu nulle part !

Je teste ça demain matin et je te tiens au jus
Gros merci en attendant.

Franck
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 26 mai 2022 - 20:04
Je crois la fonction que j'ai mis plus haut n'est faite que pour la pub
Il faut regarder cette page
https://stackoverflow.com/questions/31973082/using-requestwheninuseauthorization-with-swift
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 26 mai 2022 - 20:12
En objective c
import Foundation
import CoreLocation

if CLLocationManager.authorizationStatus() == .NotDetermined {
    //Code WL à appeler 
   //Exemple mettre une variable globale a faux
}

Attention code incomplet car j'ai plus rien pour tester
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 27 mai 2022 - 07:57
MeMess pourrais-tu répondre aux questions

Qu'est que tu veux dire par "Ces brigands de chez Apple testent l'appli et reste bloqués en n'autorisant pas à utiliser la position de l'appareil...".
Je présume qu'alors tu as des messages "en anglais" te disant pourquoi, voire de justifier l'emploi que tu en fais.

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 27 mai 2022 - 08:51
Pascal, je pense qu'ils (les testeurs de Apple) répondent non lorsqu'ils voient la fenêtre
Qui demande la permission d'utiliser la géolocalisation
Et du coup, son application plante au test.
Il faut donc qu'il (Memess) prévoit ce cas dans son code pour éviter que ça plante
D'où mon début de code
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 27 mai 2022 - 12:28
Désolé, je ne pouvais pas répondre avant.

C'est tout à fait ça les testeurs répondent non à la permission d'utiliser la localisation et du coup l'appli plante, et il me refuse de la valider }:(

J'ai pu reproduire ça en installant l'appli avec testflight car avec wmdev il n'y a pas le problème.

@Popoy je te confirme la fonction AppleTrackingEtatAutorisation() n'existe pas même pas en v27 103j, bizarre que cette page d'aide soit là sans implémenter la fonction ;(

Je vais tenter ton astuce avec le code en C (une première pour moi) et je vous tiens au jus.

En tout cas GRAND MERCI
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 27 mai 2022 - 17:22
Correctif

La fonction existe, c'est juste l'autocomplétion qui ne fonctionne pas !
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 28 mai 2022 - 09:13
Quand Apple refuse une application, il y a un compte rendu des tests ayant aboutis au refus. Dans ce compte rendu, il y a les recommandations à suivre pour passer l'étape qui achoppe.
Quand il y a un refus, tu reçois un mail qui contient un lien vers le compte rendu.
As-tu reçu ce mail et que dit-il ?

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 28 mai 2022 - 10:27
Réponse d'Apple :

Guideline 2.1 - Performance - App Completeness


We're looking forward to completing our review, but we are unable to continue because your app crashed during review. Please review the details below and the attached crash logs, then complete the next steps. 

Steps leading to crash:

1. Launch the app
2. Deny the access to the user’s location
4. The app crashes. Afterwards, the app crashes on launch.

Review device details:

- Device type: iPad 
- OS version: iOS 15.4.1

Next Steps

1. Fully symbolicate the crash report. See Adding Identifiable Symbol Names to a Crash Report.
2. Match the crash report to a common pattern. Based on the pattern, take specific actions to further investigate the crash. See  Identifying the Cause of Common Crashes.
3. Once you've identified the root causes of the crash, make the appropriate changes to the binary to resolve the issue. 
4. Test your app on a device to ensure that it runs as expected.
5. Create and submit a new build for review.


Cerise sur le sunday... le crashlog :
{"app_name":"Ecoici","timestamp":"2022-05-15 23:49:04.00 -0700","app_version":"0.8.1","slice_uuid":"dd223a6b-95c6-3a91-97d9-beaffe631a81","adam_id":"1617657048","build_version":"0.8.1.9","platform":2,"bundleID":"com.luxprudentia.eco-ici","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"iPhone OS 15.4.1 (19E258)","incident_id":"0E21B489-4FCE-4702-AB27-373DAA3E94D6","name":"Ecoici"}
{
  "uptime" : 150000,
  "procLaunch" : "2022-05-15 23:48:39.3891 -0700",
  "procRole" : "Foreground",
  "version" : 2,
  "userID" : 501,
  "deployVersion" : 210,
  "modelCode" : "iPad7,5",
  "procStartAbsTime" : 3600753785482,
  "coalitionID" : 1724,
  "osVersion" : {
    "isEmbedded" : true,
    "train" : "iPhone OS 15.4.1",
    "releaseType" : "User",
    "build" : "19E258"
  },
  "captureTime" : "2022-05-15 23:49:03.4863 -0700",
  "incident" : "0E21B489-4FCE-4702-AB27-373DAA3E94D6",
  "bug_type" : "309",
  "pid" : 19812,
  "procExitAbsTime" : 3601330002831,
  "cpuType" : "ARM-64",
  "procName" : "Ecoici",
  "procPath" : "\/private\/var\/containers\/Bundle\/Application\/CB051CA4-1ADB-42A9-AB8E-49B799AADFD9\/Ecoici.app\/Ecoici",
  "bundleInfo" : {"CFBundleShortVersionString":"0.8.1","CFBundleVersion":"0.8.1.9","CFBundleIdentifier":"com.luxprudentia.eco-ici","DTAppStoreToolsBuild":"13F15"},
  "storeInfo" : {"itemID":"1617657048","deviceIdentifierForVendor":"8667A5C7-F9B6-4071-8283-6D1895414BBB","thirdParty":true,"softwareVersionExternalIdentifier":"848119816"},
  "parentProc" : "launchd",
  "parentPid" : 1,
  "coalitionName" : "com.luxprudentia.eco-ici",
  "crashReporterKey" : "8c54d8bde43f925368355c3a53ea98f2284a75dd",
  "isCorpse" : 1,
  "exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGABRT"},
  "ktriageinfo" : "VM - Fault hit memory shortage\nVM - Fault hit memory shortage\nVM - Fault hit memory shortage\nVM - Fault hit memory shortage\nVM - Fault hit memory shortage\n",
  "asi" : {"libsystem_c.dylib":["abort() called"]},
  "lastExceptionBacktrace" : [{"imageOffset":599820,"symbol":"__exceptionPreprocess","symbolLocation":216,"imageIndex":5},{"imageOffset":85764,"symbol":"objc_exception_throw","symbolLocation":56,"imageIndex":4},{"imageOffset":4865420,"symbol":"-[UIViewController _presentViewController:withAnimationController:completion:]","symbolLocation":5496,"imageIndex":7},{"imageOffset":2773692,"symbol":"__63-[UIViewController _presentViewController:animated:completion:]_block_invoke","symbolLocation":104,"imageIndex":7},{"imageOffset":2384468,"symbol":"-[UIViewController _performCoordinatedPresentOrDismiss:animated:]","symbolLocation":504,"imageIndex":7},{"imageOffset":3851552,"symbol":"-[UIViewController _presentViewController:animated:completion:]","symbolLocation":180,"imageIndex":7},{"imageOffset":2919208,"symbol":"-[UIViewController presentViewController:animated:completion:]","symbolLocation":164,"imageIndex":7},{"imageOffset":5946428,"imageIndex":8},{"imageOffset":5944432,"imageIndex":8},{"imageOffset":5944208,"imageIndex":8},{"imageOffset":5046540,"imageIndex":8},{"imageOffset":5044360,"imageIndex":8},{"imageOffset":5164276,"imageIndex":8},{"imageOffset":5166568,"imageIndex":8},{"imageOffset":5167376,"imageIndex":8},{"imageOffset":5167896,"imageIndex":8},{"imageOffset":2652664,"imageIndex":8},{"imageOffset":2273848,"imageIndex":8},{"imageOffset":2257448,"imageIndex":8},{"imageOffset":2165608,"imageIndex":8},{"imageOffset":2204404,"imageIndex":8},{"imageOffset":4660888,"imageIndex":8},{"imageOffset":4663948,"imageIndex":8},{"imageOffset":5123712,"imageIndex":8},{"imageOffset":2587300,"imageIndex":8},{"imageOffset":2273848,"imageIndex":8},{"imageOffset":2257448,"imageIndex":8},{"imageOffset":1167828,"imageIndex":8},{"imageOffset":2155568,"imageIndex":8},{"imageOffset":2157232,"imageIndex":8},{"imageOffset":2209824,"imageIndex":8},{"imageOffset":2208460,"imageIndex":8},{"imageOffset":2211632,"imageIndex":8},{"imageOffset":2211280,"imageIndex":8},{"imageOffset":5295016,"imageIndex":8},{"imageOffset":5048068,"imageIndex":8},{"imageOffset":5163344,"imageIndex":8},{"imageOffset":5164216,"imageIndex":8},{"imageOffset":5166568,"imageIndex":8},{"imageOffset":5167376,"imageIndex":8},{"imageOffset":5169112,"imageIndex":8},{"imageOffset":5170112,"imageIndex":8},{"imageOffset":2578680,"imageIndex":8},{"imageOffset":2273848,"imageIndex":8},{"imageOffset":2257448,"imageIndex":8},{"imageOffset":2165608,"imageIndex":8},{"imageOffset":2226416,"imageIndex":8},{"imageOffset":2226920,"imageIndex":8},{"imageOffset":1242668,"imageIndex":8},{"imageOffset":1277460,"imageIndex":8},{"imageOffset":6079780,"imageIndex":8},{"imageOffset":215808,"symbol":"__NSFireDelayedPerform","symbolLocation":420,"imageIndex":10},{"imageOffset":683096,"symbol":"__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__","symbolLocation":28,"imageIndex":5},{"imageOffset":197864,"symbol":"__CFRunLoopDoTimer","symbolLocation":1008,"imageIndex":5},{"imageOffset":176288,"symbol":"__CFRunLoopDoTimers","symbolLocation":316,"imageIndex":5},{"imageOffset":44436,"symbol":"__CFRunLoopRun","symbolLocation":1964,"imageIndex":5},{"imageOffset":121904,"symbol":"CFRunLoopRunSpecific","symbolLocation":572,"imageIndex":5},{"imageOffset":6536,"symbol":"GSEventRunModal","symbolLocation":160,"imageIndex":6},{"imageOffset":5135440,"symbol":"-[UIApplication _run]","symbolLocation":1080,"imageIndex":7},{"imageOffset":2618320,"symbol":"UIApplicationMain","symbolLocation":336,"imageIndex":7},{"imageOffset":28748,"imageIndex":8},{"imageOffset":99280,"symbol":"start","symbolLocation":444,"imageIndex":9}],
  "faultingThread" : 0,
  "threads" : [{"triggered":true,"id":763443,"threadState":{"x":[{"value":0},{"value":0},{"value":0},{"value":0},{"value":6914539169},{"value":6094254672},{"value":110},{"value":18446744073709532636},{"value":4423091584,"symbolLocation":0,"symbol":"_main_thread"},{"value":9565622596806922656},{"value":512},{"value":11},{"value":0},{"value":0},{"value":16},{"value":0},{"value":328},{"value":1},{"value":0},{"value":6},{"value":259},{"value":4423091808,"symbolLocation":224,"symbol":"_main_thread"},{"value":1},{"value":10749477712},{"value":0},{"value":1},{"value":63113990400},{"value":8438943744,"symbolLocation":56,"symbol":"directModeShmemLock"},{"value":1}],"flavor":"ARM_THREAD_STATE64","lr":{"value":8030976084},"cpsr":{"value":1073741824},"fp":{"value":6094254528},"sp":{"value":6094254496},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":7487093692,"matchesCrashFrame":1},"far":{"value":6914476872}},"queue":"com.apple.main-thread","frames":[{"imageOffset":27580,"symbol":"__pthread_kill","symbolLocation":8,"imageIndex":0},{"imageOffset":55380,"symbol":"pthread_kill","symbolLocation":208,"imageIndex":1},{"imageOffset":128676,"symbol":"abort","symbolLocation":124,"imageIndex":2},{"imageOffset":69080,"symbol":"abort_message","symbolLocation":128,"imageIndex":3},{"imageOffset":5468,"symbol":"demangling_terminate_handler()","symbolLocation":300,"imageIndex":3},{"imageOffset":108776,"symbol":"_objc_terminate()","symbolLocation":124,"imageIndex":4},{"imageOffset":66164,"symbol":"std::__terminate(void (*)())","symbolLocation":16,"imageIndex":3},{"imageOffset":77328,"symbol":"__cxa_rethrow","symbolLocation":144,"imageIndex":3},{"imageOffset":92600,"symbol":"objc_exception_rethrow","symbolLocation":40,"imageIndex":4},{"imageOffset":122140,"symbol":"CFRunLoopRunSpecific","symbolLocation":808,"imageIndex":5},{"imageOffset":6536,"symbol":"GSEventRunModal","symbolLocation":160,"imageIndex":6},{"imageOffset":5135440,"symbol":"-[UIApplication _run]","symbolLocation":1080,"imageIndex":7},{"imageOffset":2618320,"symbol":"UIApplicationMain","symbolLocation":336,"imageIndex":7},{"imageOffset":28748,"imageIndex":8},{"imageOffset":99280,"symbol":"start","symbolLocation":444,"imageIndex":9}]},{"id":763451,"frames":[{"imageOffset":6452,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":763452,"frames":[{"imageOffset":6452,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":763453,"frames":[{"imageOffset":6452,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":763454,"name":"com.apple.uikit.eventfetch-thread","frames":[{"imageOffset":2732,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":4220,"symbol":"mach_msg","symbolLocation":72,"imageIndex":0},{"imageOffset":26472,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":368,"imageIndex":5},{"imageOffset":43632,"symbol":"__CFRunLoopRun","symbolLocation":1160,"imageIndex":5},{"imageOffset":121904,"symbol":"CFRunLoopRunSpecific","symbolLocation":572,"imageIndex":5},{"imageOffset":97964,"symbol":"-[NSRunLoop(NSRunLoop) runMode:beforeDate:]","symbolLocation":232,"imageIndex":10},{"imageOffset":355984,"symbol":"-[NSRunLoop(NSRunLoop) runUntilDate:]","symbolLocation":88,"imageIndex":10},{"imageOffset":4608160,"symbol":"-[UIEventFetcher threadMain]","symbolLocation":512,"imageIndex":7},{"imageOffset":412972,"symbol":"__NSThread__start__","symbolLocation":792,"imageIndex":10},{"imageOffset":13128,"symbol":"_pthread_start","symbolLocation":116,"imageIndex":1},{"imageOffset":6472,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":763457,"frames":[{"imageOffset":6452,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":763461,"frames":[{"imageOffset":5252,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":39892,"symbol":"_pthread_cond_wait$VARIANT$mp","symbolLocation":1240,"imageIndex":1},{"imageOffset":18107216,"imageIndex":8},{"imageOffset":2004500,"imageIndex":8},{"imageOffset":2004404,"imageIndex":8},{"imageOffset":18109168,"imageIndex":8},{"imageOffset":13128,"symbol":"_pthread_start","symbolLocation":116,"imageIndex":1},{"imageOffset":6472,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":763462,"frames":[{"imageOffset":5252,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":39892,"symbol":"_pthread_cond_wait$VARIANT$mp","symbolLocation":1240,"imageIndex":1},{"imageOffset":18107216,"imageIndex":8},{"imageOffset":9557300,"imageIndex":8},{"imageOffset":18109168,"imageIndex":8},{"imageOffset":13128,"symbol":"_pthread_start","symbolLocation":116,"imageIndex":1},{"imageOffset":6472,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":763520,"frames":[{"imageOffset":5252,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":39892,"symbol":"_pthread_cond_wait$VARIANT$mp","symbolLocation":1240,"imageIndex":1},{"imageOffset":18106924,"imageIndex":8},{"imageOffset":10033296,"imageIndex":8},{"imageOffset":10034244,"imageIndex":8},{"imageOffset":18109168,"imageIndex":8},{"imageOffset":13128,"symbol":"_pthread_start","symbolLocation":116,"imageIndex":1},{"imageOffset":6472,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":763521,"frames":[{"imageOffset":5808,"symbol":"__select","symbolLocation":8,"imageIndex":0},{"imageOffset":9545904,"imageIndex":8},{"imageOffset":9772028,"imageIndex":8},{"imageOffset":9770872,"imageIndex":8},{"imageOffset":18109168,"imageIndex":8},{"imageOffset":13128,"symbol":"_pthread_start","symbolLocation":116,"imageIndex":1},{"imageOffset":6472,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":763522,"frames":[{"imageOffset":5252,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":39892,"symbol":"_pthread_cond_wait$VARIANT$mp","symbolLocation":1240,"imageIndex":1},{"imageOffset":18106924,"imageIndex":8},{"imageOffset":9553984,"imageIndex":8},{"imageOffset":18109168,"imageIndex":8},{"imageOffset":13128,"symbol":"_pthread_start","symbolLocation":116,"imageIndex":1},{"imageOffset":6472,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":763526,"name":"JavaScriptCore libpas scavenger","frames":[{"imageOffset":5252,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":39892,"symbol":"_pthread_cond_wait$VARIANT$mp","symbolLocation":1240,"imageIndex":1},{"imageOffset":17962000,"symbol":"scavenger_thread_main","symbolLocation":960,"imageIndex":11},{"imageOffset":13128,"symbol":"_pthread_start","symbolLocation":116,"imageIndex":1},{"imageOffset":6472,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]}],
  "usedImages" : [
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 7487066112,
    "size" : 212992,
    "uuid" : "3d363709-8d2d-3d1e-8cab-11d232e5d508",
    "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
    "name" : "libsystem_kernel.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 8030920704,
    "size" : 69632,
    "uuid" : "7e417a07-6533-3ee7-b0de-623b5fb464fd",
    "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
    "name" : "libsystem_pthread.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 6694789120,
    "size" : 507904,
    "uuid" : "0c058d0b-e8f0-36aa-9766-fa72ee100d98",
    "path" : "\/usr\/lib\/system\/libsystem_c.dylib",
    "name" : "libsystem_c.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 6914457600,
    "size" : 94208,
    "uuid" : "7821c7b7-c6b6-3e41-9b53-5c4f754dd470",
    "path" : "\/usr\/lib\/libc++abi.dylib",
    "name" : "libc++abi.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 6913425408,
    "size" : 229376,
    "uuid" : "ce5424bc-ae99-3876-9e37-6202060c145b",
    "path" : "\/usr\/lib\/libobjc.A.dylib",
    "name" : "libobjc.A.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 6519451648,
    "size" : 4444160,
    "uuid" : "a448b016-adb2-3875-8ad5-72e6635def1c",
    "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/CoreFoundation",
    "name" : "CoreFoundation"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 7065042944,
    "size" : 36864,
    "uuid" : "41ace28d-19a4-3850-a2f1-2bd9d6f5b9dd",
    "path" : "\/System\/Library\/PrivateFrameworks\/GraphicsServices.framework\/GraphicsServices",
    "name" : "GraphicsServices"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 6556360704,
    "size" : 24748032,
    "uuid" : "9766f134-0b1c-34a8-a8c9-f8cca8978fde",
    "path" : "\/System\/Library\/PrivateFrameworks\/UIKitCore.framework\/UIKitCore",
    "name" : "UIKitCore"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4372627456,
    "size" : 38666240,
    "uuid" : "dd223a6b-95c6-3a91-97d9-beaffe631a81",
    "path" : "\/private\/var\/containers\/Bundle\/Application\/CB051CA4-1ADB-42A9-AB8E-49B799AADFD9\/Ecoici.app\/Ecoici",
    "name" : "Ecoici"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4422664192,
    "size" : 344064,
    "uuid" : "5c4972a8-ef81-32dc-a848-42cc7f7874cf",
    "path" : "\/usr\/lib\/dyld",
    "name" : "dyld"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 6543630336,
    "size" : 3031040,
    "uuid" : "7482ad1b-76ee-38b4-8dac-0960f9f9521e",
    "path" : "\/System\/Library\/Frameworks\/Foundation.framework\/Foundation",
    "name" : "Foundation"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 6695636992,
    "size" : 19169280,
    "uuid" : "28f95f2f-f2e5-3b11-aee1-3e2bf1126972",
    "path" : "\/System\/Library\/Frameworks\/JavaScriptCore.framework\/JavaScriptCore",
    "name" : "JavaScriptCore"
  }
],
  "sharedCache" : {
  "base" : 6515916800,
  "size" : 2280374272,
  "uuid" : "6520633f-f93d-3fb3-8e7a-b9d9473f76d1"
},
  "vmSummary" : "ReadOnly portion of Libraries: Total=766.7M resident=0K(0%) swapped_out_or_unallocated=766.7M(100%)\nWritable regions: Total=773.0M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=773.0M(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nActivity Tracing                   256K        1 \nCG image                            16K        1 \nColorSync                           64K        4 \nCoreAnimation                      176K        3 \nFoundation                          16K        1 \nKernel Alloc Once                   32K        1 \nMALLOC                           542.8M       52 \nMALLOC guard page                  128K        8 \nSTACK GUARD                        192K       12 \nStack                             5072K       12 \nVM_ALLOCATE                        176K        3 \nWebKit Malloc                    192.0M        5 \nWebKit Malloc (reserved)          32.0M        1         reserved VM address space (unallocated)\n__CTF                               759        1 \n__DATA                            27.1M      584 \n__DATA_CONST                      50.6M      600 \n__DATA_DIRTY                      2320K      499 \n__FONT_DATA                          4K        1 \n__LINKEDIT                       187.8M        4 \n__OBJC_RO                         91.1M        1 \n__OBJC_RW                         3456K        1 \n__TEXT                           578.9M      609 \n__UNICODE                          592K        1 \ndyld private memory               1072K        3 \nmapped file                       49.4M       21 \nshared memory                       48K        3 \n===========                     =======  ======= \nTOTAL                              1.7G     2432 \nTOTAL, minus reserved VM space     1.7G     2432 \n",
  "legacyInfo" : {
  "threadTriggered" : {
    "queue" : "com.apple.main-thread"
  }
},
  "trialInfo" : {
  "rollouts" : [
    {
      "rolloutId" : "610d4ab6fc54bc33898403cd",
      "factorPackIds" : {
        "SIRI_UNDERSTANDING_MORPHUN" : "6201e52d867b8a6e14a893b7"
      },
      "deploymentId" : 240000230
    },
    {
      "rolloutId" : "60da5e84ab0ca017dace9abf",
      "factorPackIds" : {

      },
      "deploymentId" : 240000008
    }
  ],
  "experiments" : [
    {
      "treatmentId" : "fb58143a-d0d1-4465-a621-853f75606309",
      "experimentId" : "6192fb082171a2330e561df0",
      "deploymentId" : 400000022
    },
    {
      "treatmentId" : "dc6188db-da76-4777-9ee0-4bd129ce1e4a",
      "experimentId" : "61ae5b540a12026a0805a31f",
      "deploymentId" : 400000018
    }
  ]
}
}


J'ai eu depuis quelqu'un au téléphone qui m'a indiqué que je devais trouvé la raison du crash de l'appli sans plus de détail hormis faire un test au tout début pour savoir si l'utilisateur valide ou non l'accès à la localisation, comme l'a suggéré Popoy. Mais pour l'instant je galère avec l'insertion du code objective C. Je vais m'y coller ce week-end.
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 29 mai 2022 - 08:02
Ce qui est dit :
Au premier lancement, si l'on refuse INTENTIONNELLEMENT l'accès à la position, l'application plante. Lors des lancements suivants de l'application se bloque.
Conseil : modifie ton code pour prévoir le refus du suivi du positionnement de la part de l'utilisateur et redemande l'autorisation à chaque démarrage tant que l'utilisateur ne'laccepte pas.
Ceci-dit, mon application Android/iOS utilise le positionnement (back et foreground) ; et sous iOS, aucune demande d'autorisation n'est affichée (du moins en octobre 2021, date de mon dernier déploiement sous iOS).
La demande suscitant "le refus" est-elle affichée par ton code de ton cru ou bien est-ce iOS qui affiche une fenêtre système ?
Pourrais-tu partager une capture d'écran de cette fameuse demande ?

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Posté le 29 mai 2022 - 09:19
je n'ai pas essayé, mais avant de faire de l'objective C, je commencerais par mettre mes appels localisation dans un quand exeception, histoire de voir si je ne peux pas intercepter l'erreur et la gérer proprement en wlanguage

Comme le problème est facile à reproduire, ca devrait aussi être facile à tester...

Et ne pas oublier qu'il est interdit de faire un finprogramme ou équivalent avec apple, donc il faut laisser l'utilosateur dans l'appli ou il ne peut rien faire
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 29 mai 2022 - 10:15
Pascal c'est une demande système programmée dans le framework pcsoft
Il n'y a pas de fonctions (sauf erreur de ma part) qui renvoie ce que l'utilisateur a choisi.
Ça existe sur Android
D'où mon bout de code incomplet
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 29 mai 2022 - 10:27
Le problème c'est que je ne vois pas comment récupérer l’information comme quoi l'utilisateur a ou non accepté }:(

Ci-dessous l'invite d'ios

https://photos.app.goo.gl/kigt3Cr9dChbQGzv7

Popoy a bien mis un bout de code mais je n'arrive pas à le mettre en application (erreur = l'appel de code natif n'est pas disponible)

Je tourne en rond et je vois des pommes partout ;(
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 29 mai 2022 - 11:45
Je viens de prendre le temps de lire la doc sur la fonction AppleTrackingEtatAutorisation.
Il est écrit qu'à partir de iOS 14.5, les applications doivent obtenir l'autorisation de l'utilisateur avant de suivre son activité.
Je pense que je vais tomber dans le "piège" lors de la prochaine publication (ceci-dit, je fais déjà ce qu'il faut pour Android > 10)

Je pense aussi que la fenêtre iOS que tu as posté s'ouvre en l'absence d'une demande explicite de l'application et que le code ci-dessous devrait faire l'affaire :
SELON AppleTrackingEtatAutorisation()
CAS ateaAutorisé
Info("La vie est belle")
AUTRE CAS :
Info("Vous venez de refuser l'accès à votre position alors qu'elle est incontournable dans le fonctionnement de l'application","Veuillez relancer l'application et autoriser le suivi de positionnement")
retour
FIN


--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 29 mai 2022 - 12:01
Bien sûr tu dois utiliser WM27 !!!!

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 29 mai 2022 - 12:19
Je teste ça ce soir mais je pensais que ce n'était QUE pour la publicité 8)
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 29 mai 2022 - 19:54
Pascal, Avec ton code, j'ai directement dans wmdev "refusé".

Je ne suis toujours pas certain que AppleTrackingEtatAutorisation() valide l'autorisation de géolocalisation... c'est pas très clair dans la doc ;(
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 29 mai 2022 - 19:58
D'ailleurs en cherchant un peu :

https://doc.pcsoft.fr/?1410088136

Donc on est hors-sujet, du coup il serait important que pcsoft nous mette le même genre pour le track gps rapidement !
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 30 mai 2022 - 07:22
J'ai commencé à modifier mon projet
<Compile SI TypeConfiguration=iOS>
SELON AppleTrackingEtatAutorisation()
CAS ateaAutorisé
gbPermissionACCESS_FINE_LOCATION = VRAI
gbPermissionACCESS_BACKGROUND_LOCATION = VRAI
gbPermissionRECORD_AUDIO = VRAI
Info("La vie est belle")
CAS ateaIndéterminé
AppleTrackingDemandeAutorisationAsynchrone(AppleTrackingDemandeAutorisationAsynchrone_Callback)


AUTRE CAS :
Info("Vous venez de refuser l'accès à votre position alors qu'elle est incontournable dans le fonctionnement de l'application","Veuillez relancer l'application et autoriser le suivi de positionnement")
gbPermissionACCESS_FINE_LOCATION = FAUX
gbPermissionACCESS_BACKGROUND_LOCATION = FAUX
gbPermissionRECORD_AUDIO = FAUX
RETOUR
FIN


PROCEDURE INTERNE AppleTrackingDemandeAutorisationAsynchrone_Callback(EtatAutorisation)
SI EtatAutorisation <> ateaAutorisé ALORS
Info("Vous venez de refuser l'accès à votre position alors qu'elle est incontournable dans le fonctionnement de l'application","Veuillez relancer l'application et autoriser le suivi de positionnement")
gbPermissionACCESS_FINE_LOCATION = FAUX
gbPermissionACCESS_BACKGROUND_LOCATION = FAUX
gbPermissionRECORD_AUDIO = FAUX
RETOUR
FIN
FIN

<FIN>


--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 30 mai 2022 - 07:24
En relisant le code, j'ai ajouté qqu lignes
Ca devient :
<Compile SI TypeConfiguration=iOS>
SELON AppleTrackingEtatAutorisation()
CAS ateaAutorisé
gbPermissionACCESS_FINE_LOCATION = VRAI
gbPermissionACCESS_BACKGROUND_LOCATION = VRAI
gbPermissionRECORD_AUDIO = VRAI
Info("La vie est belle")
CAS ateaIndéterminé
AppleTrackingDemandeAutorisationAsynchrone(AppleTrackingDemandeAutorisationAsynchrone_Callback)


AUTRE CAS :
Info("Vous venez de refuser l'accès à votre position alors qu'elle est incontournable dans le fonctionnement de l'application","Veuillez relancer l'application et autoriser le suivi de positionnement")
gbPermissionACCESS_FINE_LOCATION = FAUX
gbPermissionACCESS_BACKGROUND_LOCATION = FAUX
gbPermissionRECORD_AUDIO = FAUX
RETOUR
FIN


PROCEDURE INTERNE AppleTrackingDemandeAutorisationAsynchrone_Callback(EtatAutorisation)
SI EtatAutorisation <> ateaAutorisé ALORS
Info("Vous venez de refuser l'accès à votre position alors qu'elle est incontournable dans le fonctionnement de l'application","Veuillez relancer l'application et autoriser le suivi de positionnement")
gbPermissionACCESS_FINE_LOCATION = FAUX
gbPermissionACCESS_BACKGROUND_LOCATION = FAUX
gbPermissionRECORD_AUDIO = FAUX
RETOUR
SINON
gbPermissionACCESS_FINE_LOCATION = VRAI
gbPermissionACCESS_BACKGROUND_LOCATION = VRAI
gbPermissionRECORD_AUDIO = VRAI
FIN
FIN

<FIN>


--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 30 mai 2022 - 19:01
@Pascal

D'ou sortent les variables bgPermissionxxxxxxxxx et à quoi servent-elles stp ?

Dans la doc ici : https://doc.pcsoft.fr/?1410088136 on ne parle pas de géolocalisation mais juste de suivi publicitaire non ?
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 30 mai 2022 - 19:45
Je viens de tester mon application.
Le code (les variables bgPermissionxxxx sont des variables globales de mon application) que j'indique ne sert pas pour la localisation. Il permet de gérer la fenêtre de suivi de l'utilisateur au sens publicitaire ; notons que "suivi" est ambigu car l'accès à la localisation est aussi un suivi.
La fenêtre système iOS liée à l'autorisation de localisation s'ouvre dès qu'on utilise une fonction utilisant le GPS.
Cette fenêtre n'apparaissait pas en octobre, mais entre temps iOS a été mis à jour (même après l'installation d'une de mes applications publiées en octobre (WM26), la fenêtre d'autorisation s'affiche) .
A ma connaissance, et contrairement à Android, il n'est pas possible de connaitre le choix de l'utilisateur en matière de localisation avec des fonctions WM.
J'ai ouvert un incident dans ce sens chez PCSoft.
Actuellement, je m'en sors en testant le GPSEtat : s'il n'est pas bon, j'affiche un message qui dit que les fonctions GPS ne sont pas activées, soit ^parce que le GPS n'est pas actif, soit parce que les autorisations ne sont pas accordées.
A suivre.

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 30 mai 2022 - 20:44
Certes mais on dirait que ce qui fait planter l'appli si l'utilisateur n'accepte pas est antérieur à l’exécution du code du projet de WM.

Et dès qu'on veut tester justement l'état du gps... l'appli plante. Pas dans wmdev bien sûr, mais dès qu'on est compilé et en exécution dans testflight par ex et donc en pré-validation par les testeurs d'Apple.

Si le AppleTrackingEtatAutorisation() gérait le gps ce serait fantastique mais ce n'est visiblement pas le cas.
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 02 juin 2022 - 06:34
Mon application vient d'être validée par Apple et elle est disponible en TestFlight

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 02 juin 2022 - 13:08
La mienne fonctionne (enfin sans plantage du à la loc !) en testflight et j’attends la validation...

Au niveau code rien de plus PAR CONTRE WM27 en 103n et quand j'ai redémarré le mac j'ai eu des mises à jour ainsi que dans Xcode 8)

J'attends le verdict...
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 02 juin 2022 - 17:11
Refusé !

Your app uses location data for features that are not relevant to a user's location. Specifically, your app is not functional when Location Services are disabled.
Next Steps
To resolve this issue, please revise your app so that your app is fully functional without requiring the user to enable Location Services.

Votre application utilise les données de localisation pour des fonctionnalités qui ne sont pas pertinentes pour l'emplacement de l'utilisateur. Plus précisément, votre application n'est pas fonctionnelle lorsque les services de localisation sont désactivés.
Prochaines étapes
Pour résoudre ce problème, veuillez modifier votre application de manière à ce qu'elle soit entièrement fonctionnelle sans que l'utilisateur ait à activer les services de localisation.


Je vais me les faire !
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 02 juin 2022 - 19:35
Comment utilises-tu les fonctions de GPS ?
Lorsque tu génères l'application, il y a une page WM dans laquelle tu dois indiquer pourquoi tu utilises telle ou telle fonctionnalité.
Dans AppStore, as-tu rempli les confidentialités de l'application ?

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 03 juin 2022 - 08:55
Voici l'écran de réglage des permissions






Ce qui est bien pris en compte dans appstoreconnect





Ces pommes me rendent dingues, avec Google c'est passé comme une lettre à la poste la ça fait 2 mois que ça dure
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 03 juin 2022 - 15:02
Et coté WM, que fais-tu avec le GPS ? Comment l'initialises-tu ? Testes-tu le GPSEtat pour signaler au quidam que son GPS n'est pas activé ou bien qui est probable qu'il a refusé l'accès à la position ?
Par exemple, dans mon projet, sur les boutons du menu qui lancent une fonction utilisant la position j'ai ajouté
SI gnQuidGPS <> gpsActivé ALORS
Info("GPS NON OPERATIONNEL","Les fonctions de positionnement ne sont pas accessibles, soit parce que le GPS n'est pas activé, soit parce que vous n'avez pas autorisé l'application à les utiliser.")
RETOUR
FIN
SI gbMyAskIdGestionnaire=FAUX ALORS
OuvreFenêtreMobile(FEN_CITATION_AFFICHE,"NEW",3)
SINON
OuvreFenêtreMobile(FEN_CITATION_AFFICHE,"NEW",16)
FIN


où la variable globale gnQuidGPS est valorisée dans le CallBack de la fonction GPSEtat

gPROC_INIT_GPS()
GPSEtat(gPROC_GPS_CHANGEMENT_ETAT)
gPROC_GPS_CHANGEMENT_ETAT(GPSEtat())


--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 03 juin 2022 - 15:26
Oui je teste maintenant le GPSEtat dans le code du projet.

Avant je le mettais dans les boutons qui demandais l'accès au GPS mais c'est ainsi que l'appli plantait sous iOS quand l'user refusait la localisation dès l'ouverture de l'appli.

J'ai mis dans le code du projet :
SI GPSEtat() <> gpsActivé ALORS
OuvreFenêtreMobile(FenErreur)
FIN

Et plus de plantage... par contre les pommes me refusent toujours l'appli :-(
Membre enregistré
964 messages
Popularité : +16 (20 votes)
Posté le 06 juin 2022 - 18:47
Toujours avec les mêmes explications ?

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 06 juin 2022 - 20:31
Cerise sur le sujet
Il faut vérifier si on est >= iOS 14
Voir un exemple en Swift
https://stackoverflow.com/questions/64073811/authorizationstatus-for-cllocationmanager-is-deprecated-on-ios-14
@argus, si tu as une solution sans passer par Swift, je suis preneur.
Membre enregistré
191 messages
Popularité : +3 (3 votes)
Posté le 07 juin 2022 - 19:37
@Pascal
Non là c'est parce qu'il voulait absolument un compte de test. Contre toute attente, J'ai renvoyé en leur expliquant que l'appli n'était pas prévue pour fonctionner avec un compte test, du coup ils ont créé un vrai compte et tada !!!! accepté... 2 mois après la validation Play Store !
Donc tout ok MAIS avec dernière version xcode et WM27 103n.