Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
		
							parent
							
								
									d3d86c0be6
								
							
						
					
					
						commit
						f87c9f527f
					
				
							
								
								
									
										402
									
								
								js/ui/cordova/plugins/cordova-plugin-background-mode/www/background-mode.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										402
									
								
								js/ui/cordova/plugins/cordova-plugin-background-mode/www/background-mode.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,402 @@
 | 
			
		|||
/*
 | 
			
		||||
    Copyright 2013-2017 appPlant GmbH
 | 
			
		||||
 | 
			
		||||
    Licensed to the Apache Software Foundation (ASF) under one
 | 
			
		||||
    or more contributor license agreements.  See the NOTICE file
 | 
			
		||||
    distributed with this work for additional information
 | 
			
		||||
    regarding copyright ownership.  The ASF licenses this file
 | 
			
		||||
    to you under the Apache License, Version 2.0 (the
 | 
			
		||||
    "License"); you may not use this file except in compliance
 | 
			
		||||
    with the License.  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
    Unless required by applicable law or agreed to in writing,
 | 
			
		||||
    software distributed under the License is distributed on an
 | 
			
		||||
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | 
			
		||||
    KIND, either express or implied.  See the License for the
 | 
			
		||||
    specific language governing permissions and limitations
 | 
			
		||||
    under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
var exec    = require('cordova/exec'),
 | 
			
		||||
    channel = require('cordova/channel');
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*************
 | 
			
		||||
 * INTERFACE *
 | 
			
		||||
 *************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Activates the background mode. When activated the application
 | 
			
		||||
 * will be prevented from going to sleep while in background
 | 
			
		||||
 * for the next time.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.enable = function () {
 | 
			
		||||
    if (this.isEnabled())
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    var fn = function () {
 | 
			
		||||
            exports._isEnabled = true;
 | 
			
		||||
            exports.fireEvent('enable');
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
    cordova.exec(fn, null, 'BackgroundMode', 'enable', []);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Deactivates the background mode. When deactivated the application
 | 
			
		||||
 * will not stay awake while in background.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.disable = function () {
 | 
			
		||||
    if (!this.isEnabled())
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    var fn = function () {
 | 
			
		||||
            exports._isEnabled = false;
 | 
			
		||||
            exports.fireEvent('disable');
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
    cordova.exec(fn, null, 'BackgroundMode', 'disable', []);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Enable or disable the background mode.
 | 
			
		||||
 *
 | 
			
		||||
 * @param [ Bool ] enable The status to set for.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.setEnabled = function (enable) {
 | 
			
		||||
    if (enable) {
 | 
			
		||||
        this.enable();
 | 
			
		||||
    } else {
 | 
			
		||||
        this.disable();
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * List of all available options with their default value.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Object ]
 | 
			
		||||
 */
 | 
			
		||||
exports.getDefaults = function () {
 | 
			
		||||
    return this._defaults;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Overwrite the default settings.
 | 
			
		||||
 *
 | 
			
		||||
 * @param [ Object ] overrides Dict of options to be overridden.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.setDefaults = function (overrides) {
 | 
			
		||||
    var defaults = this.getDefaults();
 | 
			
		||||
 | 
			
		||||
    for (var key in defaults) {
 | 
			
		||||
        if (overrides.hasOwnProperty(key)) {
 | 
			
		||||
            defaults[key] = overrides[key];
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this._isAndroid) {
 | 
			
		||||
        cordova.exec(null, null, 'BackgroundMode', 'configure', [defaults, false]);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Configures the notification settings for Android.
 | 
			
		||||
 * Will be merged with the defaults.
 | 
			
		||||
 *
 | 
			
		||||
 * @param [ Object ] overrides Dict of options to be overridden.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.configure = function (options) {
 | 
			
		||||
    var settings = this.mergeWithDefaults(options);
 | 
			
		||||
 | 
			
		||||
    if (this._isAndroid) {
 | 
			
		||||
        cordova.exec(null, null, 'BackgroundMode', 'configure', [settings, true]);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Enable GPS-tracking in background (Android).
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.disableWebViewOptimizations = function () {
 | 
			
		||||
    if (this._isAndroid) {
 | 
			
		||||
        cordova.exec(null, null, 'BackgroundMode', 'optimizations', []);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Move app to background (Android only).
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.moveToBackground = function () {
 | 
			
		||||
    if (this._isAndroid) {
 | 
			
		||||
        cordova.exec(null, null, 'BackgroundMode', 'background', []);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Move app to foreground when in background (Android only).
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.moveToForeground = function () {
 | 
			
		||||
    if (this.isActive() && this._isAndroid) {
 | 
			
		||||
        cordova.exec(null, null, 'BackgroundMode', 'foreground', []);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Exclude the app from the recent tasks list (Android only).
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.excludeFromTaskList = function () {
 | 
			
		||||
    if (this._isAndroid) {
 | 
			
		||||
        cordova.exec(null, null, 'BackgroundMode', 'tasklist', []);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Override the back button on Android to go to background
 | 
			
		||||
 * instead of closing the app.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.overrideBackButton = function () {
 | 
			
		||||
    document.addEventListener('backbutton', function() {
 | 
			
		||||
        exports.moveToBackground();
 | 
			
		||||
    }, false);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * If the mode is enabled or disabled.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Boolean ]
 | 
			
		||||
 */
 | 
			
		||||
exports.isEnabled = function () {
 | 
			
		||||
    return this._isEnabled !== false;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * If the mode is active.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Boolean ]
 | 
			
		||||
 */
 | 
			
		||||
exports.isActive = function () {
 | 
			
		||||
    return this._isActive !== false;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**********
 | 
			
		||||
 * EVENTS *
 | 
			
		||||
 **********/
 | 
			
		||||
 | 
			
		||||
exports._listener = {};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fire event with given arguments.
 | 
			
		||||
 *
 | 
			
		||||
 * @param [ String ] event The event's name.
 | 
			
		||||
 * @param [ Array<Object> ] The callback's arguments.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.fireEvent = function (event) {
 | 
			
		||||
    var args     = Array.apply(null, arguments).slice(1),
 | 
			
		||||
        listener = this._listener[event];
 | 
			
		||||
 | 
			
		||||
    if (!listener)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    for (var i = 0; i < listener.length; i++) {
 | 
			
		||||
        var fn    = listener[i][0],
 | 
			
		||||
            scope = listener[i][1];
 | 
			
		||||
 | 
			
		||||
        fn.apply(scope, args);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Register callback for given event.
 | 
			
		||||
 *
 | 
			
		||||
 * @param [ String ] event The event's name.
 | 
			
		||||
 * @param [ Function ] callback The function to be exec as callback.
 | 
			
		||||
 * @param [ Object ] scope The callback function's scope.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.on = function (event, callback, scope) {
 | 
			
		||||
 | 
			
		||||
    if (typeof callback !== "function")
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    if (!this._listener[event]) {
 | 
			
		||||
        this._listener[event] = [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    var item = [callback, scope || window];
 | 
			
		||||
 | 
			
		||||
    this._listener[event].push(item);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Unregister callback for given event.
 | 
			
		||||
 *
 | 
			
		||||
 * @param [ String ] event The event's name.
 | 
			
		||||
 * @param [ Function ] callback The function to be exec as callback.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Void ]
 | 
			
		||||
 */
 | 
			
		||||
exports.un = function (event, callback) {
 | 
			
		||||
    var listener = this._listener[event];
 | 
			
		||||
 | 
			
		||||
    if (!listener)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    for (var i = 0; i < listener.length; i++) {
 | 
			
		||||
        var fn = listener[i][0];
 | 
			
		||||
 | 
			
		||||
        if (fn == callback) {
 | 
			
		||||
            listener.splice(i, 1);
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @deprecated
 | 
			
		||||
 *
 | 
			
		||||
 * Called when the background mode has been activated.
 | 
			
		||||
 */
 | 
			
		||||
exports.onactivate = function () {};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @deprecated
 | 
			
		||||
 *
 | 
			
		||||
 * Called when the background mode has been deaktivated.
 | 
			
		||||
 */
 | 
			
		||||
exports.ondeactivate = function () {};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @deprecated
 | 
			
		||||
 *
 | 
			
		||||
 * Called when the background mode could not been activated.
 | 
			
		||||
 *
 | 
			
		||||
 * @param {Integer} errorCode
 | 
			
		||||
 *      Error code which describes the error
 | 
			
		||||
 */
 | 
			
		||||
exports.onfailure = function () {};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*********
 | 
			
		||||
 * UTILS *
 | 
			
		||||
 *********/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @private
 | 
			
		||||
 *
 | 
			
		||||
 * Merge settings with default values.
 | 
			
		||||
 *
 | 
			
		||||
 * @param [ Object ] options The custom options.
 | 
			
		||||
 *
 | 
			
		||||
 * @return [ Object ] Default values merged with custom values.
 | 
			
		||||
 */
 | 
			
		||||
exports.mergeWithDefaults = function (options) {
 | 
			
		||||
    var defaults = this.getDefaults();
 | 
			
		||||
 | 
			
		||||
    for (var key in defaults) {
 | 
			
		||||
        if (!options.hasOwnProperty(key)) {
 | 
			
		||||
            options[key] = defaults[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' || window.webkit !== undefined) {
 | 
			
		||||
        this.enable();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this._isActive  = this._isActive || device.platform == 'browser';
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***********
 | 
			
		||||
 * PRIVATE *
 | 
			
		||||
 ***********/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @private
 | 
			
		||||
 *
 | 
			
		||||
 * Flag indicates if the mode is enabled.
 | 
			
		||||
 */
 | 
			
		||||
exports._isEnabled = false;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @private
 | 
			
		||||
 *
 | 
			
		||||
 * Flag indicates if the mode is active.
 | 
			
		||||
 */
 | 
			
		||||
exports._isActive = false;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @private
 | 
			
		||||
 *
 | 
			
		||||
 * Default values of all available options.
 | 
			
		||||
 */
 | 
			
		||||
exports._defaults = {
 | 
			
		||||
    title:   'App is running in background',
 | 
			
		||||
    text:    'Doing heavy tasks.',
 | 
			
		||||
    bigText: false,
 | 
			
		||||
    resume:  true,
 | 
			
		||||
    silent:  false,
 | 
			
		||||
    hidden:  true,
 | 
			
		||||
    color:   undefined,
 | 
			
		||||
    icon:    'icon'
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Called before 'deviceready' listener will be called
 | 
			
		||||
channel.onCordovaReady.subscribe(function () {
 | 
			
		||||
    channel.onCordovaInfoReady.subscribe(function () {
 | 
			
		||||
        exports.pluginInitialize();
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// Called after 'deviceready' event
 | 
			
		||||
channel.deviceready.subscribe(function () {
 | 
			
		||||
    if (exports.isEnabled()) {
 | 
			
		||||
        exports.fireEvent('enable');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (exports.isActive()) {
 | 
			
		||||
        exports.fireEvent('activate');
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user