Я изучил всю документацию, касающуюся фоновых состояний и разрешений для воспроизведения звука в iOS, и я не могу понять, как конкретное приложение может, по-видимому, просыпаться в определенное время в будущем и воспроизводить несвязанные звуки. Я изучаю проблему, потому что хочу добавить эту функциональность (как и многие другие, которые я видел) в приложение, которое я создаю.
Речь идет о приложении «Тревога» — ранее «Спи, если сможешь». Это будильник. В отличие от большинства других будильников в магазине приложений, он может воспроизводить песню iTunes в качестве звука будильника, вообще не находясь на переднем плане. Он может обойти переключатель «звонок/беззвучный режим», увеличить громкость до максимума и воспроизвести заранее выбранную песню из локальной библиотеки iTunes, когда она кажется (или должна быть) в фоновом режиме.
Я не знаю, как можно выяснить, что делает Alarmy в ожидании времени срабатывания будильника, но я вижу, что у него включены службы определения местоположения, включены сотовые данные и включено фоновое обновление. Однако, даже если все это отключено в настройках, будильник все еще работает и воспроизводит песню iTunes! Я также должен предположить, что Alarmy не воспроизводит тишину до времени будильника, поскольку он не будет не прошли через процесс представления Apple (или они могли просто пропустить это, и игровое поле теперь совершенно неравномерно).
У него есть функция, которая кажется немного неуместной — приложение отображает информацию о погоде. Это не обязательно полная ерунда — я вижу в этом некоторую ценность для приложения будильника — но возможно ли, что они запрашивают какой-то API погоды с достаточно короткими интервалами, чтобы приложение не спало в фоновом режиме до времени срабатывания будильника. ? Если да, то как это будет выглядеть? Кроме того, погодные API могут свободно использовать до определенного количества запросов, но у них много загрузок, и я предполагаю, что много запросов. Для платного приложения с фиксированной ценой и без IAP это не очень хорошая бизнес-модель.
Итак, в заключение, ИМХО, эта функция не может исходить из каких-либо разрешений на фоновое аудио, поскольку приложение не воспроизводит активно звук, когда оно входит в фоновый режим (если только оно не молчит, и им просто повезло, и они проскользнули через процесс отправки); это может происходить из-за постоянного обновления приложения в фоновом режиме для служб определения местоположения / погоды (а затем с помощью простого таймера, отсчитывающего время до срабатывания будильника), но эта функция все еще работает, когда фоновое обновление и службы определения местоположения отключены для будильника. Может ли быть так, что разрешения есть, поэтому, хотя приложению не разрешен доступ к информации о местоположении, iOS по-прежнему позволяет ему работать в фоновом режиме?
И последнее соображение: существует ли метод тихой отправки, с помощью которого они могут отправлять уведомление в приложение во время события и проверять, не пора ли включить сигнал будильника? Снято там в темноте...
Любое понимание этого вопроса очень поможет! Я рву на себе волосы! Я могу отредактировать этот пост и добавить дополнительную информацию — например, какие ресурсы я уже просмотрел — если хотите, но я совершенно уверен, что просмотрел все возможные ресурсы. Еще раз огромное спасибо за любую помощь.