Как мне обрабатывать входящий звонок, когда мое приложение активно на iPhone? - PullRequest
0 голосов
/ 22 февраля 2010

Как мне обработать входящий звонок, когда мое приложение активно? Будет ли мое приложение прекращено или приостановлено?

Ответы [ 3 ]

6 голосов
/ 22 февраля 2010

Привет молодой авантюрист. Ваше решение взять на себя жизнь разработчика iPhone проверит вас, но вознаграждение может быть отличным. Для ответа на ваш вопрос мне нужно, чтобы вы выполнили для меня ряд заданий. Первая задача - очистить мой подвал от заражения крысами. Вы можете найти дверь в подвал прямо за занавесками у бара. Если вы видите кобольдов, вы также можете их убить. Когда у тебя будет восемь крысиных хвостов, возвращайся ко мне за твоей наградой.

Чтобы ответить на ваш вопрос, это зависит от того, что вы пытаетесь сделать, но вкратце applicationWillResignActive вызывается при входящем звонке, а затем ваше приложение отключается. willApplicationTerminate будет вызвано, если пользователь решит ответить на вызов. Для получения более подробной информации смотрите Руководство по реагированию на прерывания

Короче говоря, если ваше приложение является игрой, было бы разумно приостановить его как можно скорее, поэтому сделайте это в applicationWillResignActive для менее критических нужд, а willApplicationTerminate - это место, в котором вы сохраняете состояние, прежде чем закрывать навсегда.

0 голосов
/ 28 июля 2010

После получения вызова система вызовет делегата приложения applicationWillResignActive: метод и покажет возможность принимать входящий вызов или нет, это стандартное поведение, по крайней мере, до iOS4, но после этого у нас есть 3 возможных результата:

1) Пользователь игнорирует вызов:

-> тогда он называется applicationWillBecomeActive: метод делегата приложения.

2) пользователь решает ответить на вызов (до iOS 3.x):

-> вызывается applicationWillTerminate вашего делегата приложения, и вы должны сохранить все необходимые данные, освободить использованную память и все такое.

3) пользователь решает ответить на звонок (iOS 4):

-> вызывается метод applicationDidEnterBackground: делегата приложения, и вы тоже должны к этому относиться, но это не так страшно, как applicationWillTerminate, просто обязательно сохраните разумные данные и освободите как можно больше памяти.

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

Хорошее место, чтобы прочитать это более подробно, - это собственное руководство Apple по программированию приложений: http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/CoreApplication/CoreApplication.html#//apple_ref/doc/uid/TP40007072-CH3-SW9

0 голосов
/ 22 февраля 2010

Я полагаю, что приложение прекратит работу при получении входящего вызова, но перезапустится после завершения вызова. (Хотя я могу ошибиться в этом вопросе, и приложение может снова стать «неактивным» и «активным» после завершения вызова. Я не проверял это на 100%).

Если приложение завершает работу, вам нужно будет ответить на метод делегата applicationWillTerminate в классе делегата приложения.

Если приложение становится неактивным, вам нужно будет ответить на методы application[Did/Will]BecomeInactive и application[Did/Will]BecomeActive в делегате приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...