Ответ 1
Вы отметили +[MFMessageComposeViewController canSendText]
?
Из Справочник класса MFMessageComposeViewController,
Прежде чем представить представление композиции, вызовите метод класса
canSendText
, чтобы убедиться, что пользовательское устройство настроено соответствующим образом. Не пытайтесь представить представление композиции, если метод canSendText возвращает NO. Если доставка SMS недоступна, вы можете уведомить пользователя или просто отключить функции SMS в своем приложении.Начиная с iOS 5, вы можете зарегистрироваться, чтобы получать уведомления об изменениях в доступности отправки текстовых сообщений посредством уведомления
MFMessageComposeViewControllerTextMessageAvailabilityDidChangeNotification
.
Причины, по которым он может вернуться nil
:
- Устройство не работает iOS 4.
- Устройство - iPod Touch/iPad без включенного iMessage.
- Нет SIM-карты? (Теперь представление отображается в iOS 6, приложение не уведомляется о сбое отправки сообщения.)
- "Устройство" на самом деле является симулятором. (Возможно, это работает и в iOS 6).
Аналогично, [[MFMailComposeViewController alloc] init]
возвращает nil
, когда учетные записи не включены (вы можете быстро протестировать это, отключив учетные записи в настройках), но также показывает вам предупреждение "Нет настроенных учетных записей электронной почты". MFMessageComposeViewController этого не делает.