在Worklight 6.2中,您可以在同一系列的应用程序之间共享信息。
使用此API,您可以在应用之间共享键值对。是否可以将复杂的JSON设置为值?或者只能共享一个字符串?
我不确定您需要如何定义应用程序属于应用程序系列 - 如何配置?是否有关于此功能的教程?
答案 0 :(得分:2)
在worklight 6.2中启用简单数据共享
有关详细信息,请参阅Enabling simple data sharing in worklight 6.2
在您的应用中使用简单数据共享。您可以使用以下WL.Client
Api's
setSharedToken(object)
getSharedToken(object)
clearSharedToken(object)
有关详细信息,请参阅 WL.Client api for worklight 6.2
截至目前,我没有找到任何简单数据共享的教程。
要回答问题AFAIK,您可以使用JSON对象作为密钥的值。它仅适用于Android和iOS环境。
更新2014年7月18日 我找不到为simple data shar between apps创建的任何教程。
答案 1 :(得分:-1)
IBM Worklight具有“为混合应用程序启用简单数据共享”的功能(即在属于同一系列的两个或多个应用程序之间共享数据)
但这不起作用。
为了设置数据,我们使用“WL.Client.setSharedToken(object)”,它将JSON对象作为, object = { 关键:“abc”, 价值:“12345” };作为参数。 这会将设备中的令牌设置为JSON对象,如{abc:“12345”}
并且为了检索我们的数据,“WL.Client.getSharedToken(object)”,它也将JSON对象作为, var object = { 关键:“abc” }; 这将返回键“abc”的值(即本例中为“12345”)
“WL.Client.getSharedToken(object)”中存在一个错误,用于获取存储的信息。 在worklight.js(其中定义了所有客户端API)文件中,为了获取数据(当调用WL.Client.getSharedToken(object)时),正在进行的调用是异步的,但它应该是同步的。
内部WL.Client.getSharedToken(object)正在调用cordova函数(用于调用本机设备功能以获取由WL.Client.setSharedToken(object)存储的数据),这是异步的,因此它不是等待设备返回存储的值但返回空对象。
应该是同步通话。
this.getSharedToken = function(obj){ var dfd = $ .Deferred();
obj = obj || {};
var key = obj.key || '';
if (((WL.Client.getEnvironment() === WL.Env.IPHONE)
|| (WL.Client.getEnvironment() === WL.Env.IPAD)
|| (WL.Client.getEnvironment() === WL.Env.ANDROID))
&& (typeof cordova === 'object')) {
setTimeout(function () {
cordova.exec(dfd.resolve, dfd.reject, 'WLApp', 'getSharedToken', [key]);
}, 0);
} else {
setTimeout(dfd.resolve, 0);
}
return dfd.promise();
};
当我们构建环境时,我修改了由worklight创建的android项目中的worklight.js中的上述函数
this.getSharedToken = function(obj){ var dfd = $ .Deferred();
obj = obj || {};
var key = obj.key || '';
if (((WL.Client.getEnvironment() === WL.Env.IPHONE)
|| (WL.Client.getEnvironment() === WL.Env.IPAD)
|| (WL.Client.getEnvironment() === WL.Env.ANDROID))
&& (typeof cordova === 'object')) {
setTimeout(function () {
cordova.exec(function(data){alert(JSON.stringify(data));}, function(res){alert(JSON.stringify(res))}, 'WLApp', 'getSharedToken', [key]);
}, 0);
} else {
setTimeout(dfd.resolve, 0);
}
return dfd.promise();
};
所以它首先将空对象返回到客户端,然后提醒从设备获取的数据(在cordova.exec的成功回调中给出警报)。
这不是预期的行为。它应该是一个同步调用,即一旦从设备中提取数据,那么只应返回它。