Objective c mcoimapidle操作问题
我是IOS开发的新手,我正在使用MailCore2API制作一个应用程序。 公司已经告诉我使用MCOIMApIdleOperation从Gmail服务器获取电子邮件。 我一直在谷歌上寻找解决方案,但这并不值得。 下面是有关问题的详细信息, 首先,我想通过MCOIMAPIdleOperation从收件箱文件夹加载电子邮件。下面是我获取电子邮件的代码Objective c mcoimapidle操作问题,objective-c,ios7,mailcore2,Objective C,Ios7,Mailcore2,我是IOS开发的新手,我正在使用MailCore2API制作一个应用程序。 公司已经告诉我使用MCOIMApIdleOperation从Gmail服务器获取电子邮件。 我一直在谷歌上寻找解决方案,但这并不值得。 下面是有关问题的详细信息, 首先,我想通过MCOIMAPIdleOperation从收件箱文件夹加载电子邮件。下面是我获取电子邮件的代码 - (void)viewDidLoad{ [super viewDidLoad]; //Do any additional setup after l
- (void)viewDidLoad{
[super viewDidLoad];
//Do any additional setup after loading the view from its nib.
//Made connection with Gmail Imap Server
NSUserDefaults *defaules = [NSUserDefaults standardUserDefaults];
NSString *emailid = [defaules objectForKey:@"emailid" ];
NSString *password = [defaules objectForKey:@"password" ];
session = [[MCOIMAPSession alloc] init];
session.hostname = @"imap.gmail.com";
session.port = 993;
session.username = emailid;
session.password = password;
session.connectionType = MCOConnectionTypeTLS;
idle=[session idleOperationWithFolder:@"INBOX" lastKnownUID:0];
[idle start:^(NSError *err){
MCOIMAPMessagesRequestKind requestKind = (MCOIMAPMessagesRequestKind)
(MCOIMAPMessagesRequestKindHeaders | MCOIMAPMessagesRequestKindStructure |MCOIMAPMessagesRequestKindInternalDate | MCOIMAPMessagesRequestKindHeaderSubject |MCOIMAPMessagesRequestKindFlags);
MCOIMAPFolderInfoOperation *inboxFolderInfo = [session folderInfoOperation:Folder];
NSLog(@"statrt1");
[inboxFolderInfo start:^(NSError *error, MCOIMAPFolderInfo *info)
{
NSLog(@"start2");
BOOL totalNumberOfMessagesDidChange =
self.totalNumberOfInboxMessages != [info messageCount];
self.totalNumberOfInboxMessages = [info messageCount];
NSUInteger numberOfMessagesToLoad =MIN(self.totalNumberOfInboxMessages, nMessages);
if (numberOfMessagesToLoad == 0)
{
self.isLoading = NO;
return;
}
// If total number of messages did not change since last fetch,
// assume nothing was deleted since our last fetch and just
// fetch what we don't have
MCORange fetchRange;
if (!totalNumberOfMessagesDidChange && msgbody.count)
{
numberOfMessagesToLoad -= msgbody.count;
fetchRange = MCORangeMake(self.totalNumberOfInboxMessages -msgbody.count -(numberOfMessagesToLoad - 1),(numberOfMessagesToLoad - 1));
}
// Else just fetch the last N messages
else
{
fetchRange =MCORangeMake(self.totalNumberOfInboxMessages -(numberOfMessagesToLoad - 1),(numberOfMessagesToLoad - 1));
}
MCOIMAPFetchMessagesOperation *imapMessagesFetchOp =[session fetchMessagesByNumberOperationWithFolder:Folder requestKind:requestKind numbers:
[MCOIndexSet indexSetWithRange:fetchRange]];
[imapMessagesFetchOp start:^(NSError *error, NSArray *messages, MCOIndexSet *vanishedMessages)
{
NSSortDescriptor *sort =[NSSortDescriptor sortDescriptorWithKey:@"header.date" ascending:NO];
NSMutableArray *combinedMessages = [NSMutableArray arrayWithArray:messages];
[combinedMessages removeAllObjects];
[combinedMessages addObjectsFromArray:messages];
msgbody=[combinedMessages sortedArrayUsingDescriptors:@[sort]];
[uitable reloadData];
}];
}];
}];
}
通过上述代码,邮件被成功提取。问题是当新邮件到达时,上述代码不再运行。如何才能在新邮件到达时获取新邮件。。
请帮助我解决此问题。您需要创建一个新的空闲操作,并在提取完电子邮件后启动它。感谢您的回复,我应该将哪个id传递给空闲方法,例如:-idle=[会话idleOperationWithFolder:@“收件箱”lastKnownUID:last id];您最近获取的邮件的UID。