如何在IBM MobileFirst版本8中更改wl.client.init

时间:2016-09-24 01:22:05

标签: cordova ibm-mobilefirst

我试图将MFP 7.1混合应用程序转换为MFP v8 Cordova应用程序。但是,我收到错误声明' WL.init.connect'。

奇怪的是,我能够在MobileFirst版本8中部署应用程序并将其运行到我的设备上。我在操作控制台中看到了设备ID。因此,它使用当前代码

连接到MobileFirst

请您查看代码段,并提供一些如何进行必要更改的提示。

信息 Cordova版本6.3.1 MFP- 8.0.0-2016080322

代码myWorklight.js

 (function () {
  'use strict';

  angular
    .module('my-worklight', [])
    .run(WorklightRun)
  WorklightRun.$inject = ['$rootScope', '$q'];

  /**
   * Load worklight
   */
  function WorklightRun($rootScope, $q) {
    // Worklight statuss
    var initDeferred = $q.defer();
    $rootScope.worklightInitPromise = initDeferred.promise;
    $rootScope.worklightLoaded = false;
    var connectionDeferred = $q.defer();
    $rootScope.worklightConnectionPromise = connectionDeferred.promise;
    $rootScope.worklightConnected = false;
    // Listen for load / onload and start worklight init
    if (window.addEventListener) {
      //alert('calling LOAD window.addEventListener');
      window.addEventListener('load', loadHandler, false);
    } else if (window.attachEvent) {
        //alert('calling LOAD window.attachEvent');
      window.attachEvent('onload', loadHandler);
    }

    // Worklight connect options
    var wlConnectOptions = {
      timeout: 10000,
      onFailure: connectionFailure,
      onSuccess: function () {
        console.log('MFP: Connected');
        $rootScope.worklightConnected = true;
        connectionDeferred.resolve();
      }
    };
    // Worklight init options
    var wlInitOptions = {
      timeout: 10000,
      onConnectionFailure: initFailure,
      onFailure: initFailure,
      onSuccess: function () {
        console.log('MFP: Loaded');
        initDeferred.resolve();
        $rootScope.worklightLoaded = true;
        if (window.addEventListener) {
          window.addEventListener(WL.Events.WORKLIGHT_IS_CONNECTED, wlConnectedHandler, true);
          window.addEventListener(WL.Events.WORKLIGHT_IS_DISCONNECTED, wlDisconnectedHandler, true);
        } else if (window.attachEvent) {
          window.attachEvent(WL.Events.WORKLIGHT_IS_CONNECTED, wlConnectedHandler);
          window.attachEvent(WL.Events.WORKLIGHT_IS_DISCONNECTED, wlDisconnectedHandler);
        }
        console.log('MFP: About to connect - ' + JSON.stringify(wlConnectOptions, null, 2));
        WL.Client.connect(wlConnectOptions);
      }
    };

    var worklightLoadEvent = null;
    worklightLoadEvent = document.createEvent('CustomEvent');

    function loadHandler() {
      try {
        console.log('MFP: Load event detected, about to init - ' + JSON.stringify(wlInitOptions, null, 2));
        WL.Client.init(wlInitOptions);
      } catch (err) {
        console.error('MFP: "WL" init error - ' + err);
        initFailure(err);
        worklightLoadEvent.initCustomEvent('worklightLoadFailure', true, false, {});
        window.dispatchEvent(worklightLoadEvent);
      }
    }

    function wlConnectedHandler() {
      $rootScope.worklightConnected = true;
        navigator.splashscreen.hide();
    }

    function wlDisconnectedHandler() {
      $rootScope.worklightFailureAcknowledged = true;
      $rootScope.worklightConnected = false;
        navigator.splashscreen.hide();
    }

    function connectionFailure(err) {
      console.log('MFP: No Connection - ' + JSON.stringify(err, null, 2));
      connectionDeferred.reject(err);
    }

    function initFailure (err) {
      console.log('MFP: init failed - ' + err);
      initDeferred.reject(err);
      connectionFailure(err);
    }

  }
})();

我将这个文件包含在我的app.js文件中..所以,它首先运行...

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以执行以下操作:

function isServerReachable() {                                          
    return new Promise(function(resolve, reject){                          
     WL.App.getServerUrl(function(endpoint){                            
       var req = new WLResourceRequest(endpoint + '/reach//',           
       WLResourceRequest.GET);                                          
       req.send().then(resolve, reject);                                
     }, reject);                                                        
 });                                                                    
}          

然后你可以打电话给它:

isServerReachable().then(function(response){                            
  // connected to server                               
}).catch(function(error){                                               
  // error reaching the server                                          
})