0

我正在我的应用中实施 Google 应用内购买。我从谷歌端下载了代码并在我的应用程序中运行它。我第一次收到“签名验证失败”的错误时,我通过在发布版本中构建我的应用程序来解决它,对其进行签名并将其作为未发布的应用程序发布在 Google android 市场上。现在,当我购买应用程序并按下接受按钮并购买它时,我收到了响应,但数据未存储在 onPurchseState 中。该应用程序再次提供了下载此应用程序的信息,您必须购买它。任何帮助将不胜感激。这是详细代码

我从 onClick 方法调用 requestPurchase(String productId, String payload) 。

@Override
public void onClick(View view) {
    if(view == requestPurchaseButton) {
        mBillingService.requestPurchase("android.test.purchased", "10");
    }
}

回调方法 onRequestPurchaseResponse(Request, ResponseCode) 被调用。这里的 responseCode 给出了 RESULT_OK 的值。所以请求已经发送到服务器。

   @Override
   public void onRequestPurchaseResponse(RequestPurchase request,
            ResponseCode responseCode) 
   {
          if(responseCode == ResponseCode.RESULT_OK) {
        Log.d("My APP", "onRequestPurchaseResponse.ResponeCode.RESULT_OK");

      } else if(responseCode == ResponseCode.RESULT_USER_CANCELED) {

      } else { 

      }
   }

但是回调方法

@Override
    public void onPurchaseStateChange(PurchaseState purchaseState,
            String itemId, int quantity, long purchaseTime,
            String developerPayload) {
        Log.d("PucrchedState", "onPurchaseStateChanged");

    }

永远不会被调用。

4

1 回答 1

1

onPurchaseStateChange()被异步调用,它可能需要一些时间(通常在几秒钟内)。但是,如果您的设备位于防火墙后面,响应可能会丢失或延迟,请确保没有任何东西阻止传入连接(检查 Google Talk 是否正常工作)。还要确保您已经BroadcastReceiver在清单中注册了相应的内容。

于 2012-12-18T08:30:03.923 回答