その場しのぎをしたって、結局いつかはツケを払わされるのさ (訳:Androidの古いアプリ内課金と新しいアプリ内課金の話)
「滴る血で足跡を染め、辿り着いた先に待っていたのは君ではなく、冷たい牢獄だった」
今日もメモメモ!
いろいろネタを貯めておいて、ブログを書く時にネタに困らないようにしとくんだ!
けれど、コンピュータの知識って数ヶ月すると古くなるからこういうネタのストックってあまり意味がない気がしなくもないけど、まあいいやいいや、楽しければいいや。
今日は、前回に引き続きアプリ内課金のことと、いきなり遭遇したエラーのことをメモ!
▼アプリ内課金って途中で変わったんだね!
この前お仕事でアプリ内課金のことを調べたものだから、以前自分が作ったアプリも、もう少しわかりやすいコードの変更しようと思って引っ張りだしてきた。
2年以上前に出したほとんどダウンロードなんてされないアプリなんだけど、未だに月数万は売り上げていて時々google playの有料ランキングだかなんだかにランクインしているので、これを期に一度真面目にコードを書き直そう!とか気合いを入れちゃったわけです。
それで、コードを眺めていたら、この前調べたIInAppBillingServiceの文字がないではないですか。
おかしい! 何か夢か幻でも見ているんじゃないかと一生懸命コードを読んで行くとIMarketBillingServiceというものを発見。
なんだこれは!
なんと、どこかのタイミングで変わってしまっていたらしい。
同じように「変わっちゃってるー!」ということをおっしゃっている記事もいくつか
http://blog.kshoji.jp/2012/12/in-app-billing-version-3.html
http://d.hatena.ne.jp/creativeability/20130313/1363189286
しかし、この変更でずいぶんとアプリ内課金の実装が楽になったんだとか。
たしかに今回アプリ内課金を実装したけど、あんまり大変じゃなかった気がする。(記事のおかげ!
昔参考にしたのはこっち
http://www.atmarkit.co.jp/ait/articles/1104/28/news147.html
というわけで動いているコードを触って「課金してもアイテムもらえない!返金しろ!」とか言われると泣きたくなるので、触らずに月数万を黙って受け取る道を選びました。
身の丈にあった行動をしないとね!
▼しかし、罠が潜んでいた
そんなアプリ内課金について調べながら土日を満喫して、本日。
さーてお仕事頑張るぞー!とeclipseを起動したところ。
先週末まで動いていたソースコードが動かない……!!!!
なんで!? 何をした!?
ああ、そうかちゃんとソースコードを修正せずに、せせこまと月数万を受け取ろうなんざ甘い!とお怒りになった魔王サタン様が与えられた罰なんだ!
人様に課金させるなら常に最新のコードにしておけってことなんだーーーーー!!
出たエラーはこれ。
[2013-11-02 08:26:51 - SearchViewDemo] Dx
trouble writing output: already prepared
どういうこと!? これどういうことーーー!
さっそくgoogle大先生に質問すると、こんな答えが返ってきました!
http://www.nico-maas.de/wordpress/?p=863
『最新のSDK以外全部消せ』(誤訳
な、、、なんだってーーーーー!
それは困ります、先生! だって未だにAPI8をメインターゲットにしたふるーーーいアプリもたまにだけどメンテナンスしてるんですから!
消したくない! API8とまだ、別れたくないんだ!
何か、何か手があるはずだ!
古いSDKを消せば直るってことは、SDKの参照が間違ってるんじゃないかな?
そこをちゃんと指定しなおしてあげれば、大好きなAPI8と別れなくて済むんじゃないかな。
はい、その通りでした。
Project Build TargetがAPI8になってました。
そんな古いAPIだと最新の課金ライブラリが動かないんだ、きっと。いや、よくわからないけど。
なんでそんなことになったかというと、
IMarketBillingService
こいつのせい。
土日にこいつと格闘している時に「そうだ、このアプリAPI8とかの頃に作ったやつだからProjectBuildTargetを8にすればいいんじゃない?」と思って切り替えたのをそのままにしてました。
無駄な時間をすごしたーーー。魔王サタン様の罰怖いーーー。
今日は、あんまり成長しなかった気がするけれど、明日は新しい技術をちゃんと学べますように!
納期まで余裕だったのに、1日無駄にしたせいでちょうどいい感じの納期になってしまった。