Android 应用内购买订阅并免费试用 - 如何避免滥用?
Posted
技术标签:
【中文标题】Android 应用内购买订阅并免费试用 - 如何避免滥用?【英文标题】:Android in-app purchase of a subscription with a free trial - how to avoid abuse? 【发布时间】:2014-10-26 01:21:51 【问题描述】:我已经到处搜索了有关如何最好地解决此问题的指导... 我已阅读 Google Play 应用内订阅 (http://developer.android.com/google/play/billing/billing_subscriptions.html) 和关于实施订阅 (http://developer.android.com/google/play/billing/billing_integrate.html#Subs) 的部分,但我仍然看不到避免滥用。
我在这里也看到了相关问题 - Google Inapp purchasing and trial period。但是,使用 SharedPreferences 相对容易被滥用。
我有一个应用需要订阅才能获得全部功能。我设置了一个每月订阅的应用内购买产品,比如 ID =“myapp.subscription.monthly”,每月收费 0.99 美元。 我想让人们有机会体验完整的功能,所以我给“myapp.subscription.monthly”一个 30 天的试用期。
当用户第一次安装应用程序时,系统会提示他们购买每月订阅,向他们收取 0.00 美元,并告知从现在起 30 天起,他们的卡将开始收取 0.99 美元/月的费用。
当我的应用调用“getPurchases()”时,将返回他们有订阅的事实。
根据“实施”部分,如果他们在免费试用期间取消,或者说在几个月的计费后取消,则调用“getPurchases()”不会返回任何内容:
该调用返回一个包含用户拥有的所有活动订阅的 Bundle。一旦订阅过期而没有续订,它将不再出现在返回的捆绑包中。
由于用户没有有效的订阅,我的应用会提示他们购买订阅以获得全部功能。同样,他们将获得 30 天的免费试用期。
我曾考虑过拥有第二个订阅产品,例如“myapp.subscription.monthly.no.free.trial”,我希望它成为可供购买的项目。但是,如果无法询问 Google Play 用户是否曾经之前购买过订阅,我的应用无法知道应该提供“无免费试用”产品。
那么,如何避免有人一遍又一遍地订阅和取消以继续获得 30 天免费?有没有办法向 Google Play 询问完整的购买历史记录?
【问题讨论】:
你可以加密共享首选项 【参考方案1】:根据文档(https://support.google.com/googleplay/answer/2476088?hl=en,试用订阅),它说:
您不能注册多次试用。
我猜谷歌会自动处理这个
【讨论】:
【参考方案2】:Google Play 商店会自动处理此问题
如果您的用户取消免费试用,然后尝试购买,他们将看到 0.99 美元,而不是再次提供免费试用。 但是,如果用户在取消免费试用后支付 0.99 美元,则只有在取消的免费试用期结束后才会开始实际计费。
如果有任何方法可以知道产品是否在客户端提供免费试用,那将会很有帮助。希望尽快将其放入 In-App Billing API。
【讨论】:
【参考方案3】:我也在使用应用内计费,但谷歌总是为每位用户提供一次免费试用。 如果您再次订阅相同的 sku,Google 将不会向该用户提供试用期。
【讨论】:
以上是关于Android 应用内购买订阅并免费试用 - 如何避免滥用?的主要内容,如果未能解决你的问题,请参考以下文章
在 iTunesConnect 上添加应用购买只允许免费订阅