From b864c5d72a58cd22d5654979e3005e58ef7aeed3 Mon Sep 17 00:00:00 2001 From: Viras- Date: Mon, 21 Oct 2013 18:31:22 +0200 Subject: [PATCH] powermanagement plugin for iOS --- README.md | 1 + plugin.xml | 14 +++++++- src/ios/PowerManagement.h | 45 +++++++++++++++++++++++ src/ios/PowerManagement.m | 75 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 src/ios/PowerManagement.h create mode 100644 src/ios/PowerManagement.m diff --git a/README.md b/README.md index 24c39d2..ebadb64 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ It should be used for applications which keep running for a long time without an For details on power functionality see: * WindowsPhone: [UserIdleDetectionMode](http://msdn.microsoft.com/en-US/library/windowsphone/develop/microsoft.phone.shell.phoneapplicationservice.useridledetectionmode%28v=vs.105%29.aspx) +* iOS: [idleTimerDisabled](http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/occ/instp/UIApplication/idleTimerDisabled) Installation --------- diff --git a/plugin.xml b/plugin.xml index 6231c2c..2460e89 100644 --- a/plugin.xml +++ b/plugin.xml @@ -1,7 +1,7 @@ + version="1.1.0"> PowerManagement PowerManagement plugin for Cordova GPL @@ -32,4 +32,16 @@ + + + + + + + + + + + + diff --git a/src/ios/PowerManagement.h b/src/ios/PowerManagement.h new file mode 100644 index 0000000..c8b1a18 --- /dev/null +++ b/src/ios/PowerManagement.h @@ -0,0 +1,45 @@ +/* + * 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 . + */ + +/** + * Cordova (iOS) plugin for accessing the power-management functions of the device + */ + +#ifdef CORDOVA_FRAMEWORK +#import +#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 diff --git a/src/ios/PowerManagement.m b/src/ios/PowerManagement.m new file mode 100644 index 0000000..6ef10f9 --- /dev/null +++ b/src/ios/PowerManagement.m @@ -0,0 +1,75 @@ +/* + * 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 . + */ + +/** + * 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* result = nil; + NSString* jsString = nil; + NSString* callbackId = command.callbackId; + + // Acquire a reference to the local UIApplication singleton + UIApplication* app = [UIApplication sharedApplication]; + + if( ![app isIdleTimerDisabled] ) { + [app setIdleTimerDisabled:true]; + + result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; + jsString = [result toSuccessCallbackString:callbackId]; + } + else { + result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ILLEGAL_ACCESS_EXCEPTION messageAsString:@"IdleTimer already disabled"]; + jsString = [result toErrorCallbackString:callbackId]; + } + + [self writeJavascript:jsString]; +} + + +- (void) release:(CDVInvokedUrlCommand*)command +{ + CDVPluginResult* result = nil; + NSString* jsString = nil; + NSString* callbackId = command.callbackId; + + // Acquire a reference to the local UIApplication singleton + UIApplication* app = [UIApplication sharedApplication]; + + if( [app isIdleTimerDisabled] ) { + [app setIdleTimerDisabled:false]; + + result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; + jsString = [result toSuccessCallbackString:callbackId]; + } + else { + result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ILLEGAL_ACCESS_EXCEPTION messageAsString:@"IdleTimer not disabled"]; + jsString = [result toErrorCallbackString:callbackId]; + } + + [self writeJavascript:jsString]; +} +@end