web-dev-qa-db-ja.com

iOSシミュレーターからメールを送信する方法

IPhoneシミュレーターからメールを送信できるかどうか知りたい。以下のようにiphoneを介してメールを送信するためのチュートリアルを見てきました。

http://www.edumobile.org/iphone/iphone-programming-tutorials/compose-mail-application-in-iphone/

テストするには、実際のデバイスが必要ですか? iPhoneシミュレータでメールを送信したい場合はどうすればよいですか?

30
nehal

mailComposeController:didFinishWithResult:error:で返されるMFMailComposeResultが正しいことをiOSに依存する必要があります。シミュレータはその結果を偽ります。 MFMailComposeResultSentと表示されていても、実際のメールは送信されません。

上記のチュートリアルでは重要な点が欠けていますMFMailComposeViewControllerを使用する前に最初に行うべきことは、[MFMailComposeViewController canSendMail]を確認することです。ユーザーがデバイスでメールを設定していない場合は、NOが返されます。 3.0より前のiOSバージョンをサポートする必要がある場合、正しい方法は、クラスMFMailComposeViewControllerが存在するかどうかを確認することです。

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

ただし、canSendMail-issueは実際のデバイスでのみテストできます。 canSendMailをチェックせず、ユーザーにメールアカウントが設定されていない場合はクラッシュします。

32
Felix

Appleフォーラム に関するディスカッション)のとおり、デバイスが本当に必要な機能をテストするために、シミュレータはこの機能をサポートしていません。

議論の一部:

sptrakesh Chicago Re:IOS SIMULATOR

メールアプリ2012年3月26日7:09 AM(davemac75への返信)

メールアプリケーションは、シミュレータでは使用できません。その部分をテストするには、デバイスでアプリケーションをテストする必要があります。

4
NeverHopeless

はい、実際にメールを送信したい場合は必要です。

ほとんどの場合、メールはAppleアプリによって送信されるため、心配する必要はありません。したがって、アプリが応答していてメールを起動することを確認するだけで済みます。 composer。問題があると思う唯一のことは、添付ファイルと画像が適切に送信されていることを確認したい場合です。この場合、iphoneを使って誰かにベータ版を送信し、確認してもらうことができます。

重要デバイスの開発は批判的です。シミュレータはデバイスとまったく同じようには動作しません。彼は寛容であり、私の経験では、私は常にシミュレーターではなかったデバイスで問題を抱えていました。

4
shannoga

シミュレーターでMessageUIフレームワークを使用してメッセージを作成および「送信」することができますが、実際にメッセージを送信する方法があるとは思いません。ただし、ユーザーがメッセージ作成ビューの[送信]ボタンをクリックすると、コードはメッセージを送信する役割を持ちません。したがって、シミュレーターは、アプリを開発してテストできるほど十分に機能します。

実際のデバイスが必要かどうかについては、いつでも1つ以上のデバイスでテストする必要があると思います。シミュレーターは優れたツールですが、ある時点でアプリを実際に実行する代わりにはなりません。

1
Caleb