【问题标题】:android Inapp Billing: remove adsandroid Inapp Billing:删除广告
【发布时间】:2013-09-05 09:06:22
【问题描述】:

在我的 Android 应用程序中,我在某些活动中在屏幕底部显示了一些小广告横幅。我现在想让用户有机会通过应用内结算来删除这些广告。

什么是实现它的好方法?

由于广告在某些活动开始后立即显示,因此每次我显示广告时都向谷歌服务查询购买的物品似乎很糟糕,因为连接到服务需要一些时间。 我考虑过在启动屏幕中查询一次谷歌服务,如果购买了 adfree,则在我的应用程序上下文 singelton 中使用布尔值来存储信息。在活动onCreate 中,然后我检查布尔值isPremium 是否为真。如果是这种情况,我将 adview 的可见性设置为 false findViewById(R.id.adview).setVisibility(false)

这样安全吗? 我不确定 ApplicationManager 是否可以在不终止所有活动的情况下终止存储变量的 ApplicationContext。

【问题讨论】:

  • 我也想知道。

标签: android in-app-purchase


【解决方案1】:

使用Boolean 并将变量设置为null。然后只查询一次是否为null(惰性初始化)。如果您的应用程序被终止,它将以null 开头,您只需再次查询即可。实际删除AdViews 也可能是一个更好的主意,否则他们将继续发出广告请求,您将获得非常低的点击率。

【讨论】:

  • 听起来不错。由于我在启动后立即需要数据,因此将其与 SharedPreferences 结合使用。在 BillingService 的每次检查中,我还会更新 sharedPref 布尔值以回退到布尔值是否为空,但我需要知道是否购买了溢价。由于 Pref 经常更新,这也应该避免用户操作。我将完全删除 AdViews。感谢您的提示(我认为如果不可见他们会停止升级,但没有检查)
  • @nikolay-elenkov 您是否知道我需要手动报告哪些国家/地区的增值税并通过 Google 进行应用内结算?我读过日本需要手动报告。还有谁?如果你能在stackoverflow.com/questions/36506835/…阅读/回答我的Q,我会很高兴
【解决方案2】:

这是购买后删除广告的最佳方式

if (!bp.isPurchased("prime")  {
        mAdView = (AdView) findViewById(R.id.adView1);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);


    }else if(bp.isPurchased("prime") ){
        mAdView = (AdView) findViewById(R.id.adView1);

        mAdView.setVisibility(View.GONE);

    }

我正在使用https://github.com/anjlab/android-inapp-billing-v3

【讨论】:

    猜你喜欢
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2012-05-18
    • 2018-12-25
    相关资源
    最近更新 更多