我试图将MFP 7.1混合应用程序转换为MFP v8 Cordova应用程序。但是,我收到错误声明' WL.init.connect'。
奇怪的是,我能够在MobileFirst版本8中部署应用程序并将其运行到我的设备上。我在操作控制台中看到了设备ID。因此,它使用当前代码
连接到MobileFirst请您查看代码段,并提供一些如何进行必要更改的提示。
信息 Cordova版本6.3.1 MFP- 8.0.0-2016080322
(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文件中..所以,它首先运行...
感谢您的帮助
答案 0 :(得分:0)
在v8.0中,许多功能和API已被弃用或停用。您需要查看此API更改列表并相应地进行更改。
另请查看发行说明,已知问题等:http://www.ibm.com/support/knowledgecenter/SSHS8R_8.0.0/com.ibm.worklight.getstart.doc/start/c_release_notes.html
答案 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
})