Dan*_*ich 12 android licensing in-app-purchase
我在Google Play商店中有一个付费应用.我正在考虑降低该应用的价格(有些;并非一直免费),并提供其中一项功能作为单独的应用内购买.
如果我这样做了,我就不想把这个功能从任何已经购买它的人身上移开.
有没有办法找出用户购买我的应用程序的日期,或他们购买的应用程序的原始版本,或类似的东西?我想说的是,"如果应用程序在价格变化之前(按日期或按版本),他们应该免费提供该功能;否则,需要IAP才能解锁该功能."
例如,iOS确实有这样的功能; 应用程序收据包括"originalVersion"字段,可用于控制对功能的访问.
\n\n\n不幸的是,对于您的客户来说,这是不可能的。Google Play没有API 调用或其他任何内容,您可以在其中获取应用程序的购买时间。
\n
我知道存在一个android-publisher API,但是它不提供任何功能来检查它。
\n\n您要使用的功能不公开,仅由 Playstore 内部使用!
\n\n
\n您可以采取的解决方法:
1.获取应用安装时间
\n\n第一次启动时,您可以检查并解锁功能。
\n\n\n\n\n警告:该系统可能会通过更改设备上的时间而被滥用
\n
long installed = context\n.getPackageManager()\n.getPackageInfo(context.getPackag\xe2\x80\x8c\xe2\x80\x8beName(), 0)\n.firstInstallTime;\nRun Code Online (Sandbox Code Playgroud)\n\n
\n 2. 为用户提供免费密钥
您可以通过邮件或推送通知为每个使用该应用程序 atm 的用户提供免费密钥
\n\n
\n 3. 立即解锁应用内购买
发布应用程序更新,免费解锁应用内购买。几周后,您可以以较低的价格发布新版本,并解锁功能,就像您当前的客户购买了您的扩展一样。
\n\n如果您使用某种持久存储,您也许可以解决这个问题。
\n\n对于 SharedPreferences,在第一次运行时,使用 检查您的首选项之一SharedPreferences.contains()。如果包含它,则该应用程序必须已经安装。如果不是,请设置另一个首选项将用户标记为新用户,然后再设置一个首选项,这样就不会每次都进行检查。
这可能仅在首选项没有“默认”值时才有效,我不完全确定在 xml 中设置默认值是否会将其标记为包含。
\n\n如果您有任何资产转移到 SD,或任何类似的一次性设置,您可以执行类似的操作。只需在第一次执行之前检查一下是否已经完成。
\n\n如果您使用的是 SQLite 数据库,如果来自当前版本(或更早版本),则可以增加数据库版本并在 onUpgrade() 中标记为“付费”。
\n\n不过,这里也存在一些陷阱。例如,如果以前的付费客户在安装新版本之前完全卸载,或者它位于新设备上。因此,您应该:
\n\n
\n 4. 提供支持
在应用程序的“关于”或“常见问题解答”部分以及首次运行新版本时,设置一个支持邮件地址,客户可以在遇到任何问题时使用该地址,因为新功能尚未为他们解锁。
\n\n他们可以提供购买的任何证明(账单)。
\n\n
\n就像我说的,这些想法是解决方法,但我不知道有任何“官方”方法来检查应用程序安装是升级还是初始安装。
\n\n\n您最好的选择可能是这四种的组合。
\n
\n仅供参考:我已在 Google Cloud Connect 中针对工作提出了功能请求/想法,您可以投票: https: //connect.googleforwork.com/ideas/9392(只有拥有付费 Google Business 帐户才能投票) )
\n我希望这至少对你有一点帮助。
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |