Android Uygulamaya Abonelik Sistemi Ekleme

Gelir elde etme açısından abonelik sistemi eklemek oldukça önemlidir. Bu yüzden bir çoğumuz uygulamamıza reklam ekledikten sonra premium üyelik gibi abonelik sistemleri ekleyerek reklam kaldırma imkanı sunar ve daha çok gelir elde etmeye çalışırız. Ancak Google’ın ödeme kütüphanesi bir çoğumuza karmaşık geldiği için alternatif ve çok kullanılan ButterKnife kütüphanesi çıkmıştır. Şimdi geçelim nasıl abonelik sistemi ekleyebileceğimize.

Android JAVA Uygulamaya Abonelik Sistemi Ekleme:

Öncelikle kullanacağımız kütüphaneleri build.gradle(:app) dosyasına ekleyelim. Bu dosyada dependencies kısmında en alta aşağıdaki kodları ekleyin:

implementation 'com.android.billingclient:billing:3.0.0'
implementation 'com.jakewharton:butterknife:10.2.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'

Ardından bir Java Fragment’i oluşturun. Oluştururken Fragment => Blank Fragment seçeneklerini seçin ve FragmentPremium adını verin.

Ardından aşağıya eklediğim kodu bu sayfaya ekleyin: (Paket adı kısımlarını değiştirmeyi unutmayın)

package com.paketadi.fragment;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import com.android.billingclient.api.AcknowledgePurchaseParams;
import com.android.billingclient.api.AcknowledgePurchaseResponseListener;
import com.android.billingclient.api.BillingClient;
import com.android.billingclient.api.BillingClientStateListener;
import com.android.billingclient.api.BillingFlowParams;
import com.android.billingclient.api.BillingResult;
import com.android.billingclient.api.Purchase;
import com.android.billingclient.api.PurchasesUpdatedListener;
import com.android.billingclient.api.SkuDetails;
import com.android.billingclient.api.SkuDetailsParams;

import com.android.billingclient.api.SkuDetailsResponseListener;
import com.paketadi.app.R;
import com.paketadi.asyncTask.LoadPremium;
import com.paketadi.interfaces.SuccessListener;
import com.paketadi.utils.Constant;
import com.paketadi.utils.Methods;

import java.util.ArrayList;
import java.util.List;

import butterknife.ButterKnife;
import butterknife.OnClick;

public class FragmentPremium extends Fragment implements PurchasesUpdatedListener {
    private Button buttonbuy;
    private View view;
    private BillingClient mBillingClient;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_premium, container, false);
        buttonbuy = (Button) view.findViewById(R.id.btn_buy_premium);
        return view;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ButterKnife.bind(getActivity());
        mBillingClient = BillingClient.newBuilder(getActivity()).enablePendingPurchases().setListener(this).build();
        mBillingClient.startConnection(new BillingClientStateListener() {
            @Override
            public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK)
                {
                    List<String> skuListInAPP = new ArrayList<>();
                    skuListInAPP.add("premium");
 // play console'da oluşturduğunuz aboneliğin ürün kimliği
                    SkuDetailsParams.Builder paramsINAPP = SkuDetailsParams.newBuilder();
                    paramsINAPP.setSkusList(skuListInAPP).setType(BillingClient.SkuType.SUBS);
                    mBillingClient.querySkuDetailsAsync(paramsINAPP.build(), new SkuDetailsResponseListener() {

                        @Override
                        public void onSkuDetailsResponse(@NonNull BillingResult billingResult, @Nullable List<SkuDetails> list) {
                            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                                for (Object skuDetailsObject : list) {
                                    SkuDetails skuDetails = (SkuDetails) skuDetailsObject;

                                    if(skuDetails.getSku().equals("premium")) {
                                        buttonbuy.setOnClickListener(new View.OnClickListener() {
                                            @Override
                                            public void onClick(View view) {

                                                    BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                                                            .setSkuDetails(skuDetails)
                                                            .build();
                                                    mBillingClient.launchBillingFlow(getActivity(),flowParams);
                                            }
                                        });
                                    }
                                }

                            }
                        }
                    });
                }
                else
                {
                    Toast.makeText(getActivity(),"satın alma başarısız!",Toast.LENGTH_LONG).show();
                }
            }
            @Override
            public void onBillingServiceDisconnected() {
                Toast.makeText(getActivity(),"satın alma başarısız!",Toast.LENGTH_LONG).show();
            }
        });
    }

    @Override
    public void onPurchasesUpdated(@NonNull BillingResult billingResult, @Nullable List<Purchase> list) {
        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && list != null)
        {
            for (Purchase purchase: list)
            {
                if (!purchase.isAcknowledged())
                {
                   AcknowledgePurchaseParams acknowledgePurchaseParams=  AcknowledgePurchaseParams.newBuilder()
                            .setPurchaseToken(purchase.getPurchaseToken())
                            .build();
                    mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener() {
                        @Override
                        public void onAcknowledgePurchaseResponse(@NonNull BillingResult billingResult) {
                            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                                if (purchase.getSku().equals("premium"))
                                {
                                    try {
                                       //Satın alma başarılıysa yapılacak işlemler
                                    }
                                    catch (Exception e)
                                    {
                                        System.out.println("Değer: "+e);
                                    }
                                }
                            }
                        }
                    });
                }


            }

        }

        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED)
        {
            Toast.makeText(getActivity(),getResources().getString(R.string.premium_error),Toast.LENGTH_SHORT).show();
        }
    }
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir