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