web-dev-qa-db-fra.com

Intégrer un moteur JavaScript dans une application iOS

Je me demande si quelqu'un a réussi à porter un moteur/interprète javascript sur iOS. J'écris un jeu pour iPhone sur lequel j'aimerais utiliser Javascript comme langage de script de haut niveau (IA, gameplay, etc.), mais pour cela, je dois compiler le moteur JS dans une bibliothèque statique et le lier à mon programme objectiveC pour iPhone OS. Il y a un moteur JS candidat que je regarde, mais je n'ai trouvé aucun cas réussi pour le faire.

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

  • moteur javascript V8 de google
  • spiderMonkey de Mozilla

L'alternative consiste à utiliser UIWebView's Interface de rappel Javascript, mais qui nécessite de charger l'intégralité de UIWebView dans la mémoire et les expériences que j'ai entendues sont que ses performances sont généralement lentes.

Appréciez si quelqu'un a eu des expériences similaires de faire ceci ou connaît des références pour cela!

[MIS À JOUR] comme l'a mentionné Kostis, Apple introduit JavascriptCore dans la WWDC 2013

40
dennycd

Pour les futurs téléspectateurs, il y a maintenant le cadre JavaScriptCore, introduit dans le nouvel iOS 7. Il fait de la magie! Emballage, déballage des valeurs de/vers JS/Objective-C, fonctions d'appel, rappels, tout!

Malheureusement, la documentation est vraiment médiocre pour le moment. Vous pouvez trouver une présentation de événement WWDC 201 et quelques informations supplémentaires dans les fichiers d'en-tête (cmd + cliquez sur le nom du fichier d'en-tête dans Xcode). Il existe également des didacticiels sur les internets qui copient simplement ce que fait le gars dans la présentation de la WWDC.

Je l'ai utilisé pour l'un de mes projets, c'est vraiment puissant. La seule chose que je n'ai pas aimé, c'est qu'il a transmis des objets de JS à ObjC par valeur, c'est-à-dire que la référence a été perdue. Il peut y avoir une solution de contournement à cela, mais je n'ai rien trouvé sans une documentation appropriée.

J'espère que cela aidera quelqu'un :)

14
Kostis

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

  1. JavaScriptCore-iOS
  2. iMonkey

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

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

Prendre plaisir.

25

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

4
Nik

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

1
ccxvii