Хотите удалить рекламу через InAppPurchase

#android #admob #ads

#Android #admob #реклама

Вопрос:

Я внедрил admob interstitial в свое приложение для Android. Но я хочу отключить рекламу, если пользователи готовы платить. то есть InAppPurchase. Я написал приведенный ниже код для IAP, а также опубликовал apk для бета-тестирования продукта. Но все же он показывает, что «Товар не найден», когда я нажимаю кнопку «удалить рекламу».

Кто-нибудь может помочь мне написать правильный код или проверить, что приведенный ниже код правильный или неправильный для IAP?

 public static final String PRO_SKU = "removeads";
private final String BASE_64_PUBLIC_KEY = "KEY";
private Inventory mInventory;
IabHelper mHelper;
public static boolean isPro;
private InterstitialAd interstitial;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);}

    interstitial = new InterstitialAd(getActivity(),
            "AD UNIT");
    AdRequest adRequest = new AdRequest();

    interstitial.loadAd(adRequest);

    mHelper = new IabHelper(getActivity().getApplicationContext(),
            BASE_64_PUBLIC_KEY);
    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() 
    {
        @Override
        public void onIabSetupFinished(IabResult result) 
        {
            if (result.isSuccess()) 
            {
                loadInventory();
                Log.d("IAP", "IAP Setup Succesful yeah!");
            } else 
            {
                Log.d("IAP", "IAP Setup Failed");
            }
        }
    });
    ;

    //AD CODE

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_quality, container,
            false);

    ImageView purchaseAds = (ImageView) rootView.findViewById(R.id.promo);
    purchaseAds.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            purchasePro(PRO_SKU);

        }
    });

private void loadInventory() {
    mHelper.queryInventoryAsync(true,
            new IabHelper.QueryInventoryFinishedListener() {
                @Override
                public void onQueryInventoryFinished(IabResult result,
                        Inventory inventory) {
                    if (result.isSuccess()) {
                        mInventory = inventory;
                        Log.d("IAP inventory loader", "inventory loaded");
                        if (inventory.hasPurchase(PRO_SKU)) {
                            isPro = true;

                            Log.d("IAP inventory checker", "purchased");
                        } else {
                            Log.d("IAP inventory checker", "not purchased");
                            isPro = false;
                        }

                    } else {
                        Log.d("IAP inventory loader","inventory not loaded");
                    }
                }

            });
}

private void purchasePro(String sku) {

    mHelper.launchPurchaseFlow(getActivity(), sku, 1000,
            new IabHelper.OnIabPurchaseFinishedListener() {
                @Override
                public void onIabPurchaseFinished(IabResult result,
                        Purchase info) {
                    if (result.isSuccess()) {
                        isPro = true;
                        Log.d("IAP purchase person", "purchased!");
                    } else {
                        Toast.makeText(
                                getActivity().getApplicationContext(),
                                "Error in your purchase",
                                Toast.LENGTH_SHORT).show();
                        Log.d("IAP purchase person", "not purchased!");
                    }
                }
            }, null);

}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (!mHelper.handleActivityResult(1000, resultCode, data)) {
        super.onActivityResult(requestCode, resultCode, data);
    }
}
  

}

Комментарии:

1. Ваш вопрос слишком расплывчатый. Запустите его и посмотрите, работает ли он. Также не вызывайте interstitial.show() из onAdReceived, вызывайте его из естественной точки останова в вашем приложении.

2. да, но я не знаю следующую процедуру. Как я могу его запустить? если я запускаю его нормально, он показывает, что «товар не найден»

3. «Товар не найден» означает, что вы не настроили продукт для выставления счетов в приложении для этого приложения. Для этого приложения вам нужно сделать это в своей учетной записи Play Store.

4. ОК. Я это сделаю. Но, пожалуйста, скажите мне, нужно ли мне что-либо менять в этом коде?