Last active
December 15, 2015 03:38
-
-
Save masakih/5195346 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| BathyScaphe Link Preview プラグイン システム ガイド | |
| プラグインのロード | |
| プラグインのロードのタイミング | |
| プラグインはデフォルトではリンクがクリックされるまでそのロードが遅延されます。 | |
| ユーザー/Library/Application Support/BathyScaphe/PlugIns フォルダからのプラグインのロード | |
| 事前検証: | |
| プラグインはそれがロードされる前にシステムによって検証されます。 | |
| まず、-[NSBundle bundleWithURL:]でNSBundleのインスタンスが作成されるかが調べられます。 | |
| NSBundleのインスタンスが作成されたら、bundle identifireを持つかが調べられます。 | |
| 最後にprincipal classが正しく設定されているかが調べられます。 | |
| ここまでが事前検証作業です。 | |
| 事前検証にパスしないプラグインはロードされません。 | |
| ロードと検証: | |
| 事前検証が終了すると、プラグインがロードされます。 | |
| システムはプラグインを登録する前に、ロードされたプラグインがLink Previewプラグインであるかどうかを検証します。 | |
| まず、-[NSBundle principalClass]によってprincipal classのクラスオブジェクトが存在しているかが調べられます。 | |
| 次に、そのクラスがBSLinkPreviewingプロトコル(あるいはBSImagePreviewerProtocolプロトコル ※非推奨)に準拠しているかを調べます。 | |
| 検証にパスしないプラグインはプラグインとして登録されません。 | |
| ロードの通知: | |
| システムは全てのプラグインのロードと使用準備が整うと、-[NSObject awakeByLinkPreviewSelector:]非形式プロトコルメソッドを各プラグインに送ります。 | |
| このメソッドが送られる時点で全てのプラグインは準備されています。 | |
| このメソッドの実装は任意です。 | |
| プラグインの追加: | |
| BSLinkPreviewSelectorはユーザーにプラグインの追加ロードを提供しています。 | |
| システムはユーザーからプラグインの追加の要求を受けると、通常の時と同じように事前検証、ロード、検証を行い、全てがうまくいった時にプラグインを追加登録します。 | |
| 事前検証にパスしたプラグインは<<あのフォルダ>>にコピーされそのコピーがロードされます。 | |
| プラグインの削除: | |
| ユーザーによる、起動状態でのプラグインの削除を提供しています。 | |
| プラグインの削除の要求を受けるとシステムは登録を削除し、プラグイン自体をゴミ箱に移動します。 | |
| この時、プラグインは解放もアンロードもされません。 | |
| 将来のバージョンでは解放やアンロードをサポートするかもしれません。 | |
| 変更の通知: | |
| この時システムは、BSLinkPreviewSelectorDidChangeItemsNotificationの通知を行います。 | |
| BSLinkPreviewSelectorDidChangeItemsNotificationは、いくつかのUser infoを持っています。 | |
| BSLinkPreviewSelectorItemChangeTypeNotificationKey | |
| 変更のタイプが格納されます。変更のタイプは、BSLinkPreviewSelectorRemoveItemType、BSLinkPreviewSelectorAddItemTypeの2種類です。 | |
| BSLinkPreviewSelectorChangedItemNameNotificationKey | |
| 変更のあったプラグインの名前が格納されています。 | |
| BSLinkPreviewSelectorChangedItemIdentifierNotificationKey | |
| 変更のあったプラグインのidentifierが格納されています。 | |
| BSLinkPreviewSelectorChangedItemNotificationKey | |
| 変更のあったプラグイン自身が格納されています。取り扱いに注意してください。 | |
| 環境設定 | |
| 新しいシステムではプラグインの環境設定をシームレスに行えるように設定スペースを提供しています。 | |
| プラグインが-(NSVIew *)preferenceViewメソッドを提供している場合、システムはそのビューを設定スペースに貼付けます。 | |
| 提供されたビューのサイズが設定スペースのサイズを超える場合は自動的にスクロールビューが追加され全てが表示可能にします。 | |
| -preferenceViewメソッドの提供は任意です。 | |
| -preferenceViewメソッドが提供されていない場合は、旧来の-showPreviewerPreferencesメソッドを送信するボタンが付いたデフォルトビューが使用されます。 | |
| 環境設定のアイコン | |
| 普通のアプリケーションのようにCFBundleIconFileにアイコンファイルを指定してあると環境設定にそのアイコンを表示します。 | |
| また、ユーザーがプラグインにカスタムアイコンを設定してある場合はそのアイコンが使用されます。 | |
| プレビュー | |
| 単一リンクのプレビュー: | |
| ユーザからのプレビューを受けるとシステムはまず-validateLink:によってプレビューがリンク先を表示可能かチェックします。 | |
| 表示可能であれば-previewLink:でプレビューを開始します。 | |
| 複数のリンクのプレビュー: | |
| 複数のリンクを選択してプレビューが開始された場合、システムはプラグインがそれを提供していれば-previewLinks:を送信します。 | |
| この時-validateLink:による検証は行われません。 | |
| 表示不可能なリンクが含まれていた時の動作を規定しておいた方が良いでしょう。 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment