我尝试使用cordova 2.7将此插件安装到iOS。我使用Xcode
我输入了config.xml
<plugin name="PowerManagement" value="PowerManagement" />
在文件夹插件中:PowerManagement.h和PowerManagement.m文件
并在我的HTML中:
cordova.require('cordova/plugin/powermanagement').acquire(
function() { alert( 'MARCHE' ); },
function() { alert( 'oh no!' ); }
我的iPhone中没有任何警报,我不知道为什么。
我有这个错误:CDVPlugin类PowerManagement(pluginName:PowerManagement)不存在。 2013-07-03 14:36:34.619错误:找不到插件'PowerManagement',或者不是CDVPlugin。检查config.xml中的插件映射。 2013-07-03 14:36:34.625 - [CDVCommandQueue executePending] [第116行] FAILED pluginJSON = [“PowerManagement1817140935”,“PowerManagement”,“release”,[]]
答案 0 :(得分:3)
github上的插件版本需要更新最新版本的Phonegap。我需要使用它,所以我更新了它。我的XCode测试项目包含更新的插件,可以下载from here。更新插件的源代码:
<强> PowerManagement.h 强>
/*
* Copyright (C) 2011-2012 Wolfgang Koller
*
* This file is part of GOFG Sports Computer - http://www.gofg.at/.
*
* GOFG Sports Computer is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GOFG Sports Computer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GOFG Sports Computer. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Cordova (iOS) plugin for accessing the power-management functions of the device
*/
#ifdef CORDOVA_FRAMEWORK
#import <CORDOVA/CDVPlugin.h>
#else
#import "CORDOVA/CDVPlugin.h"
#endif
/**
* Interface which does the actual handling
*/
@interface PowerManagement :CDVPlugin {
}
/**
* Sets the idleTimerDisable property to true so that the idle timeout is disabled
*/
- (void) acquire:(CDVInvokedUrlCommand*)command;
/**
* Sets the idleTimerDisable property to false so that the idle timeout is enabled
*/
- (void) release:(CDVInvokedUrlCommand*)command;
@end
<强> PowerManagement.m 强>
/*
* Copyright (C) 2011-2012 Wolfgang Koller
*
* This file is part of GOFG Sports Computer - http://www.gofg.at/.
*
* GOFG Sports Computer is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GOFG Sports Computer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GOFG Sports Computer. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Cordova (iOS) plugin for accessing the power-management functions of the device
*/
#import "PowerManagement.h"
/**
* Actual implementation of the interface
*/
@implementation PowerManagement
- (void) acquire:(CDVInvokedUrlCommand*)command;
{
CDVPluginResult* pluginResult = nil;
// Acquire a reference to the local UIApplication singleton
UIApplication* app = [UIApplication sharedApplication];
if( ![app isIdleTimerDisabled] ) {
[app setIdleTimerDisabled:true];
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
}
else {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ILLEGAL_ACCESS_EXCEPTION messageAsString:@"IdleTimer already disabled"];
}
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
- (void) release:(CDVInvokedUrlCommand*)command;
{
CDVPluginResult* pluginResult = nil;
// Acquire a reference to the local UIApplication singleton
UIApplication* app = [UIApplication sharedApplication];
if( [app isIdleTimerDisabled] ) {
[app setIdleTimerDisabled:false];
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
}
else {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ILLEGAL_ACCESS_EXCEPTION messageAsString:@"IdleTimer not disabled"];
}
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
@end
<强> powermanagement.js 强>
/*
* Copyright (C) 2011-2012 Wolfgang Koller
*
* This file is part of GOFG Sports Computer - http://www.gofg.at/.
*
* GOFG Sports Computer is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GOFG Sports Computer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GOFG Sports Computer. If not, see <http://www.gnu.org/licenses/>.
*/
cordova.define("cordova/plugin/powermanagement", function(require, exports, module) {
var exec = require('cordova/exec');
var PowerManagement = function() {};
/**
* Acquire a new wake-lock (keep device awake)
*
* @param successCallback function to be called when the wake-lock was acquired successfully
* @param errorCallback function to be called when there was a problem with acquiring the wake-lock
*/
PowerManagement.prototype.acquire = function(successCallback,failureCallback) {
exec(successCallback, failureCallback, 'PowerManagement', 'acquire', []);
}
/**
* Release the wake-lock
*
* @param successCallback function to be called when the wake-lock was released successfully
* @param errorCallback function to be called when there was a problem while releasing the wake-lock
*/
PowerManagement.prototype.release = function(successCallback,failureCallback) {
exec(successCallback, failureCallback, 'PowerManagement', 'release', []);
}
var powermanagement = new PowerManagement();
module.exports = powermanagement;
});