Bonjour,

Mon appli supporte 3 plateformes : iOS, Android et Browser.

Pour un plugin, j'ai besoin d'un code natif sur iOS, mais pas sur Android pour qui le javacript utilisé pour le Browser fonctionne... sauf que je n'arrive pas à le packager sous forme de plugin JS pour la plateforme Android.

Mon plugin.xml ressemble à ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    <platform name="android">
        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="MonPlugin">
                <param name="browser-package" value="MonPlugin" />
            </feature>
        </config-file>

        <config-file target="AndroidManifest.xml" parent="/manifest">
[...]
        </config-file>
        
        <js-module src="src/browser/MonPluginDelegate.js" name="MonPluginDelegate">
            <runs />
        </js-module>  
    </platform>

    <platform name="browser">
        <config-file target="config.xml" parent="/*">
            <feature name="MonPlugin">
                <param name="browser-package" value="MonPlugin" />
            </feature>
        </config-file>

        <js-module src="src/browser/MonPluginDelegate.js" name="MonPluginDelegate">
            <runs />
        </js-module>    
    </platform>
Début de MonPlugin.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
var exec = require('cordova/exec');
Fin de MonPluginDelegate.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
require("cordova/exec/proxy").add("MonPlugin", module.exports);
module.exports contient les méthodes appelées par MonPlugin.js comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
exec(success, error, 'MonPlugin', 'call', [{...}]);
La version browser fonctionne parfaitement. J'ai tenté d'ajouter les zones en gras dans la platform Android pour avoir le meme comportement que sur le browser, a savoir : l'application web appelle les méthodes de MonPlugin.js, qui fait un exec censé être redirigé vers MonPluginDelegate.js chargé/packagé par cordova... sauf que sur Android ne ça marche pas; aucun appel n'arrive sur MonPluginDelegate.js. Et la je sèche ! Une idée ?

Auquel cas comment fait-on dans mon cas ? Je fais un gros if (iOS) dégueulasse ? avec dans ce cas seulement l'appel au plugin... ça veut dire que j'ai du code équivalent packagés différemment...