GeotrekCE / Geotrek-mobile

Cross-platform native app
https://geotrek.fr
BSD 2-Clause "Simplified" License
24 stars 10 forks source link

Connexion avec les données (mobileApiUrl) #294

Closed pnrma closed 2 years ago

pnrma commented 2 years ago

Je teste la version 3.10.2 et j'ai un problème de connexion avec les données que je n'avais pas avec la précédente version testée, à savoir la 3.10.0. J'imagine que c'est lié à l'utilisation du "native http".

Y a t-il une modification à effectuer du côté de la config Nginx sur le serveur où se trouve les données?

Actuellement la config concernant les données mobiles ressemble à ça :

   location ~ ^/mobile/(.*)$ {
         add_header Access-Control-Allow-Origin "*";
         add_header Access-Control-Allow-Methods "GET, OPTIONS";
         add_header Vary "Accept-Language";
         root /var/www/app/mobile/;
         try_files /$http_accept_language/$1 /nolang/$1 =404;
    } 
bastyen commented 2 years ago

Aucune modification n'est nécessaire. Au contraire, vous pouvez supprimer la ligne add_header Access-Control-Allow-Origin "*";. Êtes-vous sûr que vous renseigner la bonne url ? Les fichiers existent ? Je sais qu'il y a un problème de droit avec une version de Geotrek admin qui est corrigé avec la 2.87.2.

bastyen commented 2 years ago

Je viens de tester avec votre api et l'application fonctionne. J'imagine que vous avez fait une modification côté serveur.

pnrma commented 2 years ago

Je n'ai pas modifié la config serveur. De mon côté lorsque je teste, les urls qui sont appelés par l'application ne semblent pas prendre en compte la langue et donc cherche des fichiers à la racine du dossier api au lieu d'aller les chercher dans le dossier de langue correspondant.

Exemple :

- "url":"https:\/\/www.destination-parc-monts-ardeche.fr\/mobile\/treks.geojson"
- "url":"https:\/\/www.destination-parc-monts-ardeche.fr\/mobile\/contour\/contour.geojson"

Du coté de la config appli, c'est la même que pour la version 3.10.0 qui fonctionne chez moi.

bastyen commented 2 years ago

Sur quelle plateforme ?

pnrma commented 2 years ago

Je teste sur IOS car sur Android l'application bloque après le splashscreen sur cette version de mon côté.

bastyen commented 2 years ago

Je viens de créer une nouvelle version qui prend en compte les randonnées qui n'ont pas toutes les informations à afficher de disponibles. Je me suis aperçu de ce problème en testant l'application avec votre api. Néanmoins, je ne pense pas que ça corrigera votre problème. Je viens de tester une version android et l'application accède aux données. Pouvez-vous simplement cloner le dépôt actuel, renseigner la mobileApiUrl dans le fichier environment.prod.ts et suivre les étapes du readme pour savoir si ça fonctionne aussi pour vous ?

bastyen commented 2 years ago

Vous pouvez aussi essayer depuis votre version actuelle ces commandes :

npm install
npx ionic build --configuration production
npx cap sync
npx trapeze run config.yaml

Je mettrai à jour le readme pour expliquer comment mettre à jour l'application

pnrma commented 2 years ago

Je viens de retester en re-clonant le dépôt actuel et en renseignant seulement mobileApirUrl et j'obtiens la même chose, à savoir une récupération des données qui ne se fait pas. Ça semble être à chaque fois le sous dossier de langue qui n'est pas pris en compte.

Voilà les erreurs, filtrées sur les urls qui répondent par 404

⚡️  TO JS {"url":"https:\/\/www.destination-parc-monts-ardeche.fr\/mobile\/settings.json","status":404,"data":"<html>\r\n<head><title>404 Not Found<\/title><\/head>\r\n<body bgcolor=\"white\">\r\n<center><h1>404 Not Found<\/h1><\/center>\r\n<hr><center>nginx<\/cente
⚡️  TO JS {"url":"https:\/\/www.destination-parc-monts-ardeche.fr\/mobile\/contour\/contour.geojson","status":404,"data":"<html>\r\n<head><title>404 Not Found<\/title><\/head>\r\n<body bgcolor=\"white\">\r\n<center><h1>404 Not Found<\/h1><\/center>\r\n<hr><center>ng
pnrma commented 2 years ago

Pourtant la langue semble bien être récupérée

To Native ->  Device getLanguageCode 86837877
⚡️  TO JS {"value":"fr"}
bastyen commented 2 years ago

La version Android fonctionne. Il y a un problème avec la version iOS. Le plugin native http ajoute lui-même un header accept-language puis le notre au lieu de le remplacer. Je vais y remédier.

pnrma commented 2 years ago

Ok merci

bastyen commented 2 years ago

La version iOS fonctionne à partir de la 3.10.4

pnrma commented 2 years ago

Je confirme que cette version fonctionne sous IOS et Android. Merci !