如何使用Phonegap 2.7保持iPhone上的屏幕

我做一个ios应用程序(ios6)与cordova2.7使用GPS,我需要的Iphone的屏幕始终打开。 我想避免从睡眠电话。

我试图安装这个插件https://github.com/phonegap/phonegap-plugins/tree/master/iOS/PowerManagement,但显然它太旧了。

那怎么办?

如果你愿意把你的手弄脏,通过制作一个Cordova插件可以很容易地解决这个问题。

如果你还没有制作cordova插件,那绝对是你应该掌握的一项技能,因为并不是所有的function都可以通过PhoneGap插件来实现,而且它可以很容易地工作。 PhoneGap插件开发指南中提供了完整的详细信息。

为此,您的JavaScript插件的一面会是这样的

cordova.exec(function(winParam) {}, function(error) {}, "myPlugin", "preventSleep", []); 

在这种情况下,PhoneGap将在myPlugin类中查找名为preventSleep的方法。

接下来,您的preventSleep方法看起来像

 - (void)preventSleep:(CDVInvokedUrlCommand*)command { [UIApplication sharedApplication].idleTimerDisabled = YES; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; } 

现在你可以做一个像allowSleep这样的对应方法来设置[UIApplication sharedApplication].idleTimerDisabled = NO;

以下是PhoneGap Build支持的最新插件: https : //github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin

我已经更新了这个插件的更新版本的PhoneGap(2.5到2.9) – 你可以find我的回答这个问题的源代码和我的XCodetesting项目。

你确定要一直保持屏幕吗? 苹果公司在相关时间允许的情况下相当严格,如果不是很好的理由,可能会拒绝你的应用程序。 如果您只需要让应用程序继续运行并在后台接收位置更新,则可以在不使用插件的情况下将以下内容添加到您的项目.plist中:

 <key>UIBackgroundModes</key> <array> <string>location</string> </array> 

或者在XCode中,打开.plist并添加“必需的后台模式”键并将值设置为“应用程序寄存器进行位置更新”

我不确定你是否已经看到了这个,但看起来好像在phonegap上有一个可用于iOS的插件,显然android版本即将推出。

链接在这里