In-app Billing(アプリ内課金)が動かない機種?

2,152 views
Skip to first unread message

ishihata

unread,
Apr 5, 2011, 10:07:48 PM4/5/11
to 日本Androidの会
石畑と申します。

In-app Billing(アプリ内課金)を試しているのですが、うまく動かない機種があります。

SDKに入っているサンプルアプリを
http://developer.android.com/intl/ja/guide/market/billing/billing_integrate.html
にある説明の通りにビルドして、Xperia(SO-01B, OS2.1)、T-01C、IS05の3機種で
動かしてみました。
その結果、IS05では正常に動作したのですが、XperiaとT-01Cでは
アイテム購入部分が機能しません。
以下が詳細手順になります。

1.アプリ起動
2.アイテム「android.test.purchased」を選択
3.「Buy」ボタンをクリック
4.購入確認ダイアログが現れるので「今すぐ購入」をクリック
5.「購入を承認中...」のダイアログが現れるので1分ほど待つ。
6.ダイアログが消えてアプリ画面に戻るけど、アイテムを購入できていない。

何度試しても同じ結果になります。
正常動作するIS05では、6.でPURCHASEDというメッセージが表示されるのですが、
それが表示されません。また、IS05では5.で1分も待たされません(5秒くらいで
処理が終わります)。

マーケット側のバグかなという気もするのですが、なにぶん情報が少なくて参っています。
上記の機種で正常に動かせた方、おりますでしょうか?
何かご存知の方おりましたらコメントください。
よろしくお願いします。

nadesico39

unread,
Apr 6, 2011, 4:14:57 AM4/6/11
to 日本Androidの会
nadesico39です。
お世話になっております。

石畑さんへの回答ではなく、申し訳ございませんが、
本件に関係してると思うので、便乗質問させてください。

私も昨日よりhttp://www.techdoctranslator.com/android/market/billing
を参考に、アプリ内課金を試しています。
まずは、サンプルアプリをダウンロードして、開発中のアプリに組み込んで動かしているところです。
サンプルアプリはサンプルというには、ソースコードが多く、
実際どのソースが必要なのかがよく分からず、まだ動かせていません。。。
実装手順について、参考になるサイトをご存知のかた、教えていただけないでしょうか?
(見た感じだと、サンプルソースを全部リンクして、必要に応じて修正していくのかなと感じています。)

石畑さん>
 ビルドした環境を提供していただければ、Desire, IS03であれば動作確認可能です。

よろしくお願いします。

On 4月6日, 午前11:07, ishihata <ishihata.k.t...@gmail.com> wrote:
> 石畑と申します。
>
> In-app Billing(アプリ内課金)を試しているのですが、うまく動かない機種があります。
>
> SDKに入っているサンプルアプリをhttp://developer.android.com/intl/ja/guide/market/billing/billing_int...

ishihata

unread,
Apr 6, 2011, 7:21:56 AM4/6/11
to 日本Androidの会
nadesico39さん、レスいただきありがとうございます。

> サンプルアプリはサンプルというには、ソースコードが多く、
> 実際どのソースが必要なのかがよく分からず、まだ動かせていません。。。

こちらですが、
> (見た感じだと、サンプルソースを全部リンクして、必要に応じて修正していくのかなと感じています。)
この認識で正しいと思います。
私も自分のアプリに組み込んでいるのですが、とりあえずサンプルアプリのソースを全部突っ込んで
パッケージ名変えたりクラス名変えたり必要ない部分を削ったりして、とりあえずIS05では動くように
なりました。

>  ビルドした環境を提供していただければ、Desire, IS03であれば動作確認可能です。

ありがとうございます!
ですが、環境と言いましても、
1.src/com/example/dungeons/Security.javaの公開鍵の部分を自分のものに書き換えて、
2.パッケージ名をcom.example.dungeonsから自分のドメインのものに書き換えて、
3.Eclipseで新規にAndroidプロジェクトを作ってそこにソース一式を突っ込んで、
4.リリースビルド&署名して、
5.デベコンに下書きアップロードして、
6.端末に転送して実行
でできると思います。細かいことは
http://developer.android.com/intl/ja/guide/market/billing/billing_integrate.html
に書かれています。

以上、よろしくお願いします。

nadesico39

unread,
Apr 6, 2011, 10:49:49 AM4/6/11
to 日本Androidの会
石畑さん

nadesico39です。
とりあえず、サンプルアプリをビルドしてテストしてみました。
(サンプルソース(最小限の改変のみ実施)のみの実施です。)
結果、Desireでは問題なくPURCHASEDでき、IS03では石畑さんと同じ症状でした。

また、開発中のアプリに組み込むのは、やはり難航しそうです。


On 4月6日, 午後8:21, ishihata <ishihata.k.t...@gmail.com> wrote:
> nadesico39さん、レスいただきありがとうございます。
>
> > サンプルアプリはサンプルというには、ソースコードが多く、
> > 実際どのソースが必要なのかがよく分からず、まだ動かせていません。。。
>
> こちらですが、> (見た感じだと、サンプルソースを全部リンクして、必要に応じて修正していくのかなと感じています。)
>
> この認識で正しいと思います。
> 私も自分のアプリに組み込んでいるのですが、とりあえずサンプルアプリのソースを全部突っ込んで
> パッケージ名変えたりクラス名変えたり必要ない部分を削ったりして、とりあえずIS05では動くように
> なりました。
>
> >  ビルドした環境を提供していただければ、Desire, IS03であれば動作確認可能です。
>
> ありがとうございます!
> ですが、環境と言いましても、
> 1.src/com/example/dungeons/Security.javaの公開鍵の部分を自分のものに書き換えて、
> 2.パッケージ名をcom.example.dungeonsから自分のドメインのものに書き換えて、
> 3.Eclipseで新規にAndroidプロジェクトを作ってそこにソース一式を突っ込んで、
> 4.リリースビルド&署名して、
> 5.デベコンに下書きアップロードして、
> 6.端末に転送して実行
> でできると思います。細かいことはhttp://developer.android.com/intl/ja/guide/market/billing/billing_int...

ishihata

unread,
Apr 6, 2011, 9:32:53 PM4/6/11
to 日本Androidの会
nadesico39さん

石畑です。
IS03もダメですか。。。
もしかしたらドコモ機だけの問題かと思っていたのですが、根は深そうですね。
いちおうまとめると↓になりますね。

○正常に動作する機種
IS05, Desire

×動作しない機種
IS03, Xperia, T-01C

もっとも、それぞれ1端末だけの検証なので、機種ではなく何か別の条件に依存している可能性も大きいですね。
明日、某検証センターで端末を借りれますので、いくつかの機種で試してみたいと思います。

Hiroshi HARA

unread,
Apr 6, 2011, 10:39:50 PM4/6/11
to android-g...@googlegroups.com
石畑さん、nadesico39さん

はじめまして、原と申します。

予想になりますが、Androidマーケットアプリのバージョンが
原因ではないでしょうか。

in-app billingを使うには、Androidマーケットアプリのv2.3.0以上
が必要になります。
IS05やDesireでは、「v2.3.4」が搭載されていてます。
XperiaやT-01Cでは、「v2002304」が搭載されています。

よろしくお願いします。

2011年4月7日10:32 ishihata <ishihat...@gmail.com>:
--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


Ishii Kenzo

unread,
Apr 7, 2011, 1:33:31 AM4/7/11
to android-g...@googlegroups.com
石井です。
気になったので調査してみました。

Xperia NG
IS03 NG
Desire OK
でした。

XperiaとIS03の挙動は、石畑さんと同じです。


> 1.アプリ起動
> 2.アイテム「android.test.purchased」を選択
> 3.「Buy」ボタンをクリック
> 4.購入確認ダイアログが現れるので「今すぐ購入」をクリック
> 5.「購入を承認中...」のダイアログが現れるので1分ほど待つ。
> 6.ダイアログが消えてアプリ画面に戻るけど、アイテムを購入できていない。

マーケットアプリのバージョンは「2002304」でしたが、
CHECK_BILLING_SUPPORTEDのリクエストに対してRESULT_OKが返ってくるんですよね。

ちなみにIn-app Billingに必要なマーケットアプリのバージョンは「2.3.4」以上で、
2.3.3が搭載されているGalaxy Tabで試すと、CHECK_BILLING_SUPPORTEDでERRORが返って来ます。
サンプルアプリだと「対象外だよ」のダイアログが出て、ボタンが押せなくなります。
この挙動であれば納得できるんですけどねぇ。

XperiaとIS03で動かない理由ですが、マーケットアプリからIN_APP_NOTIFYのBroadCastIntentが発行されてこないからです。
receiverが待ち状態になったまま、1分程度でタイムアウトしているのだと。。。

今すぐ購入ボタンを押した時、Xperiaだと下のようなログが出てました。
W/GTalkService( 1278): [DataMsgMgr] broadcast intent callback:
result=CANCELLED forIntent { act=android.intent.action.REMOTE_INTENT
cat=[com.android.vending.billing.IN_APP_NOTIFY] (has extras) }
W/GTalkService( 1278): TODO: implement reportNoReceiverError!

IN_APP_NOTIFYぽいのですが、何故かGTalkServiceが受け取ってたりして意味不明です。
もしかして、マーケットアプリがintentの発行先とか方法を間違えてるとか??

何にせよ、マーケットアプリの不具合ぽいですね。
ダメならエラー返してくれればいいのに、中途半端に動くから困りますね。


2011年4月7日11:39 Hiroshi HARA <hir....@gmail.com>:

ishihata

unread,
Apr 7, 2011, 1:58:19 AM4/7/11
to 日本Androidの会
原さん

石畑です。
レスありがとうございます。

マーケットアプリのバージョンに関しては、実は私も原さんと同様の疑問を持って少し調べたのですが、
XperiaやT-01Cの「アプリケーションの管理」で表示されるバージョン番号は、どうやらバージョンコード
らしいのです。
(AndroidManifest.xml 内の android:versionCode の値です)
それに対して、IS05の「アプリケーションの管理」で表示されるバージョン番号はバージョン名
(android:versionName の値)のようです。

Android System Info というアプリで調べたところ、

Xperia: バージョン名=2.3.4、バージョンコード=2002304
T-01C : バージョン名=2.3.4、バージョンコード=2002304
IS05: バージョン名=2.3.4、バージョンコード=3002304

になっていました。
つまり、どれもバージョンは2.3.4なんです。
IS05だけバージョンコードが違うのが気になりますが…。

あと、In-app Billingを使うためのマーケットアプリのバージョンは2.3.4以上のようです。
http://developer.android.com/intl/ja/guide/market/billing/billing_overview.html
このページの一番下の方に書かれています。

以上ですがよろしくお願いします。


On 4月7日, 午前11:39, Hiroshi HARA <hir.h...@gmail.com> wrote:
> 石畑さん、nadesico39さん
>
> はじめまして、原と申します。
>
> 予想になりますが、Androidマーケットアプリのバージョンが
> 原因ではないでしょうか。
>
> in-app billingを使うには、Androidマーケットアプリのv2.3.0以上
> が必要になります。
> IS05やDesireでは、「v2.3.4」が搭載されていてます。
> XperiaやT-01Cでは、「v2002304」が搭載されています。
>
> よろしくお願いします。
>
> 2011年4月7日10:32 ishihata <ishihata.k.t...@gmail.com>:

Hiroshi HARA

unread,
Apr 7, 2011, 2:28:22 AM4/7/11
to android-g...@googlegroups.com
石畑さん、石井さん

原です。情報展開ありがとうございます。

In-App Billingが必要としているAndroid Marketバージョンは、
v2.3.4でしたね。失礼致しました。


Xperia: バージョン名=2.3.4、バージョンコード=2002304

上記ということは、純粋にバージョン名だけでは判断できず、
端末毎にサポートされているのかどうか、都度チェックが
必要になりそうですね。

いずれにしても、Android Marketアプリが怪しそうですね。

よろしくお願い致します。

2011年4月7日14:58 ishihata <ishihat...@gmail.com>:

ishihata

unread,
Apr 7, 2011, 3:39:17 AM4/7/11
to 日本Androidの会
石井さん

石畑です。
レスありがとうございます。

私もログを見てみましたが、まったく同じことが起こっていました。

WARN/GTalkService(1268): [DataMsgMgr] broadcast intent callback:
result=CANCELLED forIntent { act=android.intent.action.REMOTE_INTENT
cat=[com.android.vending.billing.IN_APP_NOTIFY] (has extras) }
WARN/GTalkService(1268): TODO: implement reportNoReceiverError!

これは確かに意味不明ですね。。。
ちなみに正常動作のIS05だと↓こんな感じで通知を取得できていますね。
INFO/BillingReceiver(26730): notifyId: android.test.purchased

もしかしたらインテントの受信全般がダメになってるのかとも疑いましたが、
どうもこのIN_APP_NOTIFY以外はちゃんとに受信できているようで…
イマイチ釈然としません。

> もしかして、マーケットアプリがintentの発行先とか方法を間違えてるとか??
私もこれに一票です。

もう少し調べてみます。
> 2011年4月7日11:39 Hiroshi HARA <hir.h...@gmail.com>:
>
>
>
>
>
>
>
> > 石畑さん、nadesico39さん
>
> > はじめまして、原と申します。
>
> > 予想になりますが、Androidマーケットアプリのバージョンが
> > 原因ではないでしょうか。
>
> > in-app billingを使うには、Androidマーケットアプリのv2.3.0以上
> > が必要になります。
> > IS05やDesireでは、「v2.3.4」が搭載されていてます。
> > XperiaやT-01Cでは、「v2002304」が搭載されています。
>
> > よろしくお願いします。
>
> > 2011年4月7日10:32 ishihata <ishihata.k.t...@gmail.com>:
> > このグループから退会するには、android-group-j...@googlegroups.com...
>
> もっと読む ≫

nadesico39

unread,
Apr 7, 2011, 4:53:14 AM4/7/11
to 日本Androidの会
> ...
>
> もっと読む ≫

nadesico39

unread,
Apr 8, 2011, 5:15:02 AM4/8/11
to 日本Androidの会
nadesico39です。

昨日、空送信してしまっていたようですので、再度報告です。
趣旨とはずれてしまいますが、In-App Billingの概要についてです。
導入予定のあるかたは参考になると思います。

In-App Billing(アプリ内課金)で設定できる最低金額は99円でした。
また、有料アプリは国別に販売価格を設定できますが、日本では日本円のみのようです。
そして、自身で設定したアイテムの課金をチェックするには、別アカウントが必要です。
(アプリおよび課金アイテムは公開しなくてもいいです)

アプリ内課金を設定したアプリケーションはデベロッパコンソール
(アプリ内サービスという項目)にてこれらを設定することが可能です。

課金単位を10円以上から設定できるようにしてくれれば、
もう少し使い道がでてきそうですが、今のままではあまり使い道がなさそうです。
外貨を日本円にすると100円未満で販売できるので、
有料アプリの販売価格も10円以上~100円未満で設定できればなぁと思う次第です。
> ...
>
> もっと読む ≫

ishihata

unread,
Apr 8, 2011, 6:29:05 AM4/8/11
to 日本Androidの会
石畑です。

今日、某検証センターで端末を借りてサンプルアプリを動かしてみましたので結果を報告します。
以下、OKは正常動作、NGはアイテム購入不能(PURCHASEDが表示されない)を意味します。

IS01 NG
IS04 NG
IS06 OK
Desire(X06HT) OK
Desire HD(001HT) OK
003SH OK
005SH OK
Libero(003Z) OK
Streak(001DL) OK

なお、マーケットアプリのバージョンはすべて2.3.4でした。
すでに報告が上がっている機種も併せると

IS03 NG
IS05 OK
Xperia NG
T-01C NG

こうなります。

以上から分かることは、Android 2.2の機種はすべて正常に動作し、
Android 2.1と1.6の機種はすべて不具合が発生しているということです。
既存の全機種を調べたわけではありませんが、OSバージョンに依存する現象と見て
間違いないのではないかと思います。
というわけで、現状で取り得る対策としては、AndroidManifest.xmlに
<uses-sdk android:minSdkVersion="8" />
これを指定して必要OSバージョンを2.2にするくらいしかないですかね…。

あと一点気になるのは、現在Android 2.1で2.2にアップデートが予定されている
機種がありますが、そのアップデートでこの不具合が解消されるのかどうかです。
OSバージョンは上がったけど不具合はそのままなんてことになったら、
上記の対策も通用しなくなってしまいます。
(そんなことは起こらないと思いたいですが…)

これ、けっこう大きな問題だと思うのですが、Googleに報告した方が良いでしょうか?
> > > > >> > > > 実際どのソースが必要なのかがよく分からず、まだ動かせていません。。。...
>
> もっと読む ≫

ishihata

unread,
Apr 9, 2011, 5:43:17 AM4/9/11
to 日本Androidの会
石畑です。

関連することで2点報告します。

まず、昨日から今日にかけてマーケットアプリが2.3.4から2.3.6にアップデートされたようですが、
アップデート後も当現象は改善されていないようです。
アップデート後のXperiaとIS05で動作を確認しました。

次に、海外でも同様の現象が報告されているようです。
http://groups.google.com/group/android-developers/browse_thread/thread/468004148f3e341b?hl=en
モトローラのMilestone(Android 2.1)で発生するとのこと。
日本ローカルな問題というわけではなさそうですね。

報告まで。
> > > > > >> > > なりました。...
>
> もっと読む ≫
Reply all
Reply to author
Forward
0 new messages