この設定に頭を悩ませた一日でした。プラグイン コードを書くことは、セットアップよりもはるかに簡単だと感じています。以下の手順に従って、ios 用の単純な phone gap プラグインを作成しました。しかし、残念ながら、私が逃した場所を見つけることができませんでした。コードの欠落/混乱/エラー部分を印刷してください。
PhoneGap セットアップ:
1)Xcodeを閉じました。[私は Xcode 4.3.3 を持っています] 2) 最新の phone gap をダウンロードしました。バージョン 2.0 3) phonegap-phonegap-2dbbdab-1 ディレクトリに、Cordova-2.0.0.pkg をインストールします。
4) 次のコードを実行します。
$ ./path/to/cordova-ios/bin/create /path/to/my_new_cordova_project com.example.cordova_project_name CordovaProjectName
フォロー: http://docs.phonegap.com/en/2.0.0/guide_command-line_index.md.html#Command-Line%20Usage
5) Xcode プロジェクトを開きます。
6) を含む www ディレクトリの下に HelloPlugin.js ファイルを作成しました。
var HelloPlugin = {
callNativeFunction: function (success, fail, resultType) {
return Cordova.exec(success, fail, "com.tricedesigns.HelloPlugin", "nativeFunction", [resultType]);
}
};
7) プラグイン ディレクトリ内
HelloPlugin.hには以下が含まれます。
#import "CDVPlugin.h"
@interface HelloPlugin : CDVPlugin {
NSString* callbackID;
}
@property (nonatomic, copy) NSString* callbackID;
- (void) nativeFunction:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
@end
HelloPlugin.m には以下が含まれます。
#import "HelloPlugin.h"
@implementation HelloPlugin
@synthesize callbackID;
- (void) nativeFunction:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
//get the callback id
NSString *callbackId = [arguments pop];
NSLog(@"Hello, this i s a native function called from PhoneGap/Cordova!");
NSString *resultType = [arguments objectAtIndex:0];
CDVPluginResult *result;
if ( [resultType isEqualToString:@"success"] ) {
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString: @"Success :)"];
[self writeJavascript:[result toSuccessCallbackString:callbackId]];
}
else {
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString: @"Error :("];
[self writeJavascript:[result toErrorCallbackString:callbackId]];
}
}
@end
Cordova.plist: com.tricedesigns.HelloPlugin、HelloPlugin をキー/値として追加し、型は文字列です。
index.html で:
<script type="text/javascript" charset="utf-8" src="HelloPlugin.js"></script>
<script type="text/javascript">
function callNativePlugin( returnSuccess ) {
alert("Inside callNativePlugin");
HelloPlugin.callNativeFunction( nativePluginResultHandler, nativePluginErrorHandler, returnSuccess );
alert("End of Hello PLugin");
}
function nativePluginResultHandler (result) {
alert("SUCCESS: \r\n"+result );
}
function nativePluginErrorHandler (error) {
alert("ERROR: \r\n"+error );
}
</script>
ボタンをクリックしても、ネイティブ関数は呼び出されません。前進する方法は?