1

ローカルの Core Data データベースがユーザーの IMAP 電子メール アカウントと同期されているアプリケーションを開発しています。すべての IMAP API 呼び出しを処理するためにMailCore ( http://libmailcore.com ) を使用していますが、いくつかの欠点があるようです。アプリでできるようにしたいことは次のとおりです。

  • サーバーに最新の 50 通の電子メールのローカル コピーを用意する
  • 最後のフェッチ以降にユーザーが受信したすべての新しいメールをダウンロードし、最大 50 件をデバイスに保持します。
  • サーバー上で削除されたローカル電子メールを削除します。

メールを取得するために MailCore が提供する唯一のメソッドは次のとおりです。

- (NSArray *)messagesFromSequenceNumber:(NSUInteger)startNum to:(NSUInteger)endNum withFetchAttributes:(CTFetchAttributes)attrs

- (NSArray *)messagesFromUID:(NSUInteger)startUID to:(NSUInteger)endUID withFetchAttributes:(CTFetchAttributes)attrs

現在、サーバーから最新の電子メールを取得し、それらに関するすべての情報をダウンロードしています。次に、サーバーから最新の 50 個の UID を取得し、それらをローカル キャッシュと比較して、削除されたものを確認しています。これは非常に非効率に思えます。サーバーへの 2 回の往復を行わずに (少なくとも) 受信トレイを同期するより良い方法はありますか?

4

1 に答える 1

0

imap サーバーの機能を確認します。NOOP と imap アイドル機能の実装は、クエリに対する答えです。

于 2013-02-15T10:18:27.953 に答える