iOS : développer une Web App avec Phonegap / Cordova Ajouter le plugin Phonegap dans iOS

Un peu de configuration est nécessaire dans notre projet iOS. Nous devons rajouter notre plugin Phonegap dans la liste des plugins reconnus en ouvrant le fichier Cordova.plist et en rajoutant l'entrée de type String MonPlugin / MonPlugin dans la partie Plugins. Nous devons également importer le fichier CDV.h du framework Cordova.framework pour créer le plugin.

Ensuite, nous créons la classe MonPlugin qui hérite de CDVPlugin et nous redéfinissons la méthode d'instance execute:withDict:. Nous récupérons dans un premier temps les paramètres et les options en faisant attention à ce que l'ordre corresponde bien à celui des arguments de la partie JavaScript. Nous définissons trois constantes pour nous aider à référencer les paramètres car les paramètres sont dans un tableau, et cela n'apparait pas clairement dans la partie JavaScript.

Nous affichons la progression du traitement de notre plugin iOS dans la partie JavaScript avec la méthode writeJavascript:. Nous lui donnons en argument le nom de la fonction de progression JavaScript (traitementProgression) avec ses paramètres attendus. Le nom de la fonction a été transmis à la fonction execute:withDict: depuis le code JavaScript. Le résultat de la progression est l'affichage de OK dans l'élément HTML identifié par la chaîne progression.

De la même manière, nous pouvons appeler dans la partie JavaScript soit la fonction traitementSucces, soit la fonction traitementErreur selon le résultat obtenu à la fin du traitement du plugin iOS. Nous constatons également que la sortie de la fonction console.log de la partie JavaScript s'affiche dans la console de Xcode. Cela facilite le débogage, surtout si nous respectons une convention du type : rajouter JS devant les messages concernant la partie JavaScript et iOS devant ceux de la partie iOS.

// Fichier MonPlugin.h
#import <Foundation/Foundation.h>
#import <Cordova/CDV.h>

@interface MonPlugin : CDVPlugin
-(void) execute:(NSMutableArray*)arguments
withDict:(NSMutableDictionary*)options;
@end
// Fichier MonPlugin.m
#define SUCCESS 0
#define ERREUR 1
#define PROGRESSION 2

#import "MonPlugin.h"

@implementation MonPlugin

-(void) execute:(NSMutableArray*)arguments
withDict:(NSMutableDictionary*)options {
NSLog(@"SUCCESS : %@", [arguments objectAtIndex:SUCCESS]);
NSLog(@"ERREUR : %@", [arguments objectAtIndex:ERREUR]);
NSLog(@"PROGRESSION : %@",
[arguments objectAtIndex:PROGRESSION]);

NSLog(@"OPTIONS : %@", options);
[super writeJavascript: [NSString
stringWithFormat:@"javascript 'valeurProgression' : %@ });",

[arguments objectAtIndex:PROGRESSION],
@"'OK'"]];
}

-(void)dealloc {
[super dealloc];
}
@end
Sortie du programme
SUCCESS : traitementSucces
ERREUR : traitementErreur
PROGRESSION : traitementProgression
OPTIONS : {
cle = 1;
}
traitementProgression dans la partie JS

Voici le résultat visuel de notre nouveau plugin après avoir cliqué sur le lien :

capture eni
Capture Eni © Eni