2012-02-25 2 views
20

Мне нужно создать приложение для будильника для iPhone, в котором пользователь может установить время и звук будильника. При этом я использовал UILocalNotification, чтобы отключить будильник.Приложение для будильника в iOS

Теперь, в UILocalNotification, сначала мы получаем уведомление оповещения с опцией «Закрыть» и «Вид». Если пользователь нажимает «Вид», мой делегат получает сообщение application:didReceiveLocalNotification: и звучит сигнал тревоги.

Но в системном приложении аварийной сигнализации мы не видим уведомления; он просто воспроизводит звуковой сигнал. Как я могу использовать это приложение в своем приложении?

ответ

3

Я уверен, что у вас может быть собственное собственное звуковое уведомление.

Пример кода localNotif.soundName = @"alarmsound.caf";

Примечание местное звуковое оповещение должны быть только 30 секунд или меньше, чтобы быть воспроизведены. Вы можете получить больше info here.

5

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

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

+0

Hi, Я наткнулся на это, ища что-то еще. Можем ли мы указать пользовательский временной интервал для повторения этих предупреждений, когда приложение перешло на задний план – heyjii

33

Я согласен с Дэвидом. Встроенное приложение iOS для iOS получает специальное лечение от Apple до звука> 30 секунд в фоновом режиме. Кажется, что он использует какой-то частный API, чтобы сделать его более продолжительным, даже когда он находится в фоновом режиме или закрыт. Это недоступно для других приложений, созданных вне Apple, поэтому даже не пытайтесь конкурировать с ними. Если вы покупаете все приложения для будильника в App Store (ака: одобрено Apple) и попробуйте их по одному, вы увидите, что им не хватает встроенного приложения для сигнализации в самой важной функции тревоги: «Sounding в течение длительного периода, в любом состоянии приложение находится в активном, фоновом или закрытом состоянии. «

Ваш лучший выбор для имитации фоновой сигнализации - использовать UILocalNotification в течение 30 секунд. Если вы действительно хотите разбудить своего тяжелого спящего, планируйте разблокировать пять из этих уведомлений на шестьдесят секунд друг от друга или что-то в этом роде, в надежде, что они проснутся до того, как закончится пятое уведомление.

Обратите внимание, что при таком способе ваш пользователь, который пропустит будильник, получит 5 всплывающих окон на экране, когда они проснутся (меньше, если они просыпаются во время одного из всплывающих окон), поэтому они будут тратить свои первые секунды их утреннее закрытие этих всплывающих окон - не самый большой пользовательский опыт.

Заключение: приложения для будильника подходят только для использования на переднем плане. Лучшее приложение Alarm, которое будет работать в любом состоянии, - это встроенное приложение Clock, сделанное Apple.

+6

Мне грустно это узнать. –

+1

[iHome + Sleep] (https://itunes.apple.com/de/app/ihome+sleep-alarm-clock-app/id346249053?mt=8) использовал это, но в 2.9 они удалили его с помощью комментарий "для соответствия требованиям iOS" ... Поэтому кажется, что, хотя это технически возможно, Apple не хочет, чтобы приложения использовали эту функцию. Позор. Я останусь с 2.8 –

+0

Мне очень грустно. Самое печальное когда-либо. –

0

Если вы включили фоновый режим «Аудио, AirPlay и изображение в картинке» и «Удаленные уведомления», вы можете использовать молчаливое push-уведомление, чтобы разбудить устройство, а затем начать воспроизведение звука, воспроизводя аудио, вы не будете ограничены 30 секундами, чтобы реагировать на уведомление, как обычно. Это не будет работать, если приложение было убито пользователем вручную, но если пользователь делает это, вы можете отправить локальное уведомление с просьбой повторно открыть приложение.

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