2016-07-28 7 views
2

私はXamrinフォーム共有プロジェクト内から電子メールを送信するのにXamarin.Plugins.Messaging NuGetパッケージを使用しようとしていますが、実行中はWarning: Attempt to present X on Y whose view is not in the window hierarchy!になります。何も表示されません。Xamarinフォームプロジェクトで電子メールを送信

セットアップが必要なことはありますか?

private void SendEmail() 
{ 
    var emailMessagner = CrossMessaging.Current.EmailMessenger; 
    if (emailMessagner.CanSendEmail) 
    { 
     Console.WriteLine("Can send mail"); 
     var email = new EmailMessageBuilder() 
      .To("[email protected]") 
      .Subject("Setting subject") 
      .Body("Setting email body") 
      .WithAttachment(_filePath, "text/html") 
      .Build(); 
     emailMessagner.SendEmail(email); 
    } 
    else 
    { 
     Console.WriteLine("Cant send mail"); 
    } 
} 

それは(Permission denied for attachmentを得る以外)のAndroid上で動作しますが、私は、iOS用window not in hierarchyエラーが発生します。 viewControllerがウィンドウ階層内にあることを確認する私自身の電子メール送信者を書くことができましたが、このプラグインがそれを処理すると仮定しました。

+1

完全なエラーの詳細/スタックトレースを投稿できますか?また、メッセージングプラグインのソースコード[こちら](https://github.com/cjlotz/Xamarin.Plugins)を見つけて自分でデバッグすることができます –

+2

実際のデバイスやシミュレータでこれを試していますか?シミュレータは失敗します) – SushiHangover

+0

@SushiHangoverそれは本当のデバイスですね。 – John

答えて

0

私はXamarin Formsアプリケーションで同じ問題が発生していました。私は、PCLプロジェクトでPushModalAsync()をロードしたContentPageからSendEmail()を呼び出していました。私が知る限り、これはモーダルフォームから形や形を決めることはできません。

私の回避策は、呼び出しフォーム(この場合は私のアプリケーションのメインフォーム)にpublic static Queueプロパティを追加し、電子メールを送信する必要があるときにキューに追加しました。その後、私のメインページでOnAppearing()をオーバーライドし、メインフォームが再び表示されるたびに、キュー内のすべての電子メールをループしました。モーダルフォームが閉じられたときに電子メールが送信されることをユーザーに伝えるモーダルフォームにメモを書きます。完璧ではありませんが、機能します。あなたがモーダルフォームのための方法を見つけることができれば、それは素晴らしいでしょう!

マイク

関連する問題