如何使用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版本即将推出。
链接在这里