Ho alcuni valori generati dal mio codice nativo che vorrei passare a PhoneGap. Questi dati sono generati in tempo reale e non sono direttamente influenzati dalle azioni dell'utente attraverso il gui di PhoneGap. Il mio codice nativo è parte di un plugin che ho creato.passaggio valore da codice nativo iOS a cordova
Qual è il modo migliore per avvicinarsi a questo? Voglio avere una funzione per inviare i dati in qualsiasi momento e avere un ascoltatore sul lato cordova. Sto usando Cordova 1.5 con Xcode 4.3.
Ecco quello che ho finora:
swipe.js:
var swipe={
callNativeFunction: function (success, fail, resultType) {
return Cordova.exec(success, fail,
"ca.swipe",
"nativeFunction",
[resultType]); }
};
index.html:
...
function callNativePlugin(returnSuccess) {
swipe.callNativeFunction(nativePluginResultHandler, nativePluginErrorHandler, returnSuccess);
}
function nativePluginResultHandler (result) {
alert("SUCCESS: \r\n"+result);
}
function nativePluginErrorHandler (error) {
alert("ERROR: \r\n"+error);
} ... <body onload="onBodyLoad()"> <h1>Hey, it's Cordova!</h1>
<button onclick="callNativePlugin('success');">Success</button>
<button onclick="callNativePlugin('error');">Fail</button>
</body> ...
swipe.h:
...
@interface swipe : CDVPlugin
- (void) nativeFunction:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
@end
magnetiche .m:
...
- (void) nativeFunction:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
NSLog(@"Hello, this is a native function called from PhoneGap/Cordova!");
//get the callback id
NSString *callbackId = [arguments pop];
NSString *resultType = [arguments objectAtIndex:0];
NSMutableArray *GlobalArg=arguments;
CDVPluginResult *result;
if ([resultType isEqualToString:@"success"]) {
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString: @"Success :)"];
//writes back the smiley face to phone gap.
[self writeJavascript:[result toSuccessCallbackString:callbackId]];
}
...
Il codice che ho adesso non ha nulla per fare ciò che voglio. Non sono sicuro di come impostare il codice sia in cordova che in nativo.
L'approccio che descrivi sembra un modo molto ragionevole per farlo, è l'unica domanda o hai difficoltà a farlo funzionare? – Brian
@rhooligan Ho difficoltà a farlo funzionare, non ho molta familiarità con Objective-C e la sua interazione con PhoneGap. Sarebbe bello avere un esempio di qualche tipo. Grazie! – mugetsu
Puoi pubblicare il tuo codice Objective-C e poi mostrarci il tuo codice Cordova? Ho scritto alcuni plug-in quando era ancora chiamato PhoneGap e ci sono alcune cose specifiche che dovevi fare nel bundle e una sequenza di init che dovevi chiamare da JS. Tuttavia, il sistema potrebbe aver subito alcune modifiche da allora. – Brian