Android应用内购买:去除广告

3
在我的安卓应用中,在某些活动的底部显示一些小广告横幅。现在,我想通过应用内购买为用户提供移除这些广告的机会。
如何实现这个功能呢?
由于在某些活动开始后立即显示广告,每次显示广告时查询谷歌服务购买条目似乎不是一个好方法,因为连接到该服务需要一些时间。 我考虑在启动页中查询谷歌服务一次,并使用我的应用程序上下文单例中的布尔变量存储无广告是否已购买的信息。然后在活动的onCreate中检查布尔变量isPremium是否为true。如果是这样,则将广告视图的可见性设置为false findViewById(R.id.adview).setVisibility(false)
这个方法是否安全? 我不确定应用程序管理器能否杀死存储变量的ApplicationContext而不杀死所有活动。

我也想知道。 - Shajeel Afzal
2个回答

1

使用一个布尔值并将变量设置为null。然后只查询一次它是否为null(懒加载)。如果您的应用程序被杀死,它将以null开始,然后您将简单地重新查询。还有可能更好的想法是实际上删除AdViews,否则它们将继续发出广告请求,您将获得非常低的CTR。


听起来不错。由于我需要在启动后立即获取数据,因此我将使用SharedPreferences的组合。在每次检查BillingService时,我还会更新一个sharedPref布尔值以便在布尔值为空但我需要知道是否购买了高级版时可以回退。 由于Pref经常更新,因此这也应该受到用户操纵的保护。 而且我将完全删除AdViews。谢谢你的提示(我以为它们如果不可见就停止升级,但没有检查)。 - danijoo
@nikolay-elenkov,你知道我需要手动报告并支付哪些国家的Google应用内购买增值税吗?我已经了解到日本需要手动报告。还有其他国家吗?如果你能在https://dev59.com/L5Xfa4cB1Zd3GeqPlePO上阅读/回答我的问题,我会很高兴的。 - Vidar Vestnes

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接