23
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

アプリ内課金の追加

「SenchaTouch + Cordova」のiOS、Androidアプリ開発ではまったことを少しメモする。

プラグイン追加

iOSのみ対応する場合:

$ cd cordova
$ cordova plugin add cc.fovea.cordova.purchase

Androidも対応する場合:

$ cd cordova
$ cordova plugin add cc.fovea.cordova.purchase --variable BILLING_KEY="ライセンスキー"

参考元:https://github.com/j3k0/cordova-plugin-purchase

iOSの実装メモ

問題1

fatal error: '''Foundation/Foundation.h''' file not found

解決:

StoreKit.frameworkが正しくリンクされていませんでした。
Xcode6.1 -> Xcode6.1.1 へアップデートすることで解決

問題2

問題1の影響かもしれないですが、
Build Phases -> Compile Sources -> InAppPurchase.m が正しく追加されていません。
※ Xcode6.1.1更新後に、別のアプリだったら問題ありませんでした。

解決:

手動で InAppPurchase.m を追加しました。

Androidの実装メモ

問題1

認証エラー:<認証が必要です。Googleアカウントにログインしてください。>

解決:

開発者以外のアカウントで試すとうまくいった。

Javascript側の簡単なサンプル

複数登録の際に、参考元にある registerProducts メソッドがなぜかうまく動作できず、下記のように一個一個登録します。

// イベント登録
document.addEventListener('deviceready', initializeStore, false);

function initializeStore() {
    // 購入登録
    store.register({
      id: "product.id1",
      type: store.CONSUMABLE
    });
    store.register({
      id: "product.id2",
      type: store.CONSUMABLE
    });

    // 購入完了イベント
    store.when("product.id1").approved(function(product) {
        product.finish();
    });

    // プレミアムチェック
    store.when("product.id1").updated(checkIsPremium);

    // エラーハンドリング
    store.error(function(e){
        console.log("ERROR " + e.code + ": " + e.message);
    });

    // 準備完了
    store.ready();

    // 更新
    store.refresh();
}

// プレミアムチェック 個別
function checkIsPremium(product) {
    if (product.owned) {
        window.isPremium = true;
    } else {
        window.isPremium = false;
    }
}

// アイテムの購入方法
store.order("product.id1");

// アイテムの復元方法
store.restore();

実装済みアプリ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
23
Help us understand the problem. What are the problem?