Проблемы с геолокацией Cordova в iOS 8 Beta 2

#javascript #ios #cordova #geolocation #ios8

#javascript #iOS #кордова #геолокация #ios8

Вопрос:

Это скорее информационный пост: последние несколько дней я боролся с нефункциональным приложением геолокации в последней бета-версии iOS 8.

Сначала я не был уверен, был ли он изолирован для iOS 8, или это была проблема device vs simulator, но после повторной загрузки XCode 6 Beta 2 (по какой-то причине у моей первой загрузки был сломанный симулятор), я подтвердил, что действительно, симулятор iOS 8 Beta 2 не казалсямне нравятся мои попытки получить геолокацию.

Сначала вызов, похоже, вообще не работал; затем я изменил включение phonegap.js на включение cordova.js и, наконец, добился некоторого прогресса. Документация по этому поводу ужасна, так как следующие руководства в официальных документах, похоже, заставляют поверить, что они взаимозаменяемы. Я бы посоветовал тем, у кого есть проблемы, сначала проверить это.

Вместо того, чтобы запускать функции navigator.geolocation.getCurrentPosition(....) обратного вызова, как ожидалось, вместо этого он зависнет и вообще ничего не будет делать. Иногда переход от страницы к ней и обратно приводил к обратному вызову с ошибкой, но это было очень непоследовательно. После установки { timeout: 5000 } опции, казалось, что он продолжает отсчитывать время при каждом вызове. Не было никаких ошибок в консоли, никаких ошибок в XCode, ничего. Функция успеха просто не будет выполняться, точка, и обратный вызов ошибки тоже не будет, если я явно не установил тайм-аут через X секунд. Это ошибка, изолированная от бета-версии iOS 8, поэтому для большинства (пока) это не проблема, но я чувствовал, что должен опубликовать это на случай, если кто-то столкнется с этим. Я также буду размещать сообщения в Центре разработки Apple.

Комментарии:

1. Я сталкиваюсь с той же проблемой. Моя функция ошибки настроена на получение местоположения по IP-адресу, поэтому использование тайм-аута все равно работает. Однако хотелось бы, чтобы это было исправлено. Вы должны подать отчет об ошибке.

Ответ №1:

Это известная проблема, и она исправлена здесь:

https://github.com/apache/cordova-plugin-geolocation/commit/4102a332b0c6b0c3513370a4c030a32e46a51e10#commitcomment-7791523

Только что протестировал его в iOS8, он работает.

Выполните следующую команду в папке platforms / ios вашего проекта phonegap:

 cordova plugin rm org.apache.cordova.geolocation
cordova plugin add https://github.com/apache/cordova-plugin-geolocation.git   
 

По какой-то причине он удаляет CDVLocation.m из списка компиляции, вам нужно отменить это.

Записи в XXX.xcodeproj/project.pbxproj:

 979B00CA27D6412CB8C6CF74 /* CDVLocation.m in Sources / = {isa = PBXBuildFile; fileRef = E3B4F7C4AF8242A09E9BF8C1 / CDVLocation.m */; };
979B00CA27D6412CB8C6CF74 /* CDVLocation.m in Sources */,
 

Без этих 2 строк плагин недоступен для использования в приложении.

Если у вас есть этот файл в системе управления версиями, просто отмените удаления, связанные с CDVLocation.m в XXX.xcodeproj/project.pbxproj.

Если нет, попробуйте добавить CDVLocation.m на этапе компиляции исходных текстов на этапах сборки в настройках проекта.

Комментарии:

1. Я сам не проверял это, но собираюсь пойти дальше и принять этот ответ, поскольку он подтверждает исправление, о котором я только что прочитал. Спасибо за обновление!

2. Простое переключение URL-адреса плагина в моем ху-ке работает. Ничего не требуется, как манипулировать проектом Xcode.

3. Да, пришлось добавить CDVLocation.m на этапы сборки. Спасибо @onlyurei

4. я просто подтверждаю, что если вы добавите add CDVLocation.m в «Этапы сборки» -> «Скомпилировать исходные тексты», это будет работать для последней версии iOS 8 (официальная версия, а не БЕТА-версия или RC)

5. Просто попробовал это сделать, и это сработало. добавлен в качестве плагина через командную строку.