一次又一次地购买相同的物品,而不需要消耗 - 在应用程序中购买安卓版。

问题描述 投票:0回答:1

我保留了一个捐赠标签,想让用户重复购买物品。我已经实现了一个代码,但它只能让用户购买一次特定的项目。我在游戏控制台中使用了管理产品来管理产品。

 btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
           if(billingClient.isReady()){
             SkuDetailsParams params=SkuDetailsParams.newBuilder()
             .setSkusList(Arrays.asList("purchase_aaa","purchase_bbb","purchase_ccc","purchase_ddd"))
             .setType(BillingClient.SkuType.INAPP).build();

 billingClient.querySkuDetailsAsync(params, new SkuDetailsResponseListener() {
         @Override
          public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
           if(responseCode==BillingClient.BillingResponse.OK)
        {
              loadProductToRecyclerView(skuDetailsList);
                  }
             else{
               Toast.makeText(Donate.this, "Cannot query product", Toast.LENGTH_SHORT).show();
                  }
                  }
                });
                }
                else
        {
                Toast.makeText(Donate.this, "Not ready", Toast.LENGTH_SHORT).show();
                }
            }
        });

  @Override
    public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
        if(purchases!=null){
        Toast.makeText(this, "Purchased"+purchases.size(), Toast.LENGTH_SHORT).show();
    }
    }
android in-app-purchase in-app-billing android-billing android-inapp-purchase
1个回答
1
投票

这是设计好的,不能更改,应用内的管理产品只能购买一次。

如果你想让付出更多的用户拥有更多的功能,你就必须创建尽可能多的应用内管理产品,因为级别存在。

如果是在游戏中,比如用户在消耗物品,那么当他不再有任何物品时,你就消耗应用内产品,这样他就可以再次购买。

或者你也可以在购买后立即消费产品,并通过自己的手段、自己的服务器或许通过firebase来追踪他购买了多少,但这已经意味着你必须为你的应用实现一个用户认证系统。

消费购买。

ConsumeResponseListener consumeListener = new ConsumeResponseListener() {
            @Override
            public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {

            }
        };
 String token = purchase.getPurchaseToken();
            ConsumeParams consumeParams = ConsumeParams.newBuilder().setPurchaseToken(token).build();
            billingClient.consumeAsync(consumeParams, consumeListener);
© www.soinside.com 2019 - 2024. All rights reserved.