我試圖在iOS上的觸發器中觸發自定義事件。好吧,我迄今爲止所做的: 我創建了一個自定義插件,我可以從Javascript調用我的插件,並且所有工作都正常。基本上插件顯示一個ModalViewController呈現一些本地功能 ,如錄製和編輯視頻,一旦用戶完成,我會將視頻上傳到YouTube。我想在下載完成時發佈一個事件,但目前我無法做到這一點。
這是我使用的代碼的一部分:
在我的index.html我有這個功能,通過點擊一個按鈕觸發,(我不是一個JavaScript開發)nativeFunction基本上叫我的自定義插件。iOS上的Phonegap觸發自定義事件
function testCustomPlugin()
{
MyClass.nativeFunction(
function(result) {
alert("Success : \r\n"+result);
},
function(error) {
alert("Error : \r\n"+error);
}
);
document.addEventListener("post_sent",onPostSent,false);
}
function onPostSent()
{
alert("post sent");
}
這是我MyClass.js:
var MyClass = {
nativeFunction: function(types, success, fail) {
return Cordova.exec(success, fail, "MyClass", "showInterface", types);
}
}
裏面MyClass.m我有兩種方法:showInterface和sendNotification時,
showInterface.m
- (void) showInterface:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options
{
self.callbackID = [arguments objectAtIndex:0];
// missing code
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(sendSuccessNotification:)
name:@"PostSentNotification" object:nil];
}
-(void)sendSuccessNotification:(NSNotification *)notification
{
if (self.callbackID) {
NSLog(@"%@",callbackID);
NSLog(@"sendSuccessNotification");
NSDictionary *dictionary = [NSDictionary dictionaryWithObject:@"testCallBack"
forKey:@"returnValue"];
CDVPluginResult *result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
messageAsDictionary:dictionary
[result setKeepCallbackAsBool:YES];
[super writeJavascript:[result toSuccessCallbackString:self.callbackID]];
}
}
我可以在我的日誌中看到sendSuccessNotification被調用,但事件沒有被解僱,我相信我會做一些事情在JavaScript中,但問題是,我不知道什麼。
預先感謝任何幫助