「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();
実装済みアプリ
- FXAlert - 外為のアラート通知アプリ : [各種設定]-[ご支援画面]