1

我正在开发一个带有单一源库的 android 应用程序。我希望提交免费和付费版本的应用程序。对于免费版本,我计划禁用一些功能并为付费版本提供更多功能。有什么办法可以找到安卓应用是免费的还是通过java代码付费的?

编辑 1:在 windows phone“ App.xaml.cs ”文件中包含以下方法来识别 Windows Phone 应用程序的免费或付费版本。

private void Application_Launching(object sender, LaunchingEventArgs e)
{
   var license = new Microsoft.Phone.Marketplace.LicenseInformation();
   IsTrial = license.IsTrial();
}

这里 IsTrail 是返回 true 或 false 的属性。有什么方法可以让安卓检测免费版还是付费版。?

4

2 回答 2

1

Google Play 服务不提供任何 API 来访问与正在运行的应用程序相关的 Google Play 元数据。应用程序许可可能是一种前进的方式,但用户 Sandy 提到它不能在付费应用程序中使用(虽然听起来很奇怪)。

我会建议另一种前进方式:

  • 除非您通过应用程序内购买提供单个版本的应用程序以从免费版本升级到付费版本,否则您必须将两个不同的版本上传到 Google Play(因为两个应用程序的包名称不能相同)。没有办法绕过这个事实。

  • 由于您必须构建应用程序的两个不同版本,您可以在编译时预处理已编译的代码并替换免费和付费版本之间不同的代码部分。使用精心设计的代码,这应该完全没有问题。图书馆项目应该适合这个。

  • 另一种选择是在编译时提供两组不同的数据/配置文件,您可以通过配置/启动参数控制应该激活代码的哪些部分。

如果您可以提供有关该应用程序的更多信息,那么建议一个好的解决方案会更容易。是付费应用有更多关卡的游戏吗?它是免费版本中没有某些功能的应用程序吗?它是免费版中每天限制使用一定次数的应用程序吗?

更新:您提到您希望在免费应用程序中禁用评论,而在付费应用程序中,评论应发布到您的服务器。我认为最好的方法是将付费和免费逻辑分成两个库项目,并在构建付费版本时使用一个项目,在构建免费版本时使用一个项目:

  1. 创建两个库项目,一个用于免费应用程序的代码,一个用于付费应用程序。在这两个项目中,您应该有一个名为 CommentPoster 或类似的类。让这两个类从您的主项目中实现一个接口,该接口定义了当用户发表评论时将调用的方法,我们称之为 ICommentPoster 并有一个名为 postComment(String comment) 的方法。

  2. 让您在付费版本中的 CommentPoster 类的 postComment() 方法将评论发送到服务器

  3. 让免费版本中的 CommentPoster 类的 postComment() 方法创建一个对话框、toast 或其他一些方法来告诉用户此功能不可用。如果您想让用户事先知道评论不可用,您可以选择在 ICommentPoster 中使用另一个名为 isAvailable() 的方法

如果您真的不喜欢两个库项目的想法并且希望将所有代码保留在一个项目中,您可以进行一些预处理并包含两个不同的配置文件中的一个,并让应用程序读取配置文件以检查注释是否应该是否可用。这具有很容易被破解的缺点,因为您需要在应用程序中拥有所有代码,并且只需修改配置文件即可获得付费版本的好处(我猜很可能在有根设备上存在更高的风险)

于 2013-05-21T06:01:35.310 回答
0

目前不支持此功能。您可以检查用户是否使用许可服务 (LVL) 购买了付费应用,但不能在付费应用中使用。

于 2013-05-21T05:49:23.817 回答