然后调用时延迟对象和phonegap插件的问题

Posted

技术标签:

【中文标题】然后调用时延迟对象和phonegap插件的问题【英文标题】:Issue with deffered object and phonegap plugin when then call 【发布时间】:2014-03-18 14:38:25 【问题描述】:

如何执行以下操作

[self.commandDelegate sendPluginResult:[CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:**response**] callbackId:command.callbackId ];

然后得到结果为

$.when(phonegap.function(params)).then(function (**resp**) 
//Get the response here 

);

【问题讨论】:

【参考方案1】:

您需要使用 cordova.exec API 来使其工作

确保您已经在 config.xml 中定义了插件

<feature name="CustomPlugin">
      <param name="ios-package" value="CustomPlugin" />
</feature>

使用Objective-C代码实现插件

CustomPlugin.h

#import <Foundation/Foundation.h>
#import <Cordova/CDV.h>

@interface CustomPlugin : CDVPlugin

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

@end

CustomPlugin.m

#import "CustomPlugin.h"

    @implementation CustomPlugin

    - (void)sayHello:(CDVInvokedUrlCommand*)command

        NSString *responseString =
            [NSString stringWithFormat:@"Hello World, %@", [command.arguments objectAtIndex:0]];

        CDVPluginResult *pluginResult =
            [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:responseString];

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

    @end

javascript 调用插件

function initial()
    var name = $("#NameInput").val();
    cordova.exec(sayHelloSuccess, sayHelloFailure, "CustomPlugin", "sayHello", [name]);


function sayHelloSuccess(data)
    alert("OK: " + data);


function sayHelloFailure(data)
    alert("FAIL: " + data);

【讨论】:

以上是关于然后调用时延迟对象和phonegap插件的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中使用自定义 phonegap 3.3 插件

从 AngularJS 控制器调用 phonegap 插件

插件在android phonegap中不起作用

Phonegap 插件活动导入布局

在ios设备上集成phonegap inapp购买插件时出错

phonegap ios的奇怪错误