2010-07-10 4 views
0

У меня есть идея для довольно необычного будильника для iPhone. Но на данный момент у меня есть некоторые мысли о том, как реально реализовать это. Во-первых: забыв об использовании фоновых сервисов, как бы я сделал фактический таймер, который запускает будильник и т. Д.? Отдельный поток? Или SDK включает любые приятные функции тревоги, которые я пропустил? Из-за этого я должен быть максимально эффективным. Но на данный момент я не занимаюсь фоновым процессом.Как реализовать будильник с iPhone SDK 4.0

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

ответ

5

Я бы создал local notification. По сравнению с NSTimer, локальные уведомления имеют то преимущество, что они работают независимо от того, работает ли ваше приложение или нет.

+0

Кажется интересным, однако. Мне также нужно иметь возможность делать некоторые вещи GPS и загружать/разбирать XML. Можно ли это сделать в фоновом режиме? – sebrock

+0

Наверное, нет. В любом случае, я склоняюсь к NSTimer ... – sebrock

+0

Чтобы ответить на ваш вопрос: «Возможно ли это сделать в фоновом режиме» - Да, это возможно ... но вы должны объявить свое приложение как требующее местоположения (оно делает это включив ключ UIBackgroundModes в свой файл Info.plist и установив значение этого ключа в массив, содержащий строку «location») ... просто имейте в виду, что он будет поддерживать систему GPS и, таким образом, разрядиться батареей. – Jann

1

Вы должны создать объект UILocalNotification и запланировать его с помощью schedLocalNotification, это довольно просто, но существуют сильные ограничения. Приложение может или не может быть уведомлено о возникновении тревоги. Когда сигнал тревоги представлен, он будет в форме AlertView. Если пользователь нажал «Закрыть», вы не получите уведомление. Если он набирает «View Details», то вы получаете событие didReceiveLocalNotification, ваше приложение перемещается на передний план и может делать все, что вы хотите.

Вы также можете зарегистрироваться на iOS4 для получения обновлений при изменении местоположения. Разбор XML может быть выполнен, но опять же есть ограничения относительно того, сколько времени вы должны запускать в фоновом режиме.

Вся информация вместе с примерами кода можно найти здесь: http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html

+0

Да, это не сработает, так как мне нужно проверить местоположение за несколько минут до того, как фактический сигнал тревоги погаснет. Временной интервал между настройкой будильника и огня может составлять часы. Я думаю, что мне просто нужно будет использовать стандартный метод NSTimer с приложением в forground. – sebrock

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