2012-05-21 2 views
5

В приложении «Напоминания», представленном с iOS 5, вы можете настроить геозонность, чтобы напоминание напоминало, когда вы приближаетесь к адресу. На основе местоположения также можно настроить определенный день. Apple очень эффективна в отношении того, как они обрабатывают напоминания о местоположении и времени, поскольку они не начинают отслеживать ваше местоположение, пока оно не станет днем ​​напоминания.Как приложение Reminders знает, как отслеживать мое местоположение только в день напоминания?

Пример:

Это понедельник, и я установить напоминание на среду, чтобы напомнить мне, когда я вернусь домой, чтобы вывезти мусор.

Если вы обратите внимание, вы заметите, что индикатор обслуживания местоположения (фиолетовый треугольник) рядом с индикатором срока службы батареи не будет отображаться вплоть до полуночи в среду.

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

я смог найти UIApplicationSignificantTimeChangeNotification и applicationSignificantTimeChange:, но это указано в документации,

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

Так что это заставляет меня думать, что это не сработает.

Моя другая мысль - использовать UILocalNotification и устанавливать уведомление на интересующее вас время и когда это уведомление увольняется, выполните код для включения служб определения местоположения. Из-за моего отсутствия опыта работы с UILocationNotification, однако я знаю, можно ли выполнить такой код.

Кто-нибудь знает, как этого достичь?

+0

Вы не можете сделать это с помощью LocalNotifications, это уведомление показывает только всплывающее окно с указанным сообщением. –

ответ

0

Вы можете установить местное уведомление (дистанционное уведомление) с информацией о том, чтобы активировать геозонность в тот день, когда вы хотите активировать свою функцию.

Это пробуждает ваше приложение в методе «didReceiveLocalNotification» вашего приложения appDelegate и там вы помещаете свой geofence кода.