【问题标题】:Plugin Phonegap Power Management Ios 6插件 Phonegap 电源管理 Ios 6
【发布时间】:2013-07-01 04:33:21
【问题描述】:

我现在尝试使用 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”、“release”、[]]

【问题讨论】:

  • 您是否包含 powermanagement.js 并将其链接到您的 index.html 中?
  • 插件可能已过时

标签: iphone ios6 cordova phonegap-plugins


【解决方案1】:

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;
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2013-02-20
    相关资源
    最近更新 更多