有人可以形容我在Android应用程序中实现插件的解决方案吗?它如何在Android Market上销售?
通常,您创建一个游戏,其中4个第一级是免费的。然后,用户应该使用Android Market购买一些东西来解锁其他级别。
解决方案可能是列出手机上设置的名为com.company.myApp.additionalLevelSet1的软件包,但它看起来根本不安全! (用户可以手动设置插件包,因此可以自由解锁其他功能)
在iPhone上,您可以使用InAppPurchase购买非消耗品或消耗品。
任何帮助或建议将不胜感激。谢谢!
答案 0 :(得分:27)
在你的情况下这很简单,因为你不需要任何额外的逻辑,只需要更多的级别,所以我会坚持这个特定的情况:
您可以(或可能已经)将您的游戏关卡保存为.apk中的资源,因此插件可以是标准.apk,不会出现在用户列表中-应用。为了防止它出现,只需不要声明category-launcher:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
如果上面的代码段 NOT 出现在您的插件的AndroidManifest中,则用户无法直接访问它。
当您的主要游戏活动开始时,它应该检查插件的存在,您可以通过调用PackageManager.queryIntentActivities
来执行此操作。并查询您在插件的AndroidManifest文件中声明的特定意图,例如:
<intent-filter>
<action android:name="com.your.package.name.LEVEL_PACK" />
</intent-filter>
查询代码将是:
PackageManager packageManager = getPackageManager();
Intent levelsIntent = new Intent("com.your.package.name.LEVEL_PACK");
List<ResolveInfo> levelPacks = packageManager.queryIntentActivities(levelsIntent, 0);
还有更多方法可以做到这一点,但这非常简单直接。
最后一步是从已安装的级别包中访问级别。您可以致电:PackageManager.getResourcesForActivity
并加载相关资源并按原样使用它们。
答案 1 :(得分:0)
到目前为止,我在Android电子市场上看到的完全不同版本的应用程序是针对相同应用程序的免费与付费内容。
我还没有看过插件,所以我不知道这个功能是否可用,但如果你找不到它,可以解决方法是启动应用程序并将它们从添加应用程序隐藏到主菜单和/或快捷菜单,只需在主应用程序中添加一个链接即可。
另一种解决方法是将您的附加内容视为付费内容库,并在资源无法访问时简单地阻止级别访问。但是你必须验证你是否有权拥有与你的应用程序分开的私人库。
基本上你想要做的就是像Apple和Android这样的内容托管商试图避免或控制的内容,因为它允许你将新内容流式传输到你的应用程序而内容主机不知道它实际上是另一个应用程序的新内容。
我建议您阅读本文以了解为什么多个应用应用在Android中并不明显: Android Security