SSReadingList で出来る事
リーディングリスト周りのAPIを使って何が出来るのか調査。
Framework は SafariServices.framework でリーディングリスト周りのクラスは SSReadingList
のみ。
API は以下
イニシャライザ
+ (nullable SSReadingList *)defaultReadingList; - (instancetype)init NS_UNAVAILABLE;
ヘッダには alloc
init
を使わず defaultReadingList
を使えと書いてある。
また、リーディングリストへのアクセスが許可されていない場合は nil が返ってくるとの事。
と言ってもリーディングリストへのプライバシーアクセスのAPIは現状では用意されていないようで、設定や機能制限などいろいろいじってみても返り値が nil になる事はなかった。
クラスメソッド
+ (BOOL)supportsURL:(NSURL *)URL;
引数のURLがリーディングリストでサポートされている(追加可能)かどうか。
インスタンスメソッド
- (BOOL)addReadingListItemWithURL:(NSURL *)URL title:(nullable NSString *)title previewText:(nullable NSString *)previewText error:(NSError **)error NS_AVAILABLE_IOS(7_0);
リーディングリストにURLを追加する。
title と previewText で表示するタイトルとサマリーをカスタマイズ出来る。
もしURLが追加されなかった場合はNOが返ってきて引数のエラーに値が設定される。
エラーのドメインは SSReadingListErrorDomain
でエラーコードは現時点では SSReadingListErrorURLSchemeNotAllowed = 1
の1つのみ。
ヘッダによればサポートするスキームは http:// と https:// のみとの事。
title に @"Title"
previewText に @"PreviewText"
と引数を渡してリーディングリストに登録すると以下のように設定したタイトル、ウェブページのページタイトル、設定したプレビューテキストが表示される。
title と previewText に nil を渡すと以下のようにタイトルにはURLが入り、ウェブページのページタイトルが表示され、プレビューテキストは無しというような表示になる。
いずれの場合も一度リーディングリストからURLを開くと、設定済みのタイトルとプレビューテキストは破棄されて Safari がよしなに値を設定してくれる。
APIは以上。
まとめ
iOS 9の時点で SSReadingList
で出来る事はURLの追加のみ。
リーディングリストの取得編集は不可。残念。
しかしヘッダのコメントの文言から推察するに将来プライバシーアクセス付きでリーディングリストへのアクセスが許可されるかも知れない。(バグレポへの要望次第?)
ちなみに Private API を調べてみたけど SSReadingList
は WebBookmarksXPCConnection
というプライベートクラスを介して動いているらしくSSReadingList
から直接リーディングリストの取得編集はできなかった。