2011-08-11 90 views
0

可以檢查短信發送狀態嗎?例如檢查短信發送狀態iPhone

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

smsPicker.messageComposeDelegate = self; 

smsPicker.body = @"Body"; 

[self presentModalViewController:smsPicker animated:YES]; 

[smsPicker release]; 

我不知道爲什麼,但委託 - (空)messageComposeViewController:(MFMessageComposeViewController *)控制器didFinishWithResult:(MessageComposeResult)結果;在發送前執行,如果用戶取消了SMS,則工作。

我需要知道,如果短信發送或失敗(例如單元網絡錯誤或錯誤)。感謝您的未來幫助!

回答

1

您可以使用result參數messageComposeViewController:didFinishWithResult:來檢查消息的狀態。它的類型是MessageComposeResult

enum MessageComposeResult { 
    MessageComposeResultCancelled, 
    MessageComposeResultSent, 
    MessageComposeResultFailed 
}; 

記住,MessageComposeResultSent只能被解釋爲信息以供日後發送成功排隊。實際發送將在設備能夠發送時發生。


我如何檢查設備是否能夠發送?

要測試設備是否能夠發送文本消息的,使用MFMessageComposeViewControllercanSendText類方法。根據文檔,您應該始終在嘗試呈現消息撰寫視圖控制器之前調用此方法。

但是,這不會告訴你,如果該設備能夠發送消息現在(如果你問在考慮這樣的說法:當設備能夠發送會發生實際發送) 。

+0

正如我所說,它只適用於取消。它在SMS發送之前返回狀態已發送。這就是我問的原因。 –

+0

這是因爲MessageComposeResultSent表示消息已成功排隊或發送。 – albertamg

+0

如何檢查設備是否能夠發送? –

1

不幸的是,它至少沒有考慮到網絡中斷。例如,在飛行模式下,代表收到MessageComposeResultSent

我已經提交了this的雷達。重複它可能會更快解決問題。

+0

謝謝!如果您能找到解決方案,請通知我。 –

+0

目前我使用面值的MessageComposeResult,並且不對網絡可用性進行任何檢查。 – JoePasq