android - 向现有用户提供免费的应用内购买

标签 android ios google-play in-app-purchase app-store

我制作了一个应用程序,现在在 Google Play Store 中运行(它也在 Apple App Store 中,直到 Apple 无故删除它)。该应用程序的价格为 1.99,但我现在正在考虑添加广告并将其设置为免费(反正我不确定..)通过应用程序内购买来删除广告。

问题是我绝对不想让人们再次付款(我说的是已经购买了它的人)。我如何向现有用户提供免费的应用程序内服务?我没有在线用户数据库,该应用完全离线。

最佳答案

我正在增强 Abr评论。

首先,每当你处理这种情况时,你必须有服务器数据库(用于身份验证)并存储谁购买了你的应用程序。我认为您不需要本地数据库,但您需要一个标志来定义当前用户是否购买了该应用程序,并且您可以在 NSUserDefault 中维护该标志。

现在,每当用户通过任何设备登录时,您都需要通过 API 在您的服务器数据库中匹配他的电子邮件 ID/电话号码,并检查他的用户凭据是否有效以及是否有效然后它是否购买用户并将此标志保存在 NSUserDefault 中。

现在在您的应用中做任何您想更改的事情,它不会向您购买的用户反射(reflect)任何问题,因为他们总是从服务器中过滤掉。

注意:您没有考虑一种情况,如果一个用户通过 Android 应用程序在您的应用程序中注册并进行谷歌应用程序内购买怎么办。后来他买了 iPhone 并从苹果商店下载了你的应用程序。根据您目前的情况,他还必须为 i-phone 购买您的应用程序。我认为没有一个用户想再次购买它。

所以我的解释也将解决这个问题。

Edit

As you said app is completely offline in comment.

为了让用户在线进行应用内购买交易。现在你可以做一件事,在此期间,如果用户付款成功,则将其数据存储到服务器中(显然他通过任何 ID 购买了应用程序,因此存储该 ID)。

现在,当用户再次安装时,会在应用内屏幕中提供一个恢复选项。当用户单击此按钮时,检查用户状态是否在您的服务器数据库中向用户付款,并在此处向用户询问电子邮件。

如果您没有服务器数据库,则从 native 存储恢复事务。

关于android - 向现有用户提供免费的应用内购买,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48506743/

相关文章:

java - 提交按钮后,用 TextView 替换 ratingBar?

android - Google Play 上的应用程序未在某些 Android 设备上显示

android - PackageManager.getInstallerPackageName() 可以告诉我我的应用是从亚马逊应用商店安装的吗?

android - 如何将线性布局 child 的高度设置为最高的 child 高度

java - animateLayoutChanges 单独对元素进行动画处理,即使它们位于 ViewGroup 中

android - 如何检测用户在我的 Activity 中按下 HOME 键?

iphone - 来自 UIImagePickerViewController 图像的方形缩略图

ios - 为什么我的项目中有一个 .o 文件没有 Provisioning Profile?

objective-c - 在基于导航 Controller 的应用程序的最终 View 中隐藏或禁用后退按钮

android - 在Google Play中降级应用程序? (Android市场)