如何从付费Android应用程序迁移到通过应用内结算支付的应用程序?

时间:2012-01-18 22:08:16

标签: android in-app-billing android-lvl

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

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

有关如何实现这一目标的任何想法?一个好的方法概述是足够的,我不介意做一些关于如何实际实现这种方法的研究。

5 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

您可以保留两者您的付费您的免费/ IAB版本,但将它们都基于同一个库项目,这样您就只有一套源代码要维护的文件。图书馆项目可以解锁付费用户目前可用于付费版本的所有功能(例如,通过测试应用程序的包名称激活),并仅在通过IAB付款时解锁免费版本的相同功能。

如果您要在未来添加一些真正重要的功能并希望收取额外费用,这还允许您向付费版本的用户收取额外功能以外的其他功能。对那些人来说。

它还具有以下优势:您现有的付费用户根本不需要做任何事情;他们似乎没有发生任何变化。特别是,他们不必安装您的免费/ IAB应用程序,也不必通过任何特殊的授权程序。

缺点是你必须为每个版本构建和上传两个项目。但是,这可以部分自动化。

答案 2 :(得分:1)

  • 增加您的数据库版本(例如34 - > 35)
  • 方法SqliteOpenHelper解锁以前用户的功能

示例:

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

答案 3 :(得分:0)

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

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

前往数据库将有助于您将来开展更多客户关系活动。

答案 4 :(得分:-1)

Android开发网站很好地介绍了这一点。

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