我今天在 Google Play 中有一个付费应用程序,我想将其更改为具有 3 次应用内购买的免费应用程序。问题在于如何将应用内购买“给予”现有客户,因为已经为应用付费。
我只是有一个想法-许可可以解决问题吗?
现有的付费应用程序使用 Google 许可,但是当所有功能都作为应用程序内购买购买时,这应该不再需要 - 对吗?因此,所有现有客户都有许可证,而所有新客户都不需要许可证。
是否可以检查许可证,如果发现授予用户访问与 3 个应用内购买相同的功能的访问权限?
我今天在 Google Play 中有一个付费应用程序,我想将其更改为具有 3 次应用内购买的免费应用程序。问题在于如何将应用内购买“给予”现有客户,因为已经为应用付费。
我只是有一个想法-许可可以解决问题吗?
现有的付费应用程序使用 Google 许可,但是当所有功能都作为应用程序内购买购买时,这应该不再需要 - 对吗?因此,所有现有客户都有许可证,而所有新客户都不需要许可证。
是否可以检查许可证,如果发现授予用户访问与 3 个应用内购买相同的功能的访问权限?
据我所知,当用户购买还不是免费的(例如通过优惠券)时,没有好的方法可以免费为用户提供应用内购买。
在如何使用我的应用程序的付费版本作为免费版本的“钥匙”中讨论了一些可能的方法来做到这一点?
一种方法是使用一些代码来检查“旧用户”(那些安装了旧的付费应用程序的用户),并在他们的设备上设置一个偏好,将他们标记为拥有付费应用程序。
如果用户切换手机或卸载然后重新安装您的应用程序,您将遇到问题。您可以通过为旧用户添加第二套免费的应用内产品来规避这种情况,但仅提供给安装了旧应用的用户。在他们购买免费的旧版本后,他们可以卸载旧应用程序。然后,每当您检查购买的产品时,您都会检查旧产品或新产品。
我认为您可以这样做,以验证“专业”应用程序是否可用并且由相同的签名签名。
public boolean isProAppPresent()
{
try
{
PackageInfo info = context.getPackageManager().getPackageInfo("x.x.x.pro",
PackageManager.GET_META_DATA);
Log.d(TAG, "Pro app is installed: " + info.applicationInfo.name);
return context.getPackageManager().checkSignatures("x.x.x",
"x.x.x.pro") == PackageManager.SIGNATURE_MATCH;
}
catch (NameNotFoundException e)
{
return false;
}
}
这很容易做到,但我不确定它是否是一个完整的保护。