トリッキーな問題があります。私のアプリの1つで、ダウンロード数が150.000を超えています...めったに発生せず、理解できないような問題があります。
問題は次のとおりです。ユーザーが電子メールでリストを共有できるビューで、MFMailComposeViewController
を使用してメールウィンドウを開きます。ただし、メールコンポーザーを使用するとアプリで問題が発生する場合があります。ユーザーが共有ボタンを押すと、メールウィンドウが上にスライドし、約1〜2秒待ってから、再び閉じます。メールウィンドウにデータを送信しますが、メールウィンドウにコンテンツがありません。私自身、どのデバイスでもシミュレーターでも問題を再現することはできませんでしたが、ある同僚は再現できました。私は彼の電話でXCodeを使用してアプリを実行し、ログに次の情報を取得しました。
2013-03-01 14:43:39.604 appname[318:907] <MFMailComposeRemoteViewController: 0x1ebfb100> timed out waiting for fence barrier from com.Apple.MailCompositionService
2013-03-01 14:43:39.631 appname[318:907] viewServiceDidTerminateWithError: Error Domain=XPCObjectsErrorDomain Code=2 "The operation couldn’t be completed. (XPCObjectsErrorDomain error 2.)"
「com.Apple.MailCompositionServiceからのフェンスバリアの待機中にタイムアウトしました」というエラーをグーグルで検索しましたが、実際には何の助けも見つかりません。
誰かがこれについて何か経験がありますか?どうすれば解決できますか?
ビューを開くための私のコード:
-(void)displayComposerSheetWithBodyString:(NSString *)aBody
{
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc]init];
picker.mailComposeDelegate = self;
[picker setSubject:@"Lista"];
NSString *emailBody = aBody;
[picker setMessageBody:emailBody isHTML:NO];
[self.navigationController presentModalViewController:picker animated:YES];
}
else
{
[[[UIAlertView alloc]initWithTitle:NSLocalizedString(@"Din enhet är inte redo att skicka e-post. Kontrollera dina inställningar", nil)
message:nil
delegate:self
cancelButtonTitle:NSLocalizedString(@"OK", nil)
otherButtonTitles:nil]
show];
}
}
問題が修正されたかどうかはわかりませんが、最近私のプロジェクトで遭遇しました。
私が行った回避策は、MFMailComposeViewControllerを初期段階で割り当てて開始し、1つの静的変数に保持する、必要なときはいつでも、静的MFMailComposeViewControllerインスタンスを取得して提示することでした。
それは私のために働いているようです、それがあなたのためにも働くことを願っています。
aにも同じ問題があり、この修正は私を助けました:
https://Twitter.com/christian_beer/statuses/32129553307756544
「@nathangaskinまあ…それはずっと前のことです:)しかし、正しく覚えていれば、UIAppearanceコードからカスタムフォントを削除した後でも機能しました」
それは私にとってはうまくいきます。
また、2番目のオプションは、表示されている呼び出しを単純にラップすることです。
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
ブロック
私はまったく同じ問題を抱えています。メッセージ本文の文字列を作成するのにかかる時間まで、それを突き止めたと思います。
コメントの内容
//Message Body
NSString *msgBody = [NSString stringWithFormat:
@"I noticed these results in pocketKPI. The %@ was at %@ which is a variance of %@(or %@) to the target defined as %@. When you have some time let's discuss.",
self.itemToView.kpiName,
[DFSKpiFormatter formatNumberAsString:self.itemToView.currentValue], [self.itemToView determineVarianceLabelText],
[self.itemToView determineVariancePercentLabelText],
[DFSKpiFormatter formatNumberAsString:self.itemToView.targetValue]];