gpt4 book ai didi

macos - 使用 PubSub 获取 Gmail 未读邮件计数

转载 作者:行者123 更新时间:2023-12-03 16:59:01 26 4
gpt4 key购买 nike

我正在尝试使用 Cocoa (Mac) 和 PubSub 框架获取 Gmail 未读电子邮件计数。我已经看到一两个链接显示使用 PubSub 和 Gmail,这是到目前为止我的代码。

PSClient *client = [PSClient applicationClient];
NSURL *url = [NSURL URLWithString:@"https://mail.google.com/mail/feed/atom/inbox"];
PSFeed *feed = [client addFeedWithURL:url];

[feed setLogin: @"myemailhere"];
[feed setPassword: @"mypasswordhere"];

NSLog(@"Error: %@", feed.lastError);

有人知道如何获取未读计数吗?

谢谢:)

最佳答案

您有两个问题:一个有解决方案,另一个似乎是一个永恒的问题。

第一个:提要刷新异步发生。因此,您需要监听 PSFeedRefreshingNotification 和 PSFeedEntriesChangedNotification 通知,以查看 feed 何时刷新和更新。通知的对象将是相关的 PSFeed。

举个例子:

-(void)feedRefreshing:(NSNotification*)n
{
PSFeed *f = [n object];
NSLog(@"Is Refreshing: %@", [f isRefreshing] ? @"Yes" : @"No");
NSLog(@"Feed: %@", f);
NSLog(@"XML: %@", [f XMLRepresentation]);
NSLog(@"Last Error: %@", [f lastError]);


if(![f isRefreshing])
{
NSInteger emailCount = 0;
NSEnumerator *e = [f entryEnumeratorSortedBy:nil];
id entry = nil;

while(entry = [e nextObject])
{
emailCount++;
NSLog(@"Entry: %@", entry);
}
NSLog(@"Email Count: %ld", emailCount);
}
}

-(void)feedUpdated:(NSNotification*)n
{
NSLog(@"Updated");
}

-(void)pubSubTest
{
PSClient *client = [PSClient applicationClient];
NSURL *url = [NSURL URLWithString:@"https://mail.google.com/mail/feed/atom/inbox"];
PSFeed *feed = [client addFeedWithURL:url];

[feed setLogin: @"correctUserName@gmail.com"];
[feed setPassword: @"correctPassword"];
NSError *error = nil;

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(feedUpdated:) name:PSFeedEntriesChangedNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(feedRefreshing:) name:PSFeedRefreshingNotification object:nil];

[feed refresh:&error];
if(error)
NSLog(@"Error: %@", error);
}

第二个(也是更糟糕的)问题是 PubSub 无法正确处理经过身份验证的提要。我在http://www.dizzey.com/development/fetching-emails-from-gmail-using-cocoa/看到了这个我在自己的系统上重现了相同的行为。我不知道这个错误是否是 10.7 特有的,或者是否影响以前版本的 OS X。

“解决方法”是使用 NSURLConnection 对原始提要 XML 执行经过身份验证的检索。然后,您可以使用其 initWithData:URL: 方法将其插入 PSFeed 中。这样做的一个非常严重的缺点是你实际上不再是 PubSubing 了。您必须运行计时器并在适当的时候手动刷新提要。

我能做的最好的事情就是提交一个错误:rdar://problem/10475065(OpenRadar:1430409)。

您可能应该提交重复的错误,以尝试增加 Apple 修复该错误的机会。

祝你好运。

关于macos - 使用 PubSub 获取 Gmail 未读邮件计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8107624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com