[Résolu] iOS8 trouver un fichier dans l'App
ObjectiveSwift
Membre
Bonjour à tous,
Voilà , j'ai cette ligne de code qui fonctionne très bien sous iOS 7 :
NSString *errorPath = [NSString stringWithFormat:@%@/www/error.html", resourcePath];
self.errorRequest = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:errorPath]];
Mais qui ne fonctionne plus du tout sous iOS 8. On utilise Cordova et le fichier est dans notre projetCordova/dossier1/dossier2. Ce ne sont pas les dossiers standard comme "documents".
De plus je précise que nous travaillons dans un Workspace, donc le fichier ce trouve dans projetCordova mais notre code qui appel ce fichier est dans notreProjet. Voilà , histoire de vous embrouiller un peu
Est-ce que vous avez une idée ? J'ai essayé des trucs comme URLForRessource mais pour le moment ça ne donne rien.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Merci pour ton soutien et ton aide
(sinon oui je partage ton avis sur Cordova, j'aime pas ça mais j'ai pas choisi)
Que veux-tu faire avec ton code? Je ne comprends pas où tu veux en venir.
Trouver un fichier, tout simplement. Si je fais :
La console affiche bien EXIST. Par contre, quand je veux accéder à ce fichier pour l'ouvrir dans une UIWebView, là j'ai une erreur et le fichier n'est pas affiché. Sous iOS 7 ça fonctionne très bien, dès que je passe avec iOS 8, plus rien.
Apparemment il y a un bug connu avec WKWebView mais bon, je doute qu'il existe une relation entre UI/UKWebView sur ce sujet.
Quand j'affiche le path de mon fichier, sous iOS 8 il commence par private/ ce qui n'est pas le cas sous iOS 7.
Est-ce plus clair ?
Quant à la WebView, même question, quelle est sa baseURL à partir de laquelle il construit les chemins absolus ?
Juste donner le nom du fichier comme ca ne peut pas marcher si tu ne sais pas a quel dossier le chemin est relatif.
(au passage, quel intérêt d'appeler stringWithFormat pour lui passer une chaà®ne constante sans format ?!)
Concernant ta remarque sur le stringWithFormat, c'est juste que j'ai fais plusieurs tests et que je changeais la construction de la string mais dans ce cas, effectivement c'est inutile.
Après vérification (j'ai ouvert le paquet de l'App en fait), le fichier que je recherche ce trouve dans www/.
Donc si je fais ceci :
Est-ce que c'est bon ? Je suis en train de lire la doc sur le File System et ça fonctionne maintenant correctement sur iOS 7 et 8.
Par contre, dans la foulé si je fais :
NON est affiché.
Hey, what did you expect?
Mon errorRequest est bien un fichier qui est présent sur le device et après l'avoir affiché dans la console, ça ne commence pas par http mais file:///
Ou alors j'ai pas compris ta réponse.
Chez moi, cette méthode marche très bien :
Utilisée pour afficher une notice au format pdf dans un WebView.
Pourquoi veux-tu charger des erreurs???
Mais je suis d'accord, pourquoi vouloir charger les erreurs, sous la forme d'URL qui plus est, la demande me semble assez étonnante.
C'est très simple, l'App est entièrement basé sur une UIWebView, si une erreur est déclenché (typiquement, pas de connection, WiFi coupé par exemple) et bien dans ce cas on affiche la page html aux couleurs du client. C'est tout.
Merci pour ces précisions ali.
J'ai jamais compris l'usage du baseURL, tu veux dire que si je fais un truc du genre setBaseURL et que je lui donne mon error.html, il chargera par défaut cette adresse ?
La baseURL c'est... bah la baseURL quoi, celle à partir de laquelle il détermine les URL complètes pour les URLs relatives... enfin c'est expliqué dans landic, et puis cest un concept commun au Web/HTTP et cest pas propre au WebKit ou aux WebViews, c'est la baseURL pour tes URL relatives quoi...
...