MFMessageComposeViewController alloc возвращает nil

В моем приложении MFMailComposeViewController работает нормально, но создать новый экземпляр MFMessageComposeViewController не удается.

Вот код для обоих:

-( IBAction)sendSMS: (id)sender
{
 MFMessageComposeViewController *picker = [[[MFMessageComposeViewController alloc] init] autorelease];
 picker.messageComposeDelegate = self;

 NSArray *toRecipients = [NSArray arrayWithObject: cell.currentTitle ]; 

 picker.recipients = toRecipients;

 [self presentModalViewController:picker animated:YES];
}

-( IBAction)sendEmail: (id)sender
{
 MFMailComposeViewController *picker = [[[MFMailComposeViewController alloc] init] autorelease];
 picker.mailComposeDelegate = self;

 NSArray *toRecipients = [NSArray arrayWithObject: email.currentTitle ]; 

 [picker setToRecipients:toRecipients];

 [self presentModalViewController:picker animated:YES];
}

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

18
задан iwasrobbed 17 August 2010 в 00:54
поделиться

1 ответ

Проверяли ли вы + [MFMessageComposeViewController canSendText] ?

Из MFMessageComposeViewController Class Reference ,

Перед представлением представления композиции сообщения, вызовите метод класса 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 этого не делает.

47
ответ дан 30 November 2019 в 06:39
поделиться