2013-06-03 3 views
1

Я написал webapp с использованием JQM (1.3.1), jQuery (1.9), CSS3 и javascript. Теперь я нахожусь на втором этапе, где я портирую это приложение для магазина Apple с использованием разрыва в телефоне (2,7) (целевой iOS (6.1)/iPhone5 - Проблема может быть воспроизведена на iPhone 4S/iOS 6.0Событие «deviceready» в телефонной книге никогда не срабатывает, если служба определения местоположения отключена.

Мой код геолокации, как показано ниже, работал отлично, когда он был выполнен в браузере.

var geoOptions = { 'enableHighAccuracy': true, 'timeout': 10000, 'maximumAge': 0 }; 
navigator.geolocation.getCurrentPosition(geoSuccess, geoError, geoOptions); 

function geoSuccess(postion) 
{ 
    //on success code here  
} 
function geoError(error) 
{ 
    //on error code here  
} 

Однако когда-то проходил через PhoneGap то мое приложение просил разрешения пользователя для доступа к услуге определения местоположения дважды, т.е. он показал всплывающее дважды. Поэтому, чтобы решить что я использовал код ниже, как было предложено во многих решениях в stackoverflow.

function onDeviceReady() { 
navigator.geolocation.getCurrentPosition(geoSuccess, geoError,geoOptions); 
} 

$(function() { 
document.addEventListener("deviceready", onDeviceReady, false); 
}); 

Это разрешило всплывающее сообщение, однако началось новое.

Проблема: если служба определения местоположения отключена, мой код добавляет прослушиватель deviceready и ожидает, что событие deviceready будет запущено, но событие никогда не срабатывает, и оно просто сидит там. Если служба определения местоположения включена, она работает должным образом.

Кто-нибудь сталкивался с этой проблемой, прежде чем вы можете предложить мне, что вы сделали для ее решения, пожалуйста, я уже вложил в нее день отладки и исследования.

С уважением, спасибо.

+0

Привет, у людей есть что-нибудь для меня? –

ответ

2

Проблема решена! :)

Оказывается, я не включал библиотеку разрыва телефона точно так, как описано в статье о создании телефонной развязки.

Проверить эту статью https://build.phonegap.com/docs/preparing-your-app

Вам не нужно включать эту библиотеку на каждой странице, но только индексную страницу, я не знаю, как это делает никакой разницы, но тогда «deviceready» событие начали стрелять после того, как я удалил любые ссылки на phonegap.js на любой другой странице, но index.html.

Во-вторых, я заметил, что по какой-то причине моя обработка ошибок, как показано ниже, перестала работать после сборки phonegap.

switch(error.code) 
{ 
    case error.PERMISSION_DENIED: 
    search.openPanelForSearch("Either the app was denied permission or the location srvice is currently turned off.", showInitialMap); 
    break; 
    case error.POSITION_UNAVAILABLE: 
    search.openPanelForSearch("Geolocation information was unavailable. Would you like to try out a manual serach instead?", showInitialMap); 
    break; 
    case error.TIMEOUT: 
    search.openPanelForSearch("Service was timed out since it took too long to retrieve the gelolcations. Would you like to try out a manual search instead?", showInitialMap); 
    break; 
    case error.UNKNOWN_ERROR: 
    search.openPanelForSearch("Sorry an unknown error occurred. Would you like to try out a manual serach instead?", showInitialMap); 
    break; 
} 

мне пришлось изменить его ниже

switch(error.code) 
{ 
    case 1: 
    search.openPanelForSearch("Either the app was denied permission or the location service is currently turned off.", showInitialMap); 
    break; 
    case 2: 
    search.openPanelForSearch("Geolocation information was unavailable. Would you like to try out a manual search instead?", showInitialMap); 
    break; 
    case 3: 
    search.openPanelForSearch("Service was timed out since it took too long to retrieve the gelolcations. Would you like to try out a manual serach instead?", showInitialMap); 
    break; 
    default: 
    search.openPanelForSearch("Sorry an unknown error occurred. Would you like to try out a manual search instead?", showInitialMap); 
    break; 
} 

Надеется, что это поможет кому-то. Благодарю.

 Смежные вопросы

  • Нет связанных вопросов^_^