2016-07-15 3 views
0

Ich habe eine Cordova App erstellt und iOS Plattform erstellt. Ich habe eine Anforderung, eine Objective-C Methode in Xcode zu verursachen und sie von JavaScript/HTML Seite aufzurufen.Müssen eine Objective-C-Methode in Xcode erstellen und rufen Sie von JavaScript Cordova App

Der Code in AppDelegate.h ist

#import <Cordova/CDVViewController.h> 
#import <Cordova/CDVAppDelegate.h> 

@interface AppDelegate : CDVAppDelegate {} 

@end 

Der Code in AppDelegate.m ist

#import "AppDelegate.h" 
#import "MainViewController.h" 

@implementation AppDelegate 

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 
{ 
    self.viewController = [[MainViewController alloc] init]; 
    return [super application:application didFinishLaunchingWithOptions:launchOptions]; 
} 

@end 

Jeder Schritt-für-Schritt-Tutorial oder Beispiel?

+0

Was eine "Xcode-Funktion" ist? – Droppy

+0

Ziel C-Funktion? Ich bin neu zu xocde/objective C. Need ist ein Aufruf von Javascript und print NSLOG (@ "Erfolgreich eine obj c Methode von einer Javascript-Funktion aufgerufen"); – GMan

Antwort

1

In Cordova wird eine native Funktion, die von JavaScript aufgerufen werden kann, mit einem Plugin erstellt. Werfen Sie einen Blick auf die Plugin Development Guide, um Ihr eigenes Plugin zu erstellen, oder suchen Sie nach already existing plugins, die die von Ihnen benötigte Funktionalität implementieren.

1. Deklarieren JavaScript-Funktion

window.echo = function(str, callback) { 
    cordova.exec(callback, function(err) { 
     callback('Nothing to echo.'); 
    }, "Echo", "echo", [str]); 
};

2. plattformspezifischen Code implementieren:

/********* Echo.h Cordova Plugin Header *******/ 

#import 

@interface Echo : CDVPlugin 

- (void)echo:(CDVInvokedUrlCommand*)command; 

@end 

/********* Echo.m Cordova Plugin Implementation *******/ 

#import "Echo.h" 
#import 

@implementation Echo 

- (void)echo:(CDVInvokedUrlCommand*)command 
{ 
    CDVPluginResult* pluginResult = nil; 
    NSString* echo = [command.arguments objectAtIndex:0]; 

    if (echo != nil && [echo length] > 0) { 
     pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:echo]; 
    } else { 
     pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR]; 
    } 

    [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; 
} 

@end

Diese Probe aus der extrahierten 3. Erstellen Sie Plugin-Konfigurationsdatei:

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

4. Rufen Sie diese Funktion von Javascript:

window.echo("echome", function(echoValue) { 
    alert(echoValue == "echome"); // should alert true. 
});
+0

Danke redent84. Ich werde überprüfen und aktualisieren. – GMan

+0

großer Redent84. Es funktioniert cool. Vielen Dank. – GMan

Verwandte Themen