Android应用内购买问题

时间:2012-08-10 06:46:57

标签: android in-app-purchase

我已使用静态回复ID android.test.purchased在我的帐户中实施了应用内购买。现在,在购买商品时,Toast弹出窗口显示“谢谢。您的商品会很快显示。”

我认为到目前为止,每件事情都很完美。

我的问题是

  • 这个Toast来自哪里。我找不到我的代码。
  • 如何覆盖此Toast?是因为我使用的Reserved product ID吗?一旦我使用自己的产品ID,它会改变吗?
  • 应该使用哪个被覆盖的函数,知道用户是否购买或取消了请求。

        @Override
        public void onPurchaseStateChange(PurchaseState purchaseState, String itemId,
                long purchaseTime, String developerPayload) {       
            if (purchaseState == PurchaseState.PURCHASED) {             
                // Is it here?
            }
        }
    

  • 最后,我可以在onPurchaseStateChange内执行用户界面修改吗?
  • 这是我的onPurchaseStateChange方法

        @Override
        public void onPurchaseStateChange(PurchaseState purchaseState, String itemId,
                long purchaseTime, String developerPayload) {
            if (Consts.DEBUG) {
                Log.i(TAG, "onPurchaseStateChange() itemId: " + itemId + " " + purchaseState);
            }            
            if (purchaseState == PurchaseState.PURCHASED) {
                for (CatalogEntry e : CATALOG) {
                    if (e.sku.equals(itemId) &&
                            e.managed.equals(Managed.SUBSCRIPTION)) {
                    }
                }
            }
            Toast.makeText(getApplicationContext(), "purchase failed", Toast.LENGTH_LONG).show();
        }
    

    任何帮助将不胜感激! :)谢谢!

    1 个答案:

    答案 0 :(得分:2)

    首先,吐司来自市场活动。 user1378730在评论中发布的链接说明了如何删除它。

    正如您所做的那样在onPurchaseStateChange中确定购买结果是正确的,purchaseState对象有几个您可以检查的枚举。

    我不建议在onPurchaseStateChange方法中执行界面交互,因为在购买完成时可能会多次调用。我从我的活动中跳出一些自定义的方法来决定做什么,例如一个onPurchaseCancelonPurchaseSuccess方法可以判断它是否已经自行运行。这样做还允许您将市场交互与其余代码流分开,以便于调试。