mirror of
https://bitbucket.org/TheBosZ/cordova-plugin-run-in-background
synced 2024-11-14 19:44:53 +00:00
Additional improvements of method configure
This commit is contained in:
parent
5fdfb9885c
commit
110ec9d024
@ -268,29 +268,19 @@ public class BackgroundMode extends CordovaPlugin {
|
|||||||
* @param params Optional arguments for the event
|
* @param params Optional arguments for the event
|
||||||
*/
|
*/
|
||||||
private void fireEvent (Event event, String params) {
|
private void fireEvent (Event event, String params) {
|
||||||
String eventName;
|
String eventName = event.name().toLowerCase();
|
||||||
|
Boolean active = event == Event.ACTIVATE;
|
||||||
|
|
||||||
switch (event) {
|
String str = String.format("%s._setActive(%b)",
|
||||||
case ACTIVATE:
|
|
||||||
eventName = "activate"; break;
|
|
||||||
case DEACTIVATE:
|
|
||||||
eventName = "deactivate"; break;
|
|
||||||
default:
|
|
||||||
eventName = "failure";
|
|
||||||
}
|
|
||||||
|
|
||||||
String active = event == Event.ACTIVATE ? "true" : "false";
|
|
||||||
|
|
||||||
String flag = String.format("%s._isActive=%s;",
|
|
||||||
JS_NAMESPACE, active);
|
JS_NAMESPACE, active);
|
||||||
|
|
||||||
String depFn = String.format("%s.on%s(%s);",
|
str = String.format("%s;%s.on%s(%s)",
|
||||||
JS_NAMESPACE, eventName, params);
|
str, JS_NAMESPACE, eventName, params);
|
||||||
|
|
||||||
String fn = String.format("%s.fireEvent('%s',%s);",
|
str = String.format("%s;%s.fireEvent('%s',%s);",
|
||||||
JS_NAMESPACE, eventName, params);
|
str, JS_NAMESPACE, eventName, params);
|
||||||
|
|
||||||
final String js = flag + fn + depFn;
|
final String js = str;
|
||||||
|
|
||||||
cordova.getActivity().runOnUiThread(new Runnable() {
|
cordova.getActivity().runOnUiThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -34,11 +34,11 @@ var exec = require('cordova/exec'),
|
|||||||
*
|
*
|
||||||
* @return [ Void ]
|
* @return [ Void ]
|
||||||
*/
|
*/
|
||||||
exports.enable = function () {
|
exports.enable = function() {
|
||||||
if (this.isEnabled())
|
if (this.isEnabled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var fn = function () {
|
var fn = function() {
|
||||||
exports._isEnabled = true;
|
exports._isEnabled = true;
|
||||||
exports.fireEvent('enable');
|
exports.fireEvent('enable');
|
||||||
};
|
};
|
||||||
@ -52,11 +52,11 @@ exports.enable = function () {
|
|||||||
*
|
*
|
||||||
* @return [ Void ]
|
* @return [ Void ]
|
||||||
*/
|
*/
|
||||||
exports.disable = function () {
|
exports.disable = function() {
|
||||||
if (!this.isEnabled())
|
if (!this.isEnabled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var fn = function () {
|
var fn = function() {
|
||||||
exports._isEnabled = false;
|
exports._isEnabled = false;
|
||||||
exports.fireEvent('disable');
|
exports.fireEvent('disable');
|
||||||
};
|
};
|
||||||
@ -84,7 +84,7 @@ exports.setEnabled = function (enable) {
|
|||||||
*
|
*
|
||||||
* @return [ Object ]
|
* @return [ Object ]
|
||||||
*/
|
*/
|
||||||
exports.getDefaults = function () {
|
exports.getDefaults = function() {
|
||||||
return this._defaults;
|
return this._defaults;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ exports.getDefaults = function () {
|
|||||||
*
|
*
|
||||||
* @return [ Object ]
|
* @return [ Object ]
|
||||||
*/
|
*/
|
||||||
exports.getSettings = function () {
|
exports.getSettings = function() {
|
||||||
return this._settings || {};
|
return this._settings || {};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ exports.setDefaults = function (overrides) {
|
|||||||
* Configures the notification settings for Android.
|
* Configures the notification settings for Android.
|
||||||
* Will be merged with the defaults.
|
* Will be merged with the defaults.
|
||||||
*
|
*
|
||||||
* @param [ Object ] overrides Dict of options to be overridden.
|
* @param [ Object ] options Dict of options to be overridden.
|
||||||
*
|
*
|
||||||
* @return [ Void ]
|
* @return [ Void ]
|
||||||
*/
|
*/
|
||||||
@ -130,13 +130,19 @@ exports.configure = function (options) {
|
|||||||
var settings = this.getSettings(),
|
var settings = this.getSettings(),
|
||||||
defaults = this.getDefaults();
|
defaults = this.getDefaults();
|
||||||
|
|
||||||
this.mergeObjects(options, settings);
|
if (!this._isAndroid)
|
||||||
this.mergeObjects(options, defaults);
|
return;
|
||||||
|
|
||||||
|
if (!this._isActive) {
|
||||||
|
console.log('BackgroundMode is not active, skipped...');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._mergeObjects(options, settings);
|
||||||
|
this._mergeObjects(options, defaults);
|
||||||
this._settings = options;
|
this._settings = options;
|
||||||
|
|
||||||
if (this._isAndroid) {
|
|
||||||
cordova.exec(null, null, 'BackgroundMode', 'configure', [options, true]);
|
cordova.exec(null, null, 'BackgroundMode', 'configure', [options, true]);
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -144,7 +150,7 @@ exports.configure = function (options) {
|
|||||||
*
|
*
|
||||||
* @return [ Void ]
|
* @return [ Void ]
|
||||||
*/
|
*/
|
||||||
exports.disableWebViewOptimizations = function () {
|
exports.disableWebViewOptimizations = function() {
|
||||||
if (this._isAndroid) {
|
if (this._isAndroid) {
|
||||||
cordova.exec(null, null, 'BackgroundMode', 'optimizations', []);
|
cordova.exec(null, null, 'BackgroundMode', 'optimizations', []);
|
||||||
}
|
}
|
||||||
@ -155,7 +161,7 @@ exports.disableWebViewOptimizations = function () {
|
|||||||
*
|
*
|
||||||
* @return [ Void ]
|
* @return [ Void ]
|
||||||
*/
|
*/
|
||||||
exports.moveToBackground = function () {
|
exports.moveToBackground = function() {
|
||||||
if (this._isAndroid) {
|
if (this._isAndroid) {
|
||||||
cordova.exec(null, null, 'BackgroundMode', 'background', []);
|
cordova.exec(null, null, 'BackgroundMode', 'background', []);
|
||||||
}
|
}
|
||||||
@ -166,7 +172,7 @@ exports.moveToBackground = function () {
|
|||||||
*
|
*
|
||||||
* @return [ Void ]
|
* @return [ Void ]
|
||||||
*/
|
*/
|
||||||
exports.moveToForeground = function () {
|
exports.moveToForeground = function() {
|
||||||
if (this.isActive() && this._isAndroid) {
|
if (this.isActive() && this._isAndroid) {
|
||||||
cordova.exec(null, null, 'BackgroundMode', 'foreground', []);
|
cordova.exec(null, null, 'BackgroundMode', 'foreground', []);
|
||||||
}
|
}
|
||||||
@ -177,7 +183,7 @@ exports.moveToForeground = function () {
|
|||||||
*
|
*
|
||||||
* @return [ Void ]
|
* @return [ Void ]
|
||||||
*/
|
*/
|
||||||
exports.excludeFromTaskList = function () {
|
exports.excludeFromTaskList = function() {
|
||||||
if (this._isAndroid) {
|
if (this._isAndroid) {
|
||||||
cordova.exec(null, null, 'BackgroundMode', 'tasklist', []);
|
cordova.exec(null, null, 'BackgroundMode', 'tasklist', []);
|
||||||
}
|
}
|
||||||
@ -189,7 +195,7 @@ exports.excludeFromTaskList = function () {
|
|||||||
*
|
*
|
||||||
* @return [ Void ]
|
* @return [ Void ]
|
||||||
*/
|
*/
|
||||||
exports.overrideBackButton = function () {
|
exports.overrideBackButton = function() {
|
||||||
document.addEventListener('backbutton', function() {
|
document.addEventListener('backbutton', function() {
|
||||||
exports.moveToBackground();
|
exports.moveToBackground();
|
||||||
}, false);
|
}, false);
|
||||||
@ -215,7 +221,7 @@ exports.isScreenOff = function (fn) {
|
|||||||
*
|
*
|
||||||
* @return [ Void ]
|
* @return [ Void ]
|
||||||
*/
|
*/
|
||||||
exports.wakeUp = function () {
|
exports.wakeUp = function() {
|
||||||
if (this._isAndroid) {
|
if (this._isAndroid) {
|
||||||
cordova.exec(null, null, 'BackgroundMode', 'wakeup', []);
|
cordova.exec(null, null, 'BackgroundMode', 'wakeup', []);
|
||||||
}
|
}
|
||||||
@ -226,7 +232,7 @@ exports.wakeUp = function () {
|
|||||||
*
|
*
|
||||||
* @return [ Void ]
|
* @return [ Void ]
|
||||||
*/
|
*/
|
||||||
exports.unlock = function () {
|
exports.unlock = function() {
|
||||||
if (this._isAndroid) {
|
if (this._isAndroid) {
|
||||||
cordova.exec(null, null, 'BackgroundMode', 'unlock', []);
|
cordova.exec(null, null, 'BackgroundMode', 'unlock', []);
|
||||||
}
|
}
|
||||||
@ -237,7 +243,7 @@ exports.unlock = function () {
|
|||||||
*
|
*
|
||||||
* @return [ Boolean ]
|
* @return [ Boolean ]
|
||||||
*/
|
*/
|
||||||
exports.isEnabled = function () {
|
exports.isEnabled = function() {
|
||||||
return this._isEnabled !== false;
|
return this._isEnabled !== false;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -246,7 +252,7 @@ exports.isEnabled = function () {
|
|||||||
*
|
*
|
||||||
* @return [ Boolean ]
|
* @return [ Boolean ]
|
||||||
*/
|
*/
|
||||||
exports.isActive = function () {
|
exports.isActive = function() {
|
||||||
return this._isActive !== false;
|
return this._isActive !== false;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -332,14 +338,14 @@ exports.un = function (event, callback) {
|
|||||||
*
|
*
|
||||||
* Called when the background mode has been activated.
|
* Called when the background mode has been activated.
|
||||||
*/
|
*/
|
||||||
exports.onactivate = function () {};
|
exports.onactivate = function() {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated
|
* @deprecated
|
||||||
*
|
*
|
||||||
* Called when the background mode has been deaktivated.
|
* Called when the background mode has been deaktivated.
|
||||||
*/
|
*/
|
||||||
exports.ondeactivate = function () {};
|
exports.ondeactivate = function() {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated
|
* @deprecated
|
||||||
@ -349,55 +355,7 @@ exports.ondeactivate = function () {};
|
|||||||
* @param {Integer} errorCode
|
* @param {Integer} errorCode
|
||||||
* Error code which describes the error
|
* Error code which describes the error
|
||||||
*/
|
*/
|
||||||
exports.onfailure = function () {};
|
exports.onfailure = function() {};
|
||||||
|
|
||||||
|
|
||||||
/*********
|
|
||||||
* UTILS *
|
|
||||||
*********/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
*
|
|
||||||
* Merge settings with default values.
|
|
||||||
*
|
|
||||||
* @param [ Object ] options The custom options.
|
|
||||||
* @param [ Object ] toMergeIn The options to merge in.
|
|
||||||
*
|
|
||||||
* @return [ Object ] Default values merged with custom values.
|
|
||||||
*/
|
|
||||||
exports.mergeObjects = function (options, toMergeIn) {
|
|
||||||
for (var key in toMergeIn) {
|
|
||||||
if (!options.hasOwnProperty(key)) {
|
|
||||||
options[key] = toMergeIn[key];
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return options;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
*
|
|
||||||
* Initialize the plugin.
|
|
||||||
*
|
|
||||||
* Method should be called after the 'deviceready' event
|
|
||||||
* but before the event listeners will be called.
|
|
||||||
*
|
|
||||||
* @return [ Void ]
|
|
||||||
*/
|
|
||||||
exports.pluginInitialize = function () {
|
|
||||||
this._isAndroid = device.platform.match(/^android|amazon/i) !== null;
|
|
||||||
this.setDefaults({});
|
|
||||||
|
|
||||||
if (device.platform == 'browser') {
|
|
||||||
this.enable();
|
|
||||||
this._isEnabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._isActive = this._isActive || device.platform == 'browser';
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/***********
|
/***********
|
||||||
@ -434,15 +392,76 @@ exports._defaults = {
|
|||||||
icon: 'icon'
|
icon: 'icon'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
*
|
||||||
|
* Merge settings with default values.
|
||||||
|
*
|
||||||
|
* @param [ Object ] options The custom options.
|
||||||
|
* @param [ Object ] toMergeIn The options to merge in.
|
||||||
|
*
|
||||||
|
* @return [ Object ] Default values merged with custom values.
|
||||||
|
*/
|
||||||
|
exports._mergeObjects = function (options, toMergeIn) {
|
||||||
|
for (var key in toMergeIn) {
|
||||||
|
if (!options.hasOwnProperty(key)) {
|
||||||
|
options[key] = toMergeIn[key];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return options;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
*
|
||||||
|
* Setter for the isActive flag. Resets the
|
||||||
|
* settings if the mode isnt active anymore.
|
||||||
|
*
|
||||||
|
* @param [ Boolean] value The new value for the flag.
|
||||||
|
*
|
||||||
|
* @return [ Void ]
|
||||||
|
*/
|
||||||
|
exports._setActive = function(value) {
|
||||||
|
if (this._isActive == value)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._isActive = value;
|
||||||
|
this._settings = value ? this._mergeObjects({}, this._defaults) : {};
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
*
|
||||||
|
* Initialize the plugin.
|
||||||
|
*
|
||||||
|
* Method should be called after the 'deviceready' event
|
||||||
|
* but before the event listeners will be called.
|
||||||
|
*
|
||||||
|
* @return [ Void ]
|
||||||
|
*/
|
||||||
|
exports._pluginInitialize = function() {
|
||||||
|
this._isAndroid = device.platform.match(/^android|amazon/i) !== null;
|
||||||
|
this.setDefaults({});
|
||||||
|
|
||||||
|
if (device.platform == 'browser') {
|
||||||
|
this.enable();
|
||||||
|
this._isEnabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._isActive = this._isActive || device.platform == 'browser';
|
||||||
|
};
|
||||||
|
|
||||||
// Called before 'deviceready' listener will be called
|
// Called before 'deviceready' listener will be called
|
||||||
channel.onCordovaReady.subscribe(function () {
|
channel.onCordovaReady.subscribe(function() {
|
||||||
channel.onCordovaInfoReady.subscribe(function () {
|
channel.onCordovaInfoReady.subscribe(function() {
|
||||||
exports.pluginInitialize();
|
exports._pluginInitialize();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Called after 'deviceready' event
|
// Called after 'deviceready' event
|
||||||
channel.deviceready.subscribe(function () {
|
channel.deviceready.subscribe(function() {
|
||||||
if (exports.isEnabled()) {
|
if (exports.isEnabled()) {
|
||||||
exports.fireEvent('enable');
|
exports.fireEvent('enable');
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user