2011-03-18 313 views

回答

30

你必須依靠iOS 是mailComposeController:didFinishWithResult:error:是正確的。模擬器僞造結果;儘管它說MFMailComposeResultSent沒有發送實際的郵件。

提到的教程錯過一個重要的點:您使用MFMailComposeViewController之前應該做的第一件事就是檢查[MFMailComposeViewController canSendMail]。如果用戶尚未在其設備上配置郵件,則會返回NO。如果你必須支持一個版本的iOS 3.0之前的正確的方法是檢查類MFMailComposeViewController存在:

Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); 
if (mailClass != nil) 
{ 
    if ([mailClass canSendMail]) 
    { 
     [self displayComposerSheet]; 
    } 
    else 
    { 
     [self launchMailAppOnDevice]; 
    } 
} 
else 
{ 
    [self launchMailAppOnDevice]; 
} 

的canSendMail,問題只能是一個真正的設備上進行測試,雖然。如果您不檢查canSendMail並且用戶沒有配置郵件帳戶,它將會崩潰。

+0

對於我的任務,我只需要顯示作曲家。但我無法這樣做。 MFMailComposeViewController * composeVC = [[MFMailComposeViewController alloc] init]; 。這條線彈出警報控制器。 – 2017-12-15 07:53:17

1

您可以使用模擬器上的MessageUI框架撰寫和「發送」郵件,但我不認爲有實際發送郵件的方法。但是,一旦用戶在消息撰寫視圖中點擊了「發送」按鈕,您的代碼在發送消息時就沒有任何作用。所以模擬器做的足夠,你可以開發和測試你的應用程序。至於是否有必要有一個真實的設備,我想說,無論如何,在某個時候你需要測試一個或多個設備。模擬器是一個很好的工具,但是在某個特定點之後,它並不能替代真正的應用程序。

4

是的,如果你想真正發送電子郵件是必要的。

在大多數情況下,您不必擔心郵件將由蘋果應用程序發送,因此您只需驗證您的應用程序是否正在響應並啓動郵件編輯器即可。我認爲唯一有問題的是如果你想確保附件和圖像正確發送。在這種情況下,你可以發送一個測試版給iphone的人,並要求他爲你檢查。

重要 有一個設備是批評開發,您的模擬器並不像設備一樣運行。他是一個原諒者,根據我的經驗,我總是遇到與模擬器不同的設備問題。

+0

對於我的任務,我只需要顯示作曲家。但我無法這樣做。 MFMailComposeViewController * composeVC = [[MFMailComposeViewController alloc] init]; 。這條線彈出警報控制器 – 2017-12-15 07:53:31

3

根據discussion on apple forum,爲了測試我們真正需要設備的功能,模擬器不支持此功能。

從討論的一部分:

sptrakesh 芝加哥重新:IOS SIMULATOR

MAIL APP 2012年3月26日上午07點09分(響應於davemac75)

的郵件應用程序是在模擬器上不可用。您將需要 在設備上測試您的應用程序以測試該部分。