itok's Lab

昔の開発ネタを記録として残してます

対応アプリの一覧を取得する

例えば、"http://" とかメールの "mailto:"、 RSSの "feed://" とかを受け取ってくれるアプリを探す。いわゆるデフォルトアプリの設定をおこなったりするものですね。

CFArrayRef LSCopyApplicationURLsForURL(CFURLRef inURL, LSRolesMask inRoleMask)

inURL には開きたいファイルの URL を渡して、inRoleMask はその役割ってことですがとりあえずはkLSRolesAll で十分かと。返り値は対応アプリの URL リスト。inURL に関して、例えば feed 全般なら "feed://xxx" なんかでも大丈夫らしいです。なので、実際の使い方としてはこんな感じ

CFArrayRef arr = LSCopyApplicationURLsForURL(
    (CFURLRef)[NSURL URLWithString:@"feed://xxx"],
    kLSRolesAll);