我有兴趣创建一个基于HTML5地理位置的网络应用程序,该应用程序在手机屏幕关闭时仍然可以运行(例如,跟踪手机放在口袋里时的运行距离)。
有没有办法让应用程序继续运行但屏幕关闭,或者在使用其他应用程序时让应用程序在后台运行?至少在某些流行的移动设备上是否可能(特别是较新的iOS和Android设备?)
答案 0 :(得分:21)
我的music app是HTML5,还需要在后台运行。对此的支持因移动浏览器而异。
你可以看到它的命中或错过。有一半时间我最终试图将手机放在我的口袋里,试图让屏幕保持开启,直到我不小心按下它 - 完全糟透了。我渴望用户能够更好地控制在后台运行HTML5应用程序。如果我不得不猜测我会说,对它的普遍支持是非常遥远的,如果它甚至有牵引力。即使我几乎是积极的,我也不会被迫使用本机应用程序解决方案。与此同时,我仍然充满希望并继续测试最新的移动浏览器。因为如果真的发生它会很棒。 : - )
我还应该指出,根据我的经验,对于几乎所有上述组合,使用HTML5同时运行javascript,提取网络数据和播放音乐通常会将手机变成烤箱并杀死你的电池很快。 UGG
此外,如果您正在使用jQuery Mobile(这非常棒),您将在不同的浏览器上看到不同的触摸处理。例如,Firefox touch效果很好,Dolphin非常糟糕,需要精确的触摸和保持 - 释放才能正确使用。这不是HTML5的直接错误,而是我正在处理的另一个问题。
以下是移动HTML5上的另一位开发人员interesting thoughts。
更新:我(2013年5月22日)在我的三星Galaxy S3上下载了Opera,到目前为止它支持最好的HTML5。对于我的应用程序,它继续在后台运行javascript,无论屏幕是关闭,还是Opera被推到后台,至少有几首歌曲。
答案 1 :(得分:4)
您可以使用服务工作者:
https://developers.google.com/web/fundamentals/primers/service-workers/
服务工作者是您的浏览器在后台运行的脚本,与网页分开,为不需要网页或用户交互的功能打开了大门。今天,它们已经包含推送通知和后台同步等功能。将来,服务工作者可能会支持其他内容,例如定期同步或地理围栏。
准确地说,应用程序可以按如下方式注册服务工作者:
Data1[] = { .mp3, 1209879834 bytes);
Data2[] = { .txt, 134213443 bytes);
DataX[] = { .X, X bytes);
一旦服务工作者注册成功,sw.js中实现的任何应用程序逻辑都将在后台执行;即使禁用了应用程序选项卡。