有人知道直接更新会更新公共目录结构中的所有内容。我为多个应用程序使用了相同的代码库,唯一的变化是js文件中的某些设置,告诉应用程序如何操作。是否有一个目录,我可以将该js文件放在直接更新功能中是否安全?
我无法在IBM的网站上找到任何具体信息。
答案 0 :(得分:3)
我认为你们需要小心使用哪些术语,以免混淆那些寻求类似帮助的人。
环境特定于您正在使用的操作系统。 iOS,Blackberry,Android等环境。
皮肤基于环境,并非所有平台的通用。创建外观时,必须选择正在运行的环境。
因此,要更正某些内容,直接更新将更新目标环境中的所有皮肤资源。
例如:您有Android和iOS版本的应用
创建外观时,您基本上会为参数创建响应式设计。例如,如果您有2.3 vs 4.2 Android操作系统,则可以为两者设置外观。但是,这些利用单个Web资源库。对于这两个版本的应用程序(默认情况下),APK都是相同的,并且有2个可用的皮肤。在运行时上,利用IBM Worklight的'Runtime Skinning'(因此得名),它会通过操作系统的参数检查并加载皮肤覆盖Web代码。
从技术上讲,你可以覆盖两个皮肤的所有网页代码完全不同,但这样做会很笨重而且效率低下。
直接更新时,您正在更新特定<strong>环境的所有资源(包括两个皮肤),而不是公共文件夹/环境。
因此更新的Android(两个皮肤)都会更新网络资源(如果你部署了android wlapp),iOS版本将保持不变。
如果您在构建后查看Android项目(native - &gt; assets - &gt; www - &gt; default或skin),您可以找到公共环境生成的共享Web资源。但是,每次进行新构建时都会将其放在那里。
在图片中,我有一个旧版本的Android为左侧两个皮肤构建。在仅部署 common.wlapp 之后,右侧是较新的常用资源的预览。所以你可以看到它们是分开的。
对不起,如果它啰嗦,但我想我会彻底。
要回答原始问题,您是否考虑过从用户输入或设置中加载商店的所有参数?如果您尝试连接到3个不同的商店,请创建一些用于设置控件的表单,以访问不同的后端或特定适配器。您还可以根据您设置的参数创建3个不同的config.js,以便进行设置。另一个选项是设置特定于商店的不同版本的应用程序。
实施例。版本1.11,1.12,1.13可以是商店1,2和1的相同应用程序的3个版本。 3.它们可以被修改和更改,并拥有3组Web资源。当您需要更新时,请跳至版本1.21,1.22,1.23。这似乎是一种解决方法,但是将同一个应用程序的3个版本归入单个应用程序类别可能是最好的选择。 (保留3个config.js类型以修改3个商店)。
答案 1 :(得分:2)
据我所知,Direct Update将更新您正在使用的皮肤的每个Web资源(html,css,js)。但是,我不是专家。
如果您只支持Android和iOS应用程序,并且需要一种存储设置的方法,我建议使用JSONStore。否则请查看Cordova Storage,Local Storage或IndexedDB。
使用名为settings
的JSONStore集合将允许您将数据存储在应用程序目录中的磁盘上。它将持续存在,直到您调用其中一个删除方法(如destroy)或直到卸载该应用程序。还有一些方法可以将集合链接到Worklight Adapters,以便从/向服务器提取/推送数据。以下链接将提供更多详细信息。
唯一的变化是js中的某些设置
为您的设置创建一个集合:
var options = {};
options.onSuccess = function () {
//... what to do after init finished
};
options.onFailure = function () {
//... what to do if init fails
}
var settings = WL.JSONStore.initCollection('settings',
{background: 'string', itemsPerPage: 'number'}, options);
您可以在调用initCollection onSuccess后添加新设置:
settings.add({background: 'red', itemsPerPage: 20}, options);
您可以在调用initCollection onSuccess后找到存储的设置:
settings.findAll({onSuccess: function (results) {
console.log(JSON.stringify(results));
}});
您可以在Getting Started Modules中阅读有关JSONStore的更多信息。参见模块:7.9,7.10,7.11,7.12。 IBM InfoCenter中的API文档中还有更多信息。上述方法包括:initCollection,add和findAll。
答案 2 :(得分:0)
从版本5.0.3开始,我认为,直接更新不会更新所有的网络资源,只会更新您正在使用的皮肤资源。
说你有皮肤修复和皮肤皮肤2 你在def
你在皮肤上2:
这是直接更新的工作原理。
还请分享一些有关问题的详细信息,我看到你使用的是js文件,你在哪里更改它?什么是你的意思,给出一个更好的(简化的)现实生活的例子,因为你不清楚你在尝试什么。