带有回调的Android cordova插件

时间:2013-11-10 01:44:23

标签: java android ios cordova phonegap-plugins

我正在将IOS phonegap插件转换为android。在IOS中有一个像这样的插件调用

cordova.exec('InAppPurchaseManager.requestProductsData', callbackName, {productIds: productIds});

这行代码使用本机层从itues商店中获取产品详细信息。一旦将此消息发送到本机层,它就会发出异步请求以获取产品详细信息。一旦它有产品,它就会进行呼叫

NSString *js = [NSString stringWithFormat:@"%@.apply(plugins.inAppPurchaseManager, %@);", callback, [callbackArgs cdvjk_JSONSerialize]];
    [command writeJavascript: js];

在上面的行中,变量回调保存调用插件时参数 callbackName 传递的值。我怎样才能在android中做同样的事情?

该插件没有选项来接收android

中的callbackname值
public PluginResult execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException

在android from phonegap我正在使用这种方法

cordova.exec(callbackName, null, "MyPluginClass", "getProducts", productIds);

我如何在android中实现相同的功能?

由于

1 个答案:

答案 0 :(得分:0)

您必须使用Google Play商店应用结算服务。 GitHub上的这个项目有一些很好的例子:

https://github.com/poiuytrez/AndroidInAppBilling

我没有时间为IOS和Android创建一个代码库,但我计划将来...我最终做的是以下内容,添加单独的图层可能会更快但我当时正试图让它工作并将在未来进行重构......以下是我如何做到这一点,它需要对Android GitHub项目进行最低限度的修改:

           if ( window.plugins.InAppPurchasePlugin ) {

            // launch the ios in app purchase MakePurchase function....
            var quantity = 1;

            window.plugins.InAppPurchasePlugin.buyProduct( config.gratitudeIosInAppProductId, quantity, buyProductError );
        }
        else {

            if ( window.plugins.inappbilling ) {

                window.plugins.inappbilling.buy( androidBuySuccessHandler, buyProductError, config.gratitudeAndroidInAppProductId );
            }
            else {

                kendoConsole.log( 'no inappbilling?' );
            }
        }