在app问题中结算

时间:2011-05-18 03:29:32

标签: android in-app-billing

我正在开发app-in-app模块。但仍有一些问题。

1)我实施了许可证验证库(LVL)。所有这些都像样本应用程序一样成功完成但是我收到错误消息:“免费申请不允许CHECK_LICENSE权限。”将应用程序上传到市场时。 我认为我需要实现LVL,因为它与应用程序计费相关的安全问题。但似乎LVL仅适用于付费应用程序。我的申请是免费的,包括在app模块中结算。什么时候有免费应用程序?

2)我在付款处理成功后(将调用purchaseInApp()方法)实现了如下所示的结算中应用程序模块:

private class MyAppPurchaseObserver extends PurchaseObserver {

   public MyAppPurchaseObserver(Handler handler) {
        super(MyAppPurchaseObserver.this, handler);
    }

    @Override
    public void onBillingSupported(boolean supported) {
        //Doing something
    }

    @Override
    public void onPurchaseStateChange(PurchaseState purchaseState, String itemId,
            int quantity, long purchaseTime, String developerPayload) {

        if(purchaseState == PurchaseState.PURCHASED) {
            purchasedInApp();
        }
    }

    @Override
    public void onRequestPurchaseResponse(RequestPurchase request,
            ResponseCode responseCode) {

        if (responseCode == ResponseCode.RESULT_OK) {
           //OK
        } else if (responseCode == ResponseCode.RESULT_USER_CANCELED) {
           //Canceled
        } else if(responseCode == ResponseCode.RESULT_BILLING_UNAVAILABLE ||
            responseCode == ResponseCode.RESULT_ITEM_UNAVAILABLE ||
            responseCode == ResponseCode.RESULT_SERVICE_UNAVAILABLE ||
            responseCode == ResponseCode.RESULT_DEVELOPER_ERROR) {
            //Error
        } else {
            //Fail
        }
    }

    @Override
    public void onRestoreTransactionsResponse(RestoreTransactions request,
            ResponseCode responseCode) {
        if (responseCode == ResponseCode.RESULT_OK) {
            //OK
        } else {
            //Error
        }
    }
}

在主线程中调用上面实现的方法? 或者它是分开的线程吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

据我所知,LVL和应用内结算是相互独立的。他们唯一分享的是他们使用您的公钥进行验证。对于应用内结算,您的应用需要使用com.android.vending.BILLING权限构建。

计费请求以异步方式发送到手机上的其他应用程序(Android Market或MyApps,具体取决于手机)。我不相信请求发出方法阻止,所以可以在UI线程或后台线程上运行它们。我不知道响应回调是否在UI线程上,但我对此表示怀疑(因为它们不适用于LVL)。