LeopardのPubSubフレームワーク

Leopardで追加された新しいフレームワークPubSub.FrameWorkをようやく触ってみました。気に入ったFeedリーダーがなく、NSXMLDocumentクラスなんかをひねくり回してそれらしきものを作成したこともあったのですが、フィードの多すぎるバージョンに対応した実装は、手間暇がかかるうえ大して面白くもない作業なので中断(挫折)していたんです。このPubSubフレームワークを使えば、フィードの構文解析はお任せして、作り込みたい機能の実装に集中できそう。

ドキュメントを読みながらとりあえずのコードを書いてみました。SafariやMailに登録しているフィードとの連携もできるところがイイです。例えば、Mailに登録しているフィードを取り出すには

PSClient* mc = 
  [PSClient clientForBundleIdentifier:@"com.apple.mail"];
NSArray* feeds = [mc feeds];
PSFeed* feed;

for(feed in feeds)
{
  NSEnumerator* enumerator = 
   [feed entryEnumeratorSortedBy:[NSArray arrayWithObject:[
     [NSSortDescriptor alloc] initWithKey:@"datePublished" ascending:NO]]];

  PSEntry* entry;
  while((entry = [enumerator nextObject]))
    {
      // something todo
    }
}

と、こんな感じで簡単取得できます。PSEntryまで辿りつけば後は、

  • title
  • summary
  • content
  • alternateURL

など、プロパティを通して欲しい情報にアクセスできます。もちろん、MailやSafariと連携しない場合は、

NSURL *url  = [NSURL URLWithString:
  @"http://www.apple.com/main/rss/hotnews/hotnews.rss"];
PSFeed   *feed   = [[PSFeed alloc] initWithURL:url];

とやればいいです。

一度、挫折した経緯があるだけにこれだけ便利そうなフレームワークがあるとなると、またGoogleリーダーとは決別して自作したくなってきましたよ。このところ、面白くもない仕事ばかり続けているのでぜひやろう!

この記事のトラックバックURL:

http://hippos-lab.com/blog/trackback/226

Comments