iPhoneからAndroidへの移植の注意点(その7) | オーシャンドライブ(ininc)開発チームのブログ
まずは紹介から。「ここでキスして」シリーズ第4弾「親切温泉芸者 主演:しのだやよい」が週刊プレイボーイに取り上げられました。$株式会社IN開発チームのブログ
「よっしゃ!」とここで勢いに乗じて第5弾の「毎度おさわらせします 主演:佐々木右里」をリリースした時に驚愕の事実に気が付きました。

前回より苦戦していたアプリ内課金ですが、結構大きい不具合出ました。ちょっと手の内をさらけ出すようですが、おそらく同じモデルの人は同様なところで躓くはずなのにそれほど資料が無いので書きます。

要はリストアの問題です。

「ここでキスして」は有料版を購入すると1作目が見れます。続編を見たくなったらそれを指定して購入手続きに進みます。その際の処理で続編の購入が正常に終わるとフラグを立てるようにしてます。たいていの文献はここで終了にします。

しかし実際は機種変更、再インストールをすると今まで買ったものでひっくり返ったフラグが無効になります。(更新であればフラグはそのままですが)ちなみにそれは分かっていたのですが第2弾を出したときにはその状態で出してます。なぜなら第3弾が20日後にリリース予定だったのでその段階で修正しようと思ってました。

でリストアと言うのを組み込みました。大抵の資料では、リストアをする際に購入済みではこの処理、キャンセルがあればこの処理などと分けたものしか書いてません。で、恥をさらけ出すようですがそこの処理のタイミングで購入していたらフラグをひっくり返して、キャンセルなどであればフラグを戻すというだけの処理を書きました。

でなにが起きるかと言うと、1つでも商品を買ったことがあればすべてのフラグがひっくり返ります。これ、どの商品と言うのがサンプルコードを使っているとitemIDというので指定できるのでそれをプログラムに組み込む必要があります。複数購入履歴があれば複数回そこの関数が呼ばれるのでそれは気を付けた方が良いです。

今見るとひどいアホだなって思いますが検証が難しいことが結構ハードルを高くしてます。まず、実機でないとアプリ内課金が検証できません。その実機に外部USBからソースを送ってインストールする必要があります。そして一定件数以上テストを行うとリストアのテストや購入テストが制限がかかります。

このハードルの中、どういう結果で今回のが発覚したかと言うと、「どうせ検証しても満足な結果が得られないから、検証なしでリリースしちゃえ」です。で、リリースしたものを購入テストだけしようと思ったら購入もしていないのに第5弾がプレイ出来ちゃったということで発覚しました。第3弾、4弾の時は、かなりの件数テストしたためリストアが正常にテスト出来てませんでした。なので、仕様と違っても正解か不正解かが不明でした。

まあ、結果的にずさんなリリースがミスを見つけてくれたとのことです。結果オーライ。

リストアの仕組みなどの資料が少ない理由はブラックボックスの中身を教えちゃう感じなのでなんとなく理解できます。でもそんなバカ高いもの売っているわけじゃないですしこんなずさんなプログラマーに打ち勝っても嬉しくないでしょうから。まあ、良い子は悪用しないでねって感じですね。

多分次回は、「新作でグーグルプレイにあつかわれるためには」を書けるような気がする。







にほんブログ村 IT技術ブログ Androidアプリ開発へ
↑ここを激しくクリック!

にほんブログ村 IT技術ブログ iPhoneアプリ開発へ
↑もっと強くクリック!