Flash Professional CS6の新機能でネイティブ拡張(ANE)が使えるようになりましたので、Milkman GamesのANEのうち「In-App Purchase iOS Extension」というiOS用のアプリ内課金のためのネイティブ拡張を試してみようと思います。
とはいえ、このANEは、$49.99で購入する必要があります。
追記(2012.12.04):「Adobe Game Developer Tools リリース!」こちらの記事にありますが、Adobeから無償で提供されているGaming SDKには、アプリ内課金のANEが含まれているようです。
また、このANEに関しては、英語版ADC記事「Using the iOS In-App Purchase native extension for Adobe AIR」がありますので、その手順に従って、ユーザキャンセルするところまでを試してみようと思います。
このANEを購入し、入手したファイルを解凍すると「extension」というフォルダがあり、その中にANEが入っています。その他に、簡単なマニュアルやサンプルがついてきます。
このサンプルをそのままFlash Professional CS6で利用する手順をMEMOしておきます。
サンプルを試すには、実機での動作確認が必要です。また、「iOS : アプリ内課金(In-App Purchase)をXcodeでやってみる」の「iTunes Connectでアプリ内課金用のプロダクトを準備」にあるように購入するアプリ内課金用のプロダクトを準備しておいてください。
- Flash Professional CS6を起動し、新規ファイルで「AIR for iOS」を作成し、任意の場所にFLAを保存。
- 購入したANEの中に「MmgStoreKitANE_v1_0_1/extension」をフォルダごとFLAのフォルダにコピー。この中にANEが入っています。swcが一緒に入っていますが、Flash BuilderやFlash Pro CS6以降では使いません。
※このMEMOを書いている時点で最新バージョンは1.0.4です。購入すると登録したメールに最新版のANEが添付されて送られてきます。 - ファイル>ActionScript設定の「ライブラリパス」タブで「+」を押す。
- 「extension」フォルダ内にある「com.milkmangames.extensions.StoreKit.ane」を選択。
- 「ライブラリパス」タブはこんな感じに。
- ステージ上に、「test_txt」というインスタンス名のテキストフィールドを配置。
- 第一フレームのフレームスクリプトに以下を入力。これはADC記事に記載のある内容のうち、プロダクト購入後、ユーザによってキャンセルされた場合のハンドラーだけ書いています。(ADC記事では、プロダクトの詳細を取得したり、購入が成功した場合やエラーが発生した場合、リストアした場合なども書かれていますが、ここではシンプルに、購入ダイアログが出た後にユーザによってキャンセルするところまでを試そうと思います。)
import com.milkmangames.nativeextensions.ios.*; import com.milkmangames.nativeextensions.ios.events.*; var storeKit:StoreKit; //StoreKitがサポートされているか if(StoreKit.isSupported()){ storeKit=StoreKit.create(); }else{ test_txt.text = "StoreKit is not supported." } //そのデバイスで購入可能かどうか if(!StoreKit.storeKit.isStoreKitAvailable()){ test_txt.text = "this device has purchases disabled." return; } //テストするだけなので、ユーザキャンセルのハンドラーのみにしてあります。 StoreKit.storeKit.addEventListener(StoreKitEvent.PURCHASE_CANCELLED, onUserCancelled); function onUserCancelled(e:StoreKitEvent){ test_txt.text = "the user decided not to buy" + e.productId; } //購入 StoreKit.storeKit.purchaseProduct("com.mushikago.InAppPurchaseXcode.unLock",1);
- 「アプリケーションID」を「com.mushikago.InAppPurchaseXcode」(実際にiTunes Connectで登録されているアプリのBundle ID)に。
- パブリッシュして実機でテスト。
※AIR3.2 for iOS設定ダイアログ内でアプリケーションIDとiTunes Connectで試すアプリのBundle IDを一致させるように。
実機でテストすると、アプリ起動直後に購入処理が行われ、ダイアログが出ます。
ここでキャンセルをすると、テキストフィールドに「the user decided not to buy」+ プロダクトIDが表示されると思います。
追記(2012.10.05):まとめスライドを公開しました。
東京造形大学卒業後、マクロメディア(現アドビ)に入社。QAやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、2007年に虫カゴデザインスタジオ株式会社を設立。2021年東京三鷹を拠点に。最近は、Unity, Unity Netcode for GameObjects, CakePHP, Laravel, ZBrush, Modo, Adobe Substance 3D, Adobe Firefly, Xcode, Apple Vision Pro, Firebaseにフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。
コメント
[…] 「iOS : Flash Proでネイティブ拡張(ANE)に挑戦」でHelloWorldなANEを作ってそれを実機で確認するところまで試し、「iOS : アプリ内課金(In-App Purchase)をXcodeでやってみる」でXcodeで作ったアプリにアプリ内課金を実装するところまで試してみました。「Flash ProでMilkman GamesのIn-App Purchase iOS Extensionを試す」では既存のANEを購入し、実際にアプリ内課金がAIRアプリ上で利用できることも確認できました。 そしたらいよいよ、これらをまとめて自力でアプリ内課金を行うANEを作ってみましょう。 […]