Comment puis-je écrire une application iPhone entièrement en JavaScript sans en faire une application Web?

StackOverflow https://stackoverflow.com/questions/64420

  •  09-06-2019
  •  | 
  •  

Question

Je ne veux pas prendre le temps d'apprendre Obj-C. J'ai passé plus de 7 ans à programmer des applications Web. Ne devrait-il pas y avoir un moyen d'utiliser WebView et d'écrire simplement l'application entière en javascript, en récupérant les fichiers directement à partir des ressources du projet?

Était-ce utile?

La solution

J'ai trouvé la réponse après avoir cherché partout. Voici ce que j'ai fait:

  1. Créez un nouveau projet dans XCode. Je pense avoir utilisé l'application basée sur les vues.

  2. Faites glisser un objet WebView sur votre interface et redimensionnez-le.

  3. À l'intérieur de votre WebViewController.m (ou un fichier portant le même nom, en fonction du nom de votre vue), dans la méthode viewDidLoad:

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];  
    NSData *htmlData = [NSData dataWithContentsOfFile:filePath];  
    if (htmlData) {  
      NSBundle *bundle = [NSBundle mainBundle]; 
      NSString *path = [bundle bundlePath];
      NSString *fullPath = [NSBundle pathForResource:@"index" ofType:@"html" inDirectory:path];
      [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:fullPath]]];
    }
  4. Tous les fichiers que vous avez ajoutés en tant que ressources au projet sont disponibles pour utilisation dans votre application Web. J'ai un fichier index.html contenant javascript, css et fichiers image sans aucun problème. La seule limitation que j'ai trouvée jusqu'à présent est que je ne peux pas créer de nouveaux dossiers, de sorte que tous les fichiers encombrent le dossier des ressources.

  5. Astuce: assurez-vous que vous avez ajouté le fichier en tant que ressource dans XCode ou le fichier ne sera pas disponible. J'ai ajouté un fichier vide dans XCode, puis glissé mon fichier dans le viseur. Cela a fonctionné pour moi.

Remarque: je me rends compte que Obj-C ne doit pas être si difficile à apprendre. Mais comme cette application existe déjà dans JS et que je sais que cela fonctionne dans Safari, le cycle de développement est beaucoup plus rapide pour moi. Un jour, je suis sûr que je vais devoir m'effondrer et apprendre Obj-C.

Quelques autres ressources que j'ai trouvées utiles:

Appel de Obj-C à partir de javascript: appelant objective-c depuis javascript

Appel de javascript depuis Obj-C: iphone développement d'applications pour les pirates Web

Lecture de fichiers à partir d'un lot d'applications: uiwebview

Autres conseils

Découvrez PhoneGap à l'adresse http://www.phonegap.com . Ils affirment que cela vous permet d'intégrer du JavaScript, HTML et CSS dans une application iPhone native.

Pour ceux qui le font sur iPhone 2.1 (peut-être 2.0), vous n'avez PAS besoin de créer de services spéciaux pour le stockage de données local. MobileSafari semble prendre en charge l'API de base de données HTML5 HTML5 / WHATWG. Cette API est identique à celle prise en charge par les versions récentes des ordinateurs de bureau Safari et Firefox.

Si vous utilisez une boîte à outils telle que Dojo ou ExtJS qui offre une abstraction de stockage, votre code devrait fonctionner avec pratiquement tous les navigateurs modernes, y compris MobileSafari.

Pour tester, ouvrez http://robertsanders.name/dev/stackoverflow/html5.html sur votre iPhone.

Si vous ouvrez cette page puis examinez le système de fichiers d'un iPhone jailbreaké, vous devriez voir une base de données quelque part dans / private / var / mobile / Bibliothèque / WebKit / Databases /. Il existe même un répertoire de bases de données ouvertes sur le Web.

  

root # sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db   SQLite version 3.5.9 Entrez " .help " pour   instructions

     

sqlite > .databases   fichier de nom seq

           

0 main /private/var/mobile/Library/WebKit/Databases/Databases.db

     

sqlite > .tables

     

Origines des bases de données

     

sqlite > sélectionnez * dans les bases de données;

     

1 | http_robertsanders.name_0 | NoteTest | Exemple de base de données | API | 20000 | 0000000000000001.db

     

sqlite > sélectionnez * parmi Origins;

     

http_robertsanders.name_0 | 5242880

Vous pouvez créer une application sans connaître d'obj-C. Le cadre QuickConnectiPhone vous permet de le faire. Découvrez http://tetontech.wordpress.com pour savoir comment l'utiliser, ainsi que d'autres moyens de faire quoi vous avez demandé.

Vous devriez avoir le wrapper natif écrit en Objective C. Ce wrapper peut contenir très peu de lignes de code (comme, 10) nécessaires pour créer une vue Web et la naviguer vers l'adresse indiquée sur Internet (où réside votre application). Mais dans ce cas, votre application doit être une application Web complète (je veux dire, utilisez non seulement le JavaScript, mais également du code HTML pour le balisage).

J'ai rencontré le même problème. J'ai déjà un jeu entièrement écrit en Javascript. J'aimerais créer une version conviviale pour iPhone, mais Obj-C est une overkill. Ce que j'ai fini par utiliser, c'est d'utiliser WebView pour pointer vers une URL spéciale de l'application iPhone. Après réflexion, je suppose que je pourrais simplement déplacer ces fichiers dans le répertoire de l'application et les exécuter localement.

Il n'y a pas moyen de faire cela avec les API Apple actuelles. Votre pari le plus proche est d'écrire une application iPhone native simple qui intègre le navigateur Webkit. Cela vous permettra de parcourir votre application xhtml / js localement.

Si vous souhaitez stocker des données, vous devez aller plus loin et inclure un serveur HTTP léger qui met votre application en serveur et fournit des appels pour stocker et récupérer des données. Ce n’est probablement pas une solution idéale pour vous, mais peut-être moins de travail qu’une application complète Obj-C.

En remarque, Obj-C est assez facile à apprendre. Il y a des tonnes d'exemples dans le SDK. La communauté est forte et répondra bien aux questions sans hésitation.

consultez le nouveau livre d'o'reilly sur le sujet

J'utilise Phonegap depuis un moment et cela semble donner les meilleurs résultats pour moi. Je posterai mon expérience dans une semaine ou deux avec un lien vers mon application.

Titanium Mobile est également une option - il vous permet écrire du code JavaScript traduit en Objective-C.

Au moins 2 autres personnes ont mentionné phonegap, mais je pensais que je posterais ça aussi et mentionnerais qu'Apple avait approuvé le framework phonegap. Ainsi, votre application ne sera pas rejetée par Apple uniquement parce que vous utilisez phonegap.

Article de blog sur phonegap et Apple - http: / /blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/

Phone Gap Home

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top