2011-08-11 10 views
0

SMSの送信ステータスを確認できますか?例えばSMSの送信ステータスの確認iPhone

MFMessageComposeViewController * smsPicker = [[MFMessageComposeViewController alloc] init]; 

smsPicker.messageComposeDelegate = self; 

smsPicker.body = @"Body"; 

[self presentModalViewController:smsPicker animated:YES]; 

[smsPicker release]; 

私はなぜ知らないが、デリゲート - (無効)messageComposeViewController:(MFMessageComposeViewController *)コントローラdidFinishWithResult:(MessageComposeResult)結果。送信前に実行し、ユーザーがSMSをキャンセルした場合に動作します。

SMSが送信された場合や送信されなかった場合(セルネットワークのエラーなど)、私は知っておく必要があります。将来の助けをありがとう!

答えて

1

resultパラメータmessageComposeViewController:didFinishWithResult:を使用して、メッセージのステータスを確認できます。そのタイプはMessageComposeResultです:心の中で

enum MessageComposeResult { 
    MessageComposeResultCancelled, 
    MessageComposeResultSent, 
    MessageComposeResultFailed 
}; 

ベアMessageComposeResultSentだけ後で送信するためのメッセージの成功したキューイングと解釈することができること。実際の送信は、デバイスが送信できるときに発生します。


は、どのように私は、デバイスが送信できるかどうかを確認することができますか?

は、デバイスがテキストメッセージを送信することが可能であるかどうかをテストMFMessageComposeViewControllercanSendTextクラスのメソッドを使用します。ドキュメントによると、メッセージ作成ビューコントローラを表示しようとする前に、常にこのメソッドを呼び出す必要があります。デバイスがメッセージを送信することが可能である場合

しかし、これはあなたを教えてくれません(場合には、あなたが心の中でこの文で尋ねた:デバイスがを送信することが可能であるとき実際の送信が発生します) 。

+0

私が言ったように、キャンセルされたものに対してのみ動作します。 SMSが送信される前にSentというステータスを返します。それが私が求めている理由です。 –

+0

これは、 'MessageComposeResultSent'は、メッセージが正常に*キューに入れられたか、送信されたことを意味します。 – albertamg

+0

デバイスが送信できるかどうかを確認するにはどうすればよいですか? –

1

残念ながら、少なくともセルネットワークの中断は考慮していません。たとえば、飛行機モードの場合、代理人はMessageComposeResultSentを受信します。

私はthisのレーダーを提出しました。それを複製すると、早急に解決される可能性があります。

+0

ありがとうございました!あなたが解決策を見つけたら、私に知らせてください。 –

+0

現在、私は額面価格でMessageComposeResultを使用しており、ネットワークの可用性をチェックしていません。 – JoePasq

関連する問題