40 votes

Intégrer un moteur JavaScript dans une application iOS

Je me demande si quelqu'un a porté avec succès un moteur javascript/interprète pour iOS. Je suis en train d'écrire un iPhone jeu que je voudrais utiliser du Javascript, le haut niveau de langage de script (AI, gameplay, etc.), mais pour ce faire, j'ai besoin de compiler le moteur JS dans une bibliothèque statique, et de le lier à l'encontre de mon objectiveC programme pour iPhone OS. Il y a quelques candidat JS moteur je suis en train de regarder, mais je ne pouvais pas trouver n'importe quel cas de succès pour ce faire.

Voici le js moteur j'espérais utiliser pour iOS

  • google est le moteur javascript V8
  • mozilla SpiderMonkey

L'alternative est d'utiliser UIWebView's Javascript interface de rappel, mais qui nécessite le chargement de l'ensemble de l' UIWebView dans la mémoire et les expériences que j'ai entendu, c'est qu'il est généralement lent en performance.

Apprécier si quelqu'un a eu des expériences similaires de le faire ou de savoir toutes les références pour que!

[Mise à JOUR] comme Kostis mentionné, Apple a introduit JavascriptCore dans la WWDC 2013

25voto

Johannes Fahrenkrug Points 12795

Il y a deux projets qui pourraient vous intéresser:

  1. JavaScriptCore-iOS
  2. iMonkey

Il est tout à fait possible de construire et de les expédier un moteur JavaScript avec votre application iOS, voir http://www.phoboslab.org/log/2011/04/ios-and-javascript-for-real-this-time. Le titane n'est que trop: https://github.com/appcelerator/webkit_titanium/tree/master/Source/JavaScriptCore. Voir aussi http://www.phoboslab.org/log/2011/06/javascriptcore-project-files-for-ios.

J'ai aussi fait une petite application qui montre comment utiliser JSC sur iOS: https://github.com/jfahrenkrug/AddressBookSpy

Profitez de.

14voto

Kostis Points 195

Pour les futurs téléspectateurs, maintenant, il est le JavaScriptCore cadre, introduit dans le nouveau iOS 7. Il fait de la magie! D'emballage, de déballage de valeurs de/JS/Objective-C, les appels de fonctions, les rappels, tout!

Malheureusement, la documentation est vraiment pauvre pour le moment. Vous pouvez trouver une présentation de la WWDC 2013 de l'événement et quelques infos dans les fichiers d'en-tête (cmd+clic sur le fichier d'en-tête nom dans Xcode). Il y a aussi un tutoriel autour de la internets qui il suffit de copier ce que le gars dans la WWDC présentation ne.

Je l'ai utilisé pour un de mes projets, c'est vraiment puissant. La seule chose que je n'aime pas, c'est qu'il a passé des objets JS pour ObjC par valeur, c'est à dire une référence a été perdu. Il y a peut être une solution de contournement pour ce problème, mais je ne pouvais pas trouver quoi que ce soit sans documentation appropriée.

Espérons que cela va aider quelqu'un :)

4voto

dig Points 1622

Jetez un coup d'œil au projet open source Ejecta , qui intègre JavaScriptCore. Il fournit l'API de canevas HTML5 et utilise OpenGL & OpenAL.

1voto

ccxvii Points 566

Si vous souhaitez finalement porter votre jeu vers autre chose qu'iOS (ou si vous avez d'autres raisons d'éviter les interfaces propriétaires d'Apple), vous pouvez utiliser MuJS . C'est une petite bibliothèque fournissant un interpréteur JavaScript facile à intégrer et à étendre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X