Взломанный iPhone 3g + startМониторингЗначительныеИзменения местоположения

Мне было интересно, был ли мой код взломан, или даже взломанный (с активированной многозадачностью) iPhone 3g, возможно, не поддерживает это.

Я создаю CLLocationManager, устанавливаю делегата и т. д. и говорю ему «startMonitoringSignificantLocationChanges». Всякий раз, когда приложение затем вызывается, я регистрирую это в textView. Но ничего никогда не происходит. Нет, если я проеду 5 км или 20 км.

Вот я и подумал, а давайте немного покопаемся. Я нашел этот API: NSLog(@"Доступно изменение местоположения: %i\n", [CLLocationManager значительноLocationChangeMonitoringAvailable]);

К сожалению, он возвращает ноль :[

Итак, что я спрашиваю: кто-нибудь заставил его работать на 3g? Любые подсказки? Невозможно?


person partel    schedule 07.07.2010    source источник


Ответы (2)


iOS4 добавляет в Core Location два новых фоновых режима: startMonitoringSignificantLocationChanges и startMonitoringForRegion:desiredAccuracy: с использованием CLRegion.

Последний работает только на устройстве iPhone 4, вероятно, из-за нового оборудования GPS в устройстве. Я подтвердил это с представителем Apple на форумах разработчиков Apple.

Однако я успешно протестировал startMonitoringSignificantLocationChanges на 3GS. Я тестировал один и тот же код на взломанном 3G, а также на ванильном 3G. Я считаю, что просто ответ заключается в том, что Apple решила не включать эту функцию в 3G из-за нехватки ресурсов.

Когда эта функция включена, ваша программа будет запущена в фоновом режиме, когда произойдет важное событие местоположения. Эта фоновая многозадачность может довести 3G до предела (в глазах Apple). В документации Apple по этому вопросу ОЧЕНЬ неясно, какие устройства что поддерживают. В нем говорится: «вызовите эти методы и полагайтесь на то, что они возвращают». Я уже писал на их форумах разработчиков, что хотел бы, чтобы они просто уточнили, какие устройства поддерживают какие режимы.

«Официальная» документация Apple для тестирования на доступность

В моем блоге описано, как это работает на 3GS, iPhone 4

person makdad    schedule 07.07.2010
comment
Это забавно. Во время поиска в Google я наткнулся на запись в вашем блоге :-) Там указано [...], что должно быть ДА для iPhone 3G/3GS (не iPod Touch). Вот почему я даже удосужился спросить, возможно ли это как-то :-) Спасибо за ваш подробный ответ! - person partel; 07.07.2010
comment
prattel - да, для 3G это было неправильно. Я исправил запись в блоге! - person makdad; 23.08.2010

Я попробовал это вчера, получил тот же результат. У меня взломанный iPhone 3G под управлением iOS4 с активированной многозадачностью.

[CLLocationManager значительноLocationChangeMonitoringAvailable] возвращает 0

Если я использую [manager startUpdatingLocation], он работает в фоновом режиме, но использует много ресурсов.

person Nicu    schedule 07.07.2010
comment
Да, startUpdatingLocation использует GPS в зависимости от настроек. И GPS потребляет много энергии. :[ Действительно печально. Думаю, это означает, что мне нужно получить новое устройство :/ - person partel; 07.07.2010