android google内购注意事项

在android机器上使用google内购

1、在开发者控制台不可添加相同bundle id的应用、也就是com.android.game之类的、因为此bundle id是google play唯一识别应用程序区别的标识、如果迩硬要添加、也是可以的、不过google play只认最先添加的、包括内购项目、也是直接连去最先添加相同bundle id的那个应用、即使其它android应用使用了其它的keystore、但依旧改变不了会连接至相同bundle id的第一个应用的事实上、此事非常有可能在迩添加了内购项目却始终显示找不到该文档的报错、所以务必保证相同bundle id只上传一个的原则

 

2、注意google play版本必需要在3.5以上、而且必需是非中国区的google play、目前测试通过的是美国区的google play、如果迩要在中国地区使用美国的商店、请打开VPN连接至美国的服务器、然后强制关闭google play、然后清空google play的缓存重新打开google play

 

3、当迩更新应用版本时、请保证相同的bundle id、比现版本更高的bundle version和version code

 

 

4、google官方的java示例有一个重复购买的BUG、也就是点击一次会出来两个返回、一个一般是返回无此文档、另一个就是正常返回、其实这里的BUG引起的便是java主文档中关于按钮响应的代码有了错误、官方代码判断了两次、一次判断是不是内购类型、另一次判断是不是订阅类型、实际上订阅类型并不加判断的去执行、导致总是多出来一个无此文档的错误、解决的方法就是为订阅类型加上判断

原BUG代码:

if (mManagedType != Managed.SUBSCRIPTION &&
                    !mBillingService.requestPurchase(mSku, Consts.ITEM_TYPE_INAPP, mPayloadContents)) {
                showDialog(DIALOG_BILLING_NOT_SUPPORTED_ID);
            } else if (!mBillingService.requestPurchase(mSku, Consts.ITEM_TYPE_SUBSCRIPTION, mPayloadContents)) {
                // Note: mManagedType == Managed.SUBSCRIPTION
                showDialog(DIALOG_SUBSCRIPTIONS_NOT_SUPPORTED_ID);
            }

修改后的代码

if (mManagedType != Managed.SUBSCRIPTION &&
                    !mBillingService.requestPurchase(mSku, Consts.ITEM_TYPE_INAPP, mPayloadContents)) {
                showDialog(DIALOG_BILLING_NOT_SUPPORTED_ID);
            } else if (mManagedType == Managed.SUBSCRIPTION && !mBillingService.requestPurchase(mSku, Consts.ITEM_TYPE_SUBSCRIPTION, mPayloadContents)) {
                // Note: mManagedType == Managed.SUBSCRIPTION
                showDialog(DIALOG_SUBSCRIPTIONS_NOT_SUPPORTED_ID);
            }

狠明显就是对else if 后面的条件判断加多了一个mManagedType == Managed.SUBCRIPTION的判断、如果不是订阅类型就不再执行后面的代码

相关文档地址:http://stackoverflow.com/questions/10775008/in-app-billing-item-not-found

posted @ 2012-11-27 18:48  klobodnf  阅读(1743)  评论(0编辑  收藏  举报