1

我正在使用 GWT 和 PhoneGap 为 Android、iPhone/iPad 和 Windows Phone 设计一个应用程序。GWT 将允许我用 Java 编写整个应用程序(我的强项,与 JavaScript 或 CSS 不同)并将其翻译成跨浏览器的 JavaScript/AJAX。然后,PhoneGap 将包装生成的 JavaScript 并将其转换为上述三个平台中的每一个的本机应用程序。

我想要一个“面向插件的架构”,用户可以选择购买(或通过其他方式获得资格)“附加组件”(插件/扩展),这将增强应用程序的功能。

通常我会通过使用Java 简单插件框架 (JSPF)来实现这一点,并允许用户在付费时下载插件 JAR。然后将这些插件 JAR 添加到主应用程序的类路径中,以便下次启动并扫描插件的类路径时,它会找到并加载它们。

本机应用程序可以做到这一点吗?我认为除了 APK、IPA 和 XAP(分别为 Android、iPhone 和 WinPhone)文件之外,我无法将任何其他文件部署到这些市场。

在 Java 领域,这就像必须以可执行 JAR(包含其自己的main方法)的形式下载“基础”应用程序,然后必须下载也是可执行 JAR 的“插件”应用程序,并且不知何故让两者表现得像一个普通的插件架构(如果你有 1 个可执行的 JAR 基础应用程序,然后有 1 个以上的插件不可执行的 JAR 库)。

所以我问:从部署/下载的角度来看,附加组件如何为原生应用工作?如何让 2 个或更多 APK/IPA/XAP 在客户端相互通信?如果不可能,原生应用程序开发人员如何处理附加组件(我知道它们存在,我见过它们!)?提前致谢!

4

2 回答 2

0

至于 iPhone - 唯一的方法是实现附加功能并禁用它们,直到用户在应用程序中购买以解锁该功能。

在 Android 中,您可以让应用程序相互通信,以便用户只需加载仅提供附加功能的附加应用程序。有关此的更多详细信息.. 两个应用程序之间的 android 通信

WP8 - 我还没有经验

于 2012-08-25T15:05:32.207 回答
0

虽然我不是核心的 Android 开发者,但这里有一些我到目前为止使用 Android 的经验的建议:

Android 的一种可能解决方案是对应用程序使用更新。实现此目的的一种方法是使用后台服务,该服务在应用程序启动时检查更新,或使用 GCM(谷歌云消息传递)将更新消息推送到应用程序。第二种选择要好得多,因为您可以在每个设备的基础上向用户提供即时更新(用户可以拥有多个设备),只要他/她购买了您的附加功能。用户收到更新消息后,您可以下载具有新功能的整个应用程序并在设备上更新应用程序。当然在这种情况下,您需要备份应用程序的现有数据并在安装更新的应用程序后恢复。

我不知道这件事是否可以完成,但在我看来,如果您可以通过 Android Market 为购买了特定插件的合法用户提供更新的应用程序,这也是一个不错的选择。

另一种方法是将每个附加组件创建为服务,然后让主应用程序可以在启动时检测(或绑定)这些服务,如果它们可用,您的应用程序可以轻松地与它们通信。您甚至可以使用 Intents 和 BroadcastReceivers 从您的主应用程序中调用新部署的插件的 UI 部分。

就 Android 而言,您可能还会发现这很有用:

但是,应用程序可以通过多种方式与其他应用程序共享数据以及应用程序访问系统服务:

可以安排两个应用程序共享同一个 Linux 用户 ID,在这种情况下,它们可以访问彼此的文件。为了节省系统资源,相同用户ID的应用程序也可以安排在同一个Linux进程中运行并共享同一个VM(应用程序也必须使用相同的证书进行签名)。

希望这能给你一些有用的信息。

于 2012-08-25T18:16:21.883 回答