0

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];

上記の行で、変数 callback は、プラグインが呼び出されたときに引数callbackNameによって渡された値を保持します。Androidで同じことを行うにはどうすればよいですか?

プラグインには、android で callbackname 値を受け取るオプションがありません

public PluginResult execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException

phonegapのAndroidでは、このメソッドを使用しています

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

Androidで同じものを実装するにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

Google Play Stores In App Billing サービスを使用する必要があります。GitHub のこのプロジェクトには、いくつかの良い例があります。

https://github.com/poiuytrez/AndroidInAppBilling

IOS と Android の両方で 1 つのコード ベースを自分で作成する時間はありませんでしたが、将来的には作成する予定です...最終的に行ったことは次のとおりです。別のレイヤーを追加する方がおそらく高速でしたが、当時はそれを機能させようとしていて、将来的にリファクタリングする予定です... 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?' );
            }
        }
于 2013-11-10T02:08:58.823 に答える