1

我现在尝试使用 cordova 2.7 将此插件安装到 iOS。我使用 Xcode

我把 config.xml

<plugin name="PowerManagement" value="PowerManagement" />  

在 plugins 文件夹中: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”,或者不是 CDVP 插件。检查 config.xml 中的插件映射。2013-07-03 14:36:34.625 -[CDVCommandQueue executePending] [第 116 行] FAILED pluginJSON = [“PowerManagement1817140935”,“PowerManagement”,“发布”,[]]

4

1 回答 1

3

github上的插件版本需要针对 Phonegap 的最新版本进行更新。我需要使用它,所以我更新了它。我的包含更新插件的 XCode 测试项目可以从这里下载。更新插件的源代码:

电源管理.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

电源管理.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

电源管理.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;
});
于 2013-07-10T22:21:42.100 回答