Обнаружение типа прерывания iPhone

Я могу обнаружить, что iPhone заснул и возвратился изо сна, при помощи applicationWillResignActive и applicationDidBecomeActive. Но как я узнаю, каким прерыванием это было. Я подаю заявку аудиоплеера и потребность сохранить игру аудио, когда iPhone засыпает (который я знаю, как сделать). Но я должен прервать аудио, когда сообщение, прерывание сигнального или низкого уровня заряда происходит. Также я должен возобновить аудио, когда событие закончено.

Таким образом, как я дифференцируюсь между этими различными прерываниями.

9
задан Prashant 12 December 2009 в 21:09
поделиться

2 ответа

Эта информация, вероятно, недоступна для вашего приложения, но вот некоторые вещи, которые можно попробовать.

  1. В applicationWillResignActive: проверьте свойства объекта NSNotification и userInfo, чтобы убедиться, что там есть какие-то подсказки.

  2. Зарегистрируйтесь, чтобы получать все уведомления, отправленные в центр уведомлений по умолчанию:

      [[NSNotificationCenter defaultCenter] addObserver: селектор: @selector (didReceiveNotification :) имя: nil объект: nil];
    

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

  1. Это наиболее опасный вариант, но вы можете получить доступ к предупреждению, которое отображается, если это сообщение или предупреждение о разряде батареи. Оповещения отображаются в UIWindow поверх основного UIWindow вашего приложения. Вы можете зарегистрироваться в UIWindowDidBecomeVisibleNotification, а затем посмотреть на подвиды окна, чтобы увидеть, можете ли вы найти предупреждение или другую полезную подсказку.

Все вышеперечисленные методы будут полагаться на недокументированное поведение, и, возможно, ваше представление будет отклонено. из App Store. Ни один из них не связан с вызовами частных методов, хотя вы можете утверждать, что наблюдение за недокументированным именем уведомления считается частным API. В конце концов, мнение Apple - единственное, что имеет значение.

Лично я бы попробовал, убедившись, что код корректно завершится сбоем, если и когда система изменится.

5
ответ дан 3 November 2019 в 07:13
поделиться

Использовать аудиосеанс ?

0
ответ дан 3 November 2019 в 07:13
поделиться