1

我想使用许多位置在锁定屏幕上显示。我已经测试过了,只显示了 10 个位置。有什么方法可以显示超过 10 个位置吗?

4

1 回答 1

1

Rachel 是正确的,因为 Passbook 只会识别 pass.json 中包含的前 10 个位置。如果超过 10 个,则这些将被忽略。

您链接到的解决方法提出以下建议:

  • 您创建一个启用位置的应用程序
  • 每当您的应用检测到重大位置变化时,它都会向您的服务器发出信号,提供通行证序列号和新位置
  • 然后,您的服务器选择 10 个最近的位置,编译一个新的通行证并将其推送到设备

根据您在确定最合适的位置时想要获得的复杂程度,这可能需要一些工作。它也不会带来很好的用户体验,因为位置会消耗电池,并且通行证的不断更新会消耗数据。

三种替代方法是:

  • 让用户为他们选择 10 个最合适的位置,或者
  • 每当使用通行证时更新位置。如果通行证被扫描,那么您可以使用扫描设备的位置来确定最近的 10 个位置并推送更新的通行证,或者
  • 在通行证背面添加一个指向 HTML5 页面的唯一链接,该页面使用 Javascript 获取其当前位置(见下文),然后启动推送。例如,要使用最近的 10 个位置更新您的通行证,请单击下面的链接http://www.yourservice.com/?passSerial=xxxx

示例位置 JS:

<script>
if(navigator.geolocation){
    navigator.geolocation.getCurrentPosition(success,fail);
}

function success(a) {            
    $("#long").val(a.coords.longitude).focus(); // focus required to force an update of the field value in webkit browsers
    $("#lat").val(a.coords.latitude).focus();
    // initiate ajax callback to push new pass and alert the user that it is on the way

}
function fail() {
    alert("You must give permission to provide your location, please refresh this page and try again");
}
</script>
于 2013-05-21T10:27:19.470 回答