如何防止 iOS 独立网络应用程序锁定设备?

Posted

技术标签:

【中文标题】如何防止 iOS 独立网络应用程序锁定设备?【英文标题】:How can I prevent iOS standalone web apps from locking up the device? 【发布时间】:2013-04-25 22:18:50 【问题描述】:

我的原型设计服务创建独立的、不可安装的 ios 网络应用程序。有时他们会在使用时锁定设备。

主页按钮停止工作,应用程序继续工作。以下内容在设备的控制台中重复显示(通过附加到 xcode 检索)。

Apr 25 14:34:57 SpringBoard[67] <Warning>: Unable to determine intended instance of com.apple.webapp. Resulting app will be undefined.

【问题讨论】:

您是否将应用保存到主屏幕? 是的,它已安装到主屏幕。 遇到完全相同的问题,应用程序突然锁定了设备,但应用程序继续工作。主页按钮等无响应。附加到 Xcode 时看到相同的错误消息。如果您找到解决方案,很想听听。 一定要向苹果提交错误! bugreport.apple.com 【参考方案1】:

由于这个问题的原因仍然未知,我想我会告诉你,我在 iPhone 4s 上的 iOS 6 上的 html5 应用程序遇到了完全相同的问题。在我的情况下,应用程序没有锁定(仍然有效)但主页按钮停止工作(就像你和 Jens 一样)。时间是随机的,似乎与我可以做的任何事情来一致地复制它无关。同样,当它发生时,window.orientation 总是错误地报告纵向模式,即使设备在物理上处于横向(在 iPhone 上)。

2013 年 12 月 15 日更新 1)检测这个错误:我已经能够在 iPhone 上发生错误时进行陷阱。我的应用程序在横向模式下工作,通常它们可以随时切换到横向。但是为了捕获这个错误,它现在检测应用程序是否在 iPhone 上运行并抛出一个要求用户将设备旋转到横向才能启动的路障页面。在此期间,应用程序会查看陀螺仪是否指示设备正确处于横向模式,但 windows.orientation(错误地)表示它处于纵向模式。只有在触发错误时才会发生这种情况。所以,然后我可以显示一条很好的消息,告诉用户如何恢复。注意:此方法仅适用于 iPhone...我还没有想出在 iPad 上检测它的解决方案。

2) 避免这个错误:我找到了一种避免问题发生的方法(需要做一些额外的工作)。我注意到,在清理了我的事件处理程序的工作方式之后,问题只发生在应用程序的后续加载中……而不是我第一次加载它。而且我还注意到,在关闭应用程序后,它仍在 iOS“任务列表”中运行(不确定 iOS 的正确术语是什么)。

所以双击主页按钮以调出任务列表并将其滑开(真正关闭它)。遵循此操作后,我再也没有遇到过问题。附加说明:仅仅重启设备是不够的(而且似乎仍然会导致挂起)。重新启动后,我注意到它会出现在任务列表中两次(这似乎是错误的,也许是内部问题的线索)。无论如何,如果您重新启动,在启动应用程序之前,请确保您转到任务列表并首先删除应用程序的所有实例。

【讨论】:

我的 4S 和 iOS 6 也遇到了同样的问题。希望这是他们为 iOS 7 修复的问题。 确认这仍然在 iOS 7 上发生 :( 在 iOS7 上,我想出了一种每次都复制它的方法(至少对于我的应用程序而言):1)将手机旋转到横向 2)将手机平放! 3)launch app 除了锁定home键,我发现它还导致事件监听器停止工作。此外,当切换回横向模式时,iOS 状态栏会卡住并且不会移动到屏幕顶部。但是,当我注释掉所有针对orientationchange、resize、load、touchmove 的事件监听器时,可靠性大大提高了。不幸的是,它仍然挂起,但时间只有以前的 1/5。不是修复,但也许是一个线索。【参考方案2】:

SoundJS 团队已将此问题追溯到 Web 应用程序进入全屏模式时使用:

&lt;meta name="apple-mobile-web-app-capable" content="yes" /&gt;

向苹果报告了一个错误(参考 #15133492)。

目前除了不进入全屏模式外,我们没有其他解决方法。

【讨论】:

是的,这就是我所说的“独立网络应用程序”的意思。如果您和您的团队解决了什么问题,请告诉我! @OJay(爱 SoundsJS 顺便说一句!)。在 iOS7 上,我找到了一种每次都复制的方法(至少对于我的应用程序而言):1)将手机旋转到横向。 2)将手机平放!! 3)启动应用程序。除了锁定主页按钮,我发现它还导致事件监听器停止工作。此外,当切换到横向模式时,iOS 状态栏会卡住并且不会移动到屏幕顶部。然而,当我注释掉我所有的事件监听器时,可靠性大大提高了!不幸的是,它仍然挂起,但时间只有以前的 1/5。不是修复,但也许是一个线索。真的希望苹果能回应你的错误。

以上是关于如何防止 iOS 独立网络应用程序锁定设备?的主要内容,如果未能解决你的问题,请参考以下文章

当iPhone锁定在iOS5上时,如何防止应用程序被发送终止信号?

使用 iOS Web 应用的元标记锁定方面

iOS 应用程序方向旋转锁定/解锁由应用程序的配置

如何在 iOS 上使用 swift 防止我的​​应用程序屏幕锁定

MobaXterm SSH手动连接PNET Lab中的设备

如何在IOS上使用swift防止我的应用程序上的屏幕锁定