我正在开发一个带有单一源库的Android应用程序。我希望提交免费和付费版本的应用程序。对于免费版本,我计划禁用某些功能,并为付费功能提供更多功能。有没有办法找到Android应用程序是免费的或由Java代码支付?
编辑1: 在Windows手机中,“ 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的属性。是否有任何方法可供Android检测免费或付费版本。?
答案 0 :(得分:1)
Google Play Services未提供任何用于访问与正在运行的应用相关的Google Play元数据的API。 Application Licensing可能是一种前进的方式,但是用户Sandy提到它不能在付费应用中使用(虽然听起来很奇怪)。
我会建议另一种方法:
除非您通过应用内购买提供单个版本的应用以从免费升级到付费版本,否则您必须将两个不同版本上传到Google Play(因为套餐名称不能相同两个应用程序)。没有办法解决这个问题。
由于您必须构建两个不同版本的应用程序,您可以在编译时预处理已编译的代码并替换免费版和付费版之间不同的代码部分。使用精心设计的代码,这应该没有问题。 Library projects应该适用于此。
另一个选择是在编译时提供两组不同的数据/配置文件,您可以通过配置/启动参数控制应激活代码的哪些部分。
如果您可以提供有关该应用的更多信息,那么建议一个好的解决方案会更容易。这是付费应用程序有更多级别的游戏吗?它是一个免费版本中没有某些功能的应用程序吗?它是一个限制在免费版本中每天使用一定数量的应用程序吗?
更新:您提到要在免费应用中禁用评论,而在付费应用中,评论应发布到您的服务器。我认为最好的方法是将付费和免费逻辑分成两个库项目,在构建付费版本时使用一个项目,在构建免费版本时使用一个项目:
创建两个library projects,其中一个包含免费应用的代码,另一个包含付费应用。在这两个项目中,你应该有一个名为CommentPoster的类或类似的东西。让两个类都实现一个来自主项目的接口,该接口定义了当用户发布注释时将调用的方法,让我们称之为ICommentPoster并使用一个名为postComment的方法(String comment)。
让付费版本的CommentPoster类的postComment()方法将注释发送到服务器
让免费版本的CommentPoster类的postComment()方法创建一个对话框,吐司或其他一些告诉用户此功能不可用的方法。如果您想让用户事先知道评论不可用,您可以选择在ICommentPoster中使用另一个名为isAvailable()的方法
如果你真的不喜欢两个库项目的想法,并希望将所有代码保存在一个项目中,你可以做一些预处理,并包括两个不同的配置文件中的一个,并让应用程序读取配置文件来检查如果评论应该是否可用。这样做的缺点是很容易被黑客攻击,因为你需要在你的应用程序中拥有所有代码,而这只是修改配置文件以获得付费版本的好处(我估计,根本设备的风险可能更高)
答案 1 :(得分:0)
目前没有对此的支持。您可以使用许可服务(LVL)检查用户是否购买了付费应用,但无法在付费应用中使用。