在Worklight 6.2中,您可以在同一系列的应用程序之间共享信息。Worklight 6.2共享应用程序系列之间的信息
我的理解是使用此API可以在应用程序之间共享键值对。是否可以将复杂的JSON设置为值?或者只能共享一个字符串?
我不确定您需要如何定义应用程序属于应用程序系列 - 它是如何配置的?有关于这个功能的教程吗?
在Worklight 6.2中,您可以在同一系列的应用程序之间共享信息。Worklight 6.2共享应用程序系列之间的信息
我的理解是使用此API可以在应用程序之间共享键值对。是否可以将复杂的JSON设置为值?或者只能共享一个字符串?
我不确定您需要如何定义应用程序属于应用程序系列 - 它是如何配置的?有关于这个功能的教程吗?
要启用简单的数据共享的工作灯6.2
欲了解更多信息,请参阅Enabling simple data sharing in worklight 6.2
在您的应用程序中使用简单的数据共享。您可以使用以下WL.Client
阿比的
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。
IBM工作灯有“启用用于混合应用的简单数据共享”的特征(即,共享的两个或更多的应用程序属于同一家族之间的数据)
但这并不工作。
用于设置我们使用数据 “WL.Client.setSharedToken(对象)”,这需要JSON对象作为, 对象= { 键: “ABC”, 值: “12345” };作为参数。 这将设备中的令牌设置为JSON对象,如{abc:“12345”}
并且用于检索数据我们的“ , var object = { key:“abc” }; 这将返回密钥“abc”的值(即本例中的“12345”)
“WL.Client”中存在一个错误。getSharedToken(object)“,用于获取存储的信息。 在用于获取数据(在调用WL.Client.getSharedToken(object)时)的worklight.js(其中定义了所有客户端API)文件时,正在进行的调用是异步的,但它应该是同步的。
内部WL.Client.getSharedToken(对象)调用cordova函数(用于调用本地设备功能以获取由WL存储的数据。 Client.setSharedToken(对象)),这是异步的,所以它不等待设备返回所存储的值,但返回空对象。
它应该是一个同步呼叫。
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.js在由工作灯创建的Android项目,当我们建立环境
this.getSharedToken =函数(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成功回调中给出的警报)。
这不是预期的行为。它应该是一个同步调用,即一旦数据从设备中获取,那么只有它应该被返回。
这不是报告错误的地方;如果您是IBM客户,那么请继续并开启PMR--他们的开发将继续进行并提供修复。 –
这是预期的行为。 Javascript并不是一种语言,它可能会做很长时间的同步调用;任何对磁盘的调用应该是异步完成的,否则你将锁定Webcore和/或UI线程,并减慢你的应用程序,甚至可能造成死锁。这对任何其他编程语言和环境都是如此,但对JS尤其关键,因为所有东西都在一个线程中运行。如果您不同意实现,请打开一个功能请求,但首先我建议您阅读文档,以便在说明错误之前了解其工作原理。 –
仅供参考,以下是用于Javascript的WLClient API:供参考:http://www-01.ibm.com/support/knowledgecenter/SSZH4A_6.2.0/com.ibm.worklight.apiref.doc/html/refjavascript-client /html/WL.Client.html?cp=SSZH4A_6.2.0%2F10-0-0-1-6简单数据共享的方法在该类中。正如set和getSharedToken都可以看到的那样,返回的值是一个承诺,一旦完成保存或检索数据,它就会被调用。 –