【发布时间】:2014-01-30 03:03:26
【问题描述】:
我们正在构建一个网络应用程序,让用户能够创建自己的移动应用程序并管理其个人资料中的内容。移动应用程序对我们所有的用户都有类似的功能,唯一不同的是 - 它是内容。因此,当一个人来并在我们的网络服务中创建了一个移动应用程序,然后他添加了一些新闻、照片等 - 他的移动应用程序应该只显示他的新闻和照片,另一个人将拥有自己的移动应用程序和他自己的新闻和照片。
要获取特定应用程序的内容,我们有唯一的 API KEY,使用此 API KEY 移动应用程序会向我们的 API 发出请求以获取唯一的内容。
但主要问题是,我们不知道如何将这个 API KEY 嵌入到移动应用程序中。
情况如下:
- 我们使用Phonegap创建移动应用,原代码是HTML+JS。要构建应用程序,我们使用 Phonegap Build API,这需要从 Github 存储库或 ZIP 存档交付 JS 应用程序。由于唯一不同的是内容(HTML+JS 代码库对于每个用户应用程序都是相同的),我们决定为所有用户应用程序使用单个 Github 存储库。此外,维护一个存储库比维护多个存储库更容易
- 我们使用Phonegap Build API 自动为用户创建移动应用程序。因此,当用户按下“CREATE”时——Phonegap 移动应用程序正在使用 Github 存储库代码创建。 Phonegap Build API 'create' 方法允许设置应用程序的标题、描述、版本、包等。所以每个应用程序都会有一些自定义设置。此设置可在应用构建前后进行配置,因此我们可以更改标题、版本或包。
在这种情况下,每个应用程序中的 JS 代码都是相同的,我们不能在 JS 代码中硬编码唯一的 api key 来进行 API 调用。我们可以使用这些可配置的选项(标题、描述等),最好的一个是“包”,我们可以在其中设置唯一的应用程序标识符(例如“com.application.user1app”),但问题是我们不能在应用程序构建后直接在设备上获取它们。我们已经找到了一些自定义的 phonegap 插件,它们能够在 JS 中获取应用程序版本或应用程序名称,但是它们已经过时或不再支持,Phonegap 默认插件也没有这个功能。由于我们不是本地移动开发人员,因此编写自定义插件对我们来说是个问题(或者您可能知道任何可以返回应用程序包名称的 phonegap 3.1.0 插件,这将有很大帮助)
问题是:您认为,有没有其他方法可以从构建的应用程序的 JS 中识别出具体用户的应用程序正在运行什么?确定移动应用程序应该在哪里进行 API 调用? (如果我们无法硬编码 API KEY 并且我们没有插件)。
我们的计划并不严格,所以如果没有其他方法,我们会要求自定义插件或修改应用程序创建过程的方案。 谢谢。
【问题讨论】:
-
为什么不使用设备 UUID 而不是 api 密钥?您可以获得每个设备的独特内容。如果你真的想使用 api 密钥,它可以在第一次连接时发送到设备并存储在本地存储中。
-
@QuickFix,一个应用程序可以安装在多个设备上,我们不需要识别设备,而是在设备上运行的应用程序。一个应用程序适用于一位网站用户,而不是一台设备。如果我们有很多用户应用程序,我们想知道哪个应用程序向 API 发出请求,有关设备的信息不会提供此信息。要在第一次连接时将 API 密钥发送到设备,我们应该知道哪个应用程序在请求它,以获取该应用程序的 API 密钥。
标签: cordova phonegap-plugins phonegap-build