Процесс конечного пользователя
- Открытие приложения
- Включение «Тихого режима».
- Нажмите «Кнопка блокировки»
- Приложениеможет по-прежнему НАЧАТЬ воспроизведение звука по прошествии нескольких часов, не воспроизводя в это время никакого звука.
Приложения, которые делают это
Этому способно сделать множество приложений тревоги, и яне думайте, что они используют тихий звук, чтобы приложение продолжало работать, поскольку они не звучат, если вы фактически выходите из приложения с домом.
- Будильник Pro
- Мои часы
- Волновой будильник
- Будильник
- iHome
- ...
... Поддерживают ли они цикл после того, как были заблокированы каким-либо образом, или это уведомление (которое не может воспроизводить звук в беззвучном режиме), запускающее резервное копирование приложения для воспроизведения звука, или каким-либо другим способом?
Реализованы текущие методы
AVAudioPlayer с использованием:
AudioSessionInitialize(nil, nil, nil, nil);
AudioSessionSetActive(YES);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof(sessionCategory),&sessionCategory);
И настройкой Info.plist:
Необходимые фоновые режимы (UIBackGroundModes) - приложение воспроизводитаудио (аудио)
В настоящее время
Я могу воспроизводить звук даже в беззвучном режиме, когда приложение запущено и на экране.Если звук уже запущен, приложение можно закрыть кнопкой «Домой», и звук запустится.НО, если приложение не воспроизводит звук, а экран заблокирован, все потоки уничтожаются, и звук никогда не воспроизводится.Как этим приложениям удается обойти это?
Возможные подходы, найденные до сих пор
A.Используйте 'beginBackgroundTaskWithExpirationHandler:' с бесконечным циклом, чтобы приложение продолжало работать бесконечно.
Плюсы:
- Похоже, вы можете сделать эту работу вмножество ситуаций, даже когда пользователь нажимает клавишу home.
Минусы:
- Насколько я могу судить, это противоречит политике Apple.
- будет использовать больше ресурсов
Комментарии:
Я почти заставил это работать и, возможно, с некоторыми изменениями.Похоже, это не то, что делают все остальные тревоги, так как они не продолжают работать, если вы нажмете домашнюю BTN.Что говорит о том, что они используют какой-то метод, который дает им разрешение на запуск, пока он заблокирован, но не в BG.(Что мне и нужно)
Также, когда вы спрашиваете, сколько времени у вас осталось, вы получаете примерно 10 минут.Отбросив туда бесконечный цикл, цифры фактически опустятся до 0, а затем перейдут в минус на несколько часов подряд (протестировано). Я не уверен, как это будет вести себя в реальном мире или с точки зрения принятия приложения.
B.Используйте бесшумную звуковую петлю, чтобы выдавать себя за непрерывный аудиопроигрыватель медиа-центра
Плюсы:
- Работает при блокировке и будет продолжать работать вбольшинство ситуаций.
Минусы:
- Может произойти сбой при прерывании другим медиацентром и в некоторых других случаях.
- МожетТакже обратите внимание на политику Apple.
Комментарии:
Это может работать во многих ситуациях, но далеко не идеально.И поскольку, как я еще раз говорю, должен быть другой метод, который не задокументирован.
Заключение пока что
Тестирование с перечисленными APPs показывает, что они не используют ни один из двух методов, которые я только что описал.Метод «А», кажется, ближе, но если он будет реализован, он не будет вести себя так, как ведут себя эти приложения.
Я использовал билет разработчика Apple, чтобы получить больше информации, я также опубликую любые новые открытия в отношении этих средств.
Спасибо
Любое понимание приветствуется и за ваше участие до сих пор.