Mam pewne wartości generowane z mojego kodu natywnego, które chciałbym przekazać do phonegap. Dane te są generowane w czasie rzeczywistym i nie są bezpośrednio zależne od działań użytkownika poprzez gui phonegap. Mój kod natywny jest częścią wtyczki, którą zrobiłem.przekazywanie wartości z kodu natywnego iOS do cordova
Jaki jest najlepszy sposób podejścia do tego? Chcę mieć funkcję wysyłania danych w dowolnym czasie i mieć słuchacza po stronie cordova. Używam Cordova 1.5 z Xcode 4.3.
Oto co mam do tej pory:
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
machnięcia .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]];
}
...
Kod, który mam teraz, nie ma nic do robienia tego, co chcę. Naprawdę nie wiem, jak skonfigurować kod zarówno w wersji cordova, jak i natywnej.
Podejście, które opisujesz, brzmi jak bardzo rozsądny sposób na zrobienie tego, czy jest to jedyne pytanie, czy masz problemy z jego uruchomieniem? – Brian
@rhooligan Mam problem z uruchomieniem go, nie jestem obeznany z Objective-C i jego interakcją z phonegapem. Byłoby wspaniale mieć jakiś przykład. Dzięki! – mugetsu
Czy możesz opublikować swój kod Celu-C, a następnie pokazać nam swój kod Cordova? Napisałem kilka wtyczek, gdy wciąż nazywało się PhoneGap i jest kilka konkretnych rzeczy, które musiałeś zrobić w pakiecie, jak również sekwencja inicjująca, którą musisz wywołać z JS. Od tego czasu system mógł ulec pewnym zmianom. – Brian