Worklight 6.2在应用程序系列之间共享信息

时间:2014-07-10 10:41:33

标签: ibm-mobilefirst

在Worklight 6.2中,您可以在同一系列的应用程序之间共享信息。

使用此API,您可以在应用之间共享键值对。是否可以将复杂的JSON设置为值?或者只能共享一个字符串?

我不确定您需要如何定义应用程序属于应用程序系列 - 如何配置?是否有关于此功能的教程?

2 个答案:

答案 0 :(得分:2)

在worklight 6.2中启用简单数据共享

  1. 添加环境
  2. 编辑应用程序描述符文件以启用应用程序之间的简单数据共享
  3. 指定应用程序系列名称
  4. 保存并构建所有环境
  5. 有关详细信息,请参阅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的成功回调中给出警报)。

这不是预期的行为。它应该是一个同步调用,即一旦从设备中提取数据,那么只应返回它。