如何将付费安卓应用迁移到使用应用内购买付费的应用?

18

我在安卓市场上发布了两个版本的应用,一个是付费版,一个是免费版。但我想将应用内购功能整合到我的免费应用中,并对订阅用户收取更低价格的订阅费用,比付费应用的当前价格还要低。

但对于现有客户应该如何处理呢?让他们再次为使用已解锁功能而付费似乎不公平,因为他们是我的应用早期用户。理想情况下,我希望实现一些方法,让现有用户可以获得在我的免费应用程序中已解锁的功能。

有没有什么好的方式来解决这个问题?提供一个良好的解决方案概述即可,我不介意研究如何实际实现这样的方法。


2
你有没有找到解决方案?我正在考虑做同样的事情,需要找到一种方法来为现有付费用户提供我计划通过应用内购买解锁的功能。我正在考虑像这样做(https://dev59.com/oXI95IYBdhLWcg3w1Bno)来检测升级与干净安装,但担心它不会像免费授予现有用户适当的应用内购买那样安全(如果可能的话)。 - Andy Dyer
我还没有找到解决方案。我正在考虑一种解决方案,检查设备上是否安装了付费应用程序,如果是,则向更新的免费应用程序的共享首选项中添加一个条目,其中包含应用内订阅的已解锁功能的用户应该具有的指示。但我还没有花时间调查这种解决方案的利弊。 - Jan-Henk
@Jan-Henk,你找到解决方案了吗?你是怎么做到的?我也想实现这个功能。分享一下我的经验,我购买了SwiftKey的付费版本,然后Swiftkey变成了应用内购买的概念。我不知道他们是怎么做到的,但是他们“知道”我是付费用户,并让我免费使用1个主题。 - stuckedoverflow
5个回答

4
发布一个独立的免费版本应用程序;使用付费版本就像是免费版本的许可证密钥。
PackageManager manager = getPackageManager();
if (manager.checkSignatures("old.package.name", "new.package.name")
    == PackageManager.SIGNATURE_MATCH) {
    //full version
}

这是最简单的解决方案。天才! - hunterp
1
这是一个简单的解决方案,但是它不需要用户保留旧的已付费应用程序,即使他们不再使用它吗? - Bjarte Aune Olsen
你可以运行一次检查,如果用户已经安装了付费应用,则将该结果存储在持久性存储中,以便后续运行免费应用程序时始终运行完整版本。完成后,您可以向用户显示对话框,告诉他们卸载付费版本。 - donturner
@Dan Fabulich,但这样做会丢失所有的统计数据。有更好的解决方案吗? - stuckedoverflow

3
您可以保留付费版和免费/IAB版,但是它们都应该基于同一个库项目,这样您就只需要维护一组源文件。该库项目可以为付费版解锁目前所有可用的功能(例如通过测试应用程序的包名称进行激活),并且仅在通过IAB进行付款后才能为免费版解锁相同的功能。
这也允许您向付费版用户收取额外的费用,以获取未来添加的重要功能。
另外,您现有的付费用户不需要做任何事情;对他们来说,似乎没有发生任何变化。特别是,他们不必安装您的免费/IAB应用程序,也不必经过任何特殊的授权程序。
缺点是您需要为每个发布构建和上传两个项目。但是,这可以部分自动化。

刚注意到你的问题是针对2012年的!这里其他一些答案是来自2013年,所以我错过了。希望你已经解决了问题;也许这个答案会帮助到其他人。 - Carl

1
  • 将您的数据库版本增加(例如,34 -> 35)
  • 在SqliteOpenHelper方法中为之前的用户解锁功能

示例:

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
    if(oldVersion != 0 and oldVersion <= 34){
       appConf.unlockAllFeatures()
    }
}
  • 如果您的应用程序尚未使用数据库,请在onCreate中使用它,但请注意,onCreate会在第一次调用数据库时被调用

0

如果我理解不正确,请纠正我。你提到订阅,这意味着用户详细信息+数据库+其他信息?

如果你的应用程序没有数据库或任何东西来保存用户记录。我建议发布更新的付费应用程序,并启用sharedpreference或公共ini文件。 使用免费应用程序读取相同的sharedpreferenece文件或您自己的ini文件以读取设置。

选择数据库将有助于未来进行更多的客户关系活动。


-1

7
你的链接涵盖了如何实现应用内购买,但我问题的重点是如何将我的现有付费应用程序的用户迁移到免费应用程序中,其中将实现应用内购买。我正在寻找一种解决方案,使这些用户不必再次支付。 - Jan-Henk
Android开发网站根本没有涵盖这种用例。 - donturner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接