iOS: отображение предупреждения при входящем звонке?

Я хочу, чтобы при получении вызова запускалось локальное уведомление (и отображалось предупреждение) - возможно ли это? Может ли событие вызова привести к запуску приложения или срабатыванию уведомления?

Как запускается скайп? С push-уведомлениями?

Спасибо


person Alex1987    schedule 22.03.2011    source источник
comment
Skype использует push-уведомления.   -  person MusiGenesis    schedule 22.03.2011


Ответы (4)


Если ваше приложение работает во время вызова, проверьте CoreTelephony Framework. CTCall предоставляет информацию о состоянии вызова. Я сам этим не пользовался, но может оказаться полезным.

extern NSString const *CTCallStateDialing;
extern NSString const *CTCallStateIncoming;
extern NSString const *CTCallStateConnected;
extern NSString const *CTCallStateDisconnected;

Изменить:

CTCallCenter позволяет вам зарегистрироваться для изменения состояния события вызова. Как я уже сказал, ваше приложение должно быть запущено, чтобы знать, что что-то изменилось. Вы можете запросить максимальное время работы в фоновом режиме (я думаю, что сейчас это 10 минут), когда ваше приложение перемещается в фоновый режим. Эти api доступны только в iOS 4.0 и новее.

person Joe    schedule 22.03.2011
comment
Можно ли на экране входящего звонка показать наложение Truecaller наподобие оверлея? - person nr5; 20.12.2016

Делегат вашего приложения будет получать вызовы различных методов протокола UIApplicationDelegate при возникновении различных событий. Одним из них является метод - (void)applicationWillResignActive:(UIApplication *)application, который вызывается для входящих вызовов или текстовых сообщений, но может вызываться и по другим причинам.

См. справочник по протоколу UIApplicationDelegate для Дополнительная информация.

person Greg    schedule 22.03.2011
comment
Похоже, что в CoreTelephony появилась возможность делать это в iOS 4.0+, пока приложение работает. developer.apple.com/library/ios/#documentation/ - person Joe; 22.03.2011
comment
Спасибо, Джо. Я обновил свой ответ, чтобы удалить ошибочную часть. - person Greg; 22.03.2011
comment
Нет проблем, я снова смогу поставить +1, как только спрашивающий выберет ответ, поскольку мне еще предстоит протестировать эту структуру. - person Joe; 22.03.2011

И, чтобы ответить на часть вашего вопроса, которого еще никто не коснулся, Skype использует фоновые методы, специально предназначенные для поддержания активности приложения в фоновом режиме для приема вызовов VOIP. Некоторые из них действительно работают, ожидая вызова. Если вы не утверждаете, что являетесь фоновым приложением для VOIP или аудио, вы не сможете этого сделать - и если вы ДЕЙСТВИТЕЛЬНО заявляете об этом, вам лучше ДЕЛАТЬ это, иначе вы никогда не попадете в магазин приложений.

person Dan Ray    schedule 22.03.2011

Лучшее, что вы можете сделать, это подключить метод applicationWillResignActive, который вызывается в основном всякий раз, когда ваше приложение теряет фокус (что происходит при поступлении вызова, но также происходит по другим причинам, поэтому он не идеален).

См. http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html.

person MusiGenesis    schedule 22.03.2011