在免费或专业模式下启动应用程序的最佳方式
Best way to start an app in Free or Pro mode
我有一个 Android 应用,我还提供 1 次应用内购买以将此类应用解锁为专业版。
我知道如何使用应用内购买 API 等,但我发现关于如何检查应用程序是否应以免费或专业版启动的方式不一致。
很多人建议应用在购买成功后应该将Google播放收据或其他信息存储在本地数据库中,让应用在启动时检查这些信息是否存在(以便正常启动作为免费或专业版)
我的问题是,与其费心保存购买信息并从本地数据库中检索它,为什么不调用恢复购买 API RestorePurchases()
,看看返回的对象,如果 InApp项目是否存在并相应地解锁应用程序?
据我所知,该呼叫不需要互联网连接,它只是对本地 Google 播放权限的本地呼叫...我错过了什么吗?
让我解释一下我们如何在 QuitNow! 中管理它,这是一款与您的行为相同的应用程序。
我们只有一个名为 unlock_all_pro_features
的 SKU。如果用户有,说明用户之前购买了PRO功能。
因此,在 Android 端,每次启动应用程序时,我们都会尝试连接到 IInAppBillingService
。当调用 onServiceConnected()
时,我们会为所有用户拥有的 SKU 请求它。如果它有我们可爱的 SKU,我们会在 SharedPreference
中存储该用户是 PRO 用户。然后,如果在执行所有这些操作之前它不是 PRO,我们会更新屏幕以显示全新功能。
不好的地方:用户可以 return SKU!
面对这一点,当我们认为用户是专业用户时,我们还会询问用户是否有所需的 SKU。如果该检查失败 20 次,我们会将功能重置为免费版本。
为什么要检查 20 次而不是一次?有时,我们发现服务说用户有任何 SKU,而他实际上有 PRO。为什么?不知道。因此,检查 20 次是确保我们不会在不需要时踢 PRO 用户的简单方法。
我有一个 Android 应用,我还提供 1 次应用内购买以将此类应用解锁为专业版。
我知道如何使用应用内购买 API 等,但我发现关于如何检查应用程序是否应以免费或专业版启动的方式不一致。
很多人建议应用在购买成功后应该将Google播放收据或其他信息存储在本地数据库中,让应用在启动时检查这些信息是否存在(以便正常启动作为免费或专业版)
我的问题是,与其费心保存购买信息并从本地数据库中检索它,为什么不调用恢复购买 API RestorePurchases()
,看看返回的对象,如果 InApp项目是否存在并相应地解锁应用程序?
据我所知,该呼叫不需要互联网连接,它只是对本地 Google 播放权限的本地呼叫...我错过了什么吗?
让我解释一下我们如何在 QuitNow! 中管理它,这是一款与您的行为相同的应用程序。
我们只有一个名为 unlock_all_pro_features
的 SKU。如果用户有,说明用户之前购买了PRO功能。
因此,在 Android 端,每次启动应用程序时,我们都会尝试连接到 IInAppBillingService
。当调用 onServiceConnected()
时,我们会为所有用户拥有的 SKU 请求它。如果它有我们可爱的 SKU,我们会在 SharedPreference
中存储该用户是 PRO 用户。然后,如果在执行所有这些操作之前它不是 PRO,我们会更新屏幕以显示全新功能。
不好的地方:用户可以 return SKU!
面对这一点,当我们认为用户是专业用户时,我们还会询问用户是否有所需的 SKU。如果该检查失败 20 次,我们会将功能重置为免费版本。
为什么要检查 20 次而不是一次?有时,我们发现服务说用户有任何 SKU,而他实际上有 PRO。为什么?不知道。因此,检查 20 次是确保我们不会在不需要时踢 PRO 用户的简单方法。