如何从付费Android应用程序迁移到应用程序内付款应用程序?

我目前在Android市场上有两个版本的应用程序,一个是付费的,一个是免费的。 但是我希望将应用内付款整合到我的免费应用程序中,并在订阅基础上向客户收费,价格低于付费应用程序的当前价格。

但是,我应该如何处理现有的客户? 让他们再次支付使用付费function似乎是不公平的,而他们是我的应用程序的早期采用者。 理想情况下,我实现了一些可以让现有用户访问我的免费应用程序中的解锁function的东西。

任何想法如何做到这一点? 一个好的方法的提纲就足够了,我不介意去研究如何实际实现这样的方法。

Solutions Collecting From Web of "如何从付费Android应用程序迁移到应用程序内付款应用程序?"

发布一个单独的免费版本的应用程序; 使用付费版本,就好像它是免费版本的许可证密钥一样。

PackageManager manager = getPackageManager(); if (manager.checkSignatures("old.package.name", "new.package.name") == PackageManager.SIGNATURE_MATCH) { //full version } 

您可以保留您的付费免费/ IAB版本,但是将它们都保存在同一个库项目中,以便只保留一组源文件。 该图书馆项目可以解锁目前付费用户付费版本的所有function(激活,例如通过testing应用程序的软件包名称),并且只有在通过IAB进行付款后才能解锁免费版本的相同function。

这也可以让您向付费版本的用户收取除付费应用程序之外的其他function以外的其他function,如果您将来添加一些真正重要的function并希望为这些function收取额外的费用。

这也有利于你现在的付费用户根本不用做任何事情; 对他们来说,似乎没有发生变化。 特别是,他们不必安装您的免费/ IAB应用程序,或通过任何特殊的授权程序。

缺点是你将不得不为每个版本构build和上传两个项目。 但是,这可能会部分自动化。

  • 增加数据库版本(例如34 – > 35)
  • 在方法SqliteOpenHelper为以前的用户解锁您的function

例:

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

纠正我,如果我理解不正确。 你提到关于订阅哪个意思是用户详细信息+数据库+附加信息?

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

去数据库将在未来帮助您更多的客户关系活动。

Android开发网站涵盖了这个很好。

http://developer.android.com/guide/market/billing/index.html