20

私のアプリケーションでは、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];
}

電子メール ビュー コントローラーが正常に動作するため、すべてが正しくリンクされていることは明らかです。おそらく構成に関して欠けているものはありますか?

4

1 に答える 1

49

チェックしました+[MFMessageComposeViewController canSendText]か?

MFMessageComposeViewController クラス リファレンスから 、

メッセージ構成ビューを表示する前に、クラス メソッドを呼び出しcanSendTextて、ユーザーのデバイスが適切に構成されていることを確認します。canSendText メソッドが NO を返す場合は、メッセージ構成ビューを表示しようとしないでください。SMS 配信が利用できない場合は、ユーザーに通知するか、単にアプリケーションで SMS 機能を無効にすることができます。

iOS 5 以降、テキスト メッセージの送信の可否の変更を通知で受け取るように登録できますMFMessageComposeViewControllerTextMessageAvailabilityDidChangeNotification

返される理由nil:

  • デバイスで iOS 4 が実行されていません。
  • デバイスは、iMessage が有効になっていない iPod Touch/iPad です。
  • SIMカードがありませんか?(ビューは iOS 6 で表示されるようになりました。アプリにはメッセージ送信の失敗が通知されません。)
  • 「デバイス」は実際にはシミュレーターです。(おそらく、これは iOS 6 でも機能します。)

同様に、有効になっているメール アカウントがない場合[[MFMailComposeViewController alloc] init]は返さnilれますが ([設定] でアカウントを無効にすることでこれをすばやくテストできます)、「メール アカウントが構成されていません」というアラートも表示されます。MFMessageComposeViewController はこれを行いません。

于 2010-08-17T03:15:32.950 に答える