1

我用cordova 2.7做了一个ios应用程序(ios6),它使用GPS,我需要Iphone的屏幕总是亮着的。我想避免手机进入睡眠状态。

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

怎么做?

4

4 回答 4

8

如果您愿意亲自动手,通过制作 Cordova 插件可以很容易地解决这个问题。

如果您还没有制作过 Cordova 插件,那么这绝对是您应该掌握的一项技能,因为并非所有功能都可以通过 PhoneGap 插件使用,而且通常很容易使其工作。PhoneGap 插件开发指南中提供了完整的详细信息。

为此,插件的 JavaScript 端将类似于

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

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

接下来,您的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;

于 2013-07-04T03:55:09.020 回答
1

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

于 2014-04-27T07:37:23.197 回答
0

我已经为更新版本的 Phonegap(2.5 到 2.9)更新了这个插件——你可以在我对这个问题的回答中找到源代码和我的 XCode 测试项目。

您确定要一直保持屏幕开启吗?Apple 对何时允许这样做非常严格,如果没有充分的理由,可能会拒绝您的应用程序。如果您只需要让您的应用程序继续运行并在后台接收位置更新,则可以通过将以下内容添加到您的项目 .plist 中来在没有插件的情况下完成此操作:

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

或者在 XCode 中,打开 .plist 并添加键“Required Background Modes”和值“App registers for location updates”

于 2013-07-10T22:30:25.397 回答
0

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

链接在这里

于 2013-11-18T10:53:05.000 回答