NicoLiveAlertとの連携

NicoLiveAlert 0.8以降は、ニコニコ生放送の関連アプリケーションと連携して動くために、
通知センター経由で情報を通知する様になりました。
本ドキュメントでNicoLiveAlertからどうやって通知を受け取り、受け取った通知がどの様に使えるかの説明をしていきます。

事前準備

ヘッダーファイル

本ドキュメントの末尾に、通知を受け取るための定義ファイルが添付されていますので、

#import "NicoLiveAlertCollaboration.h"

として、ヘッダーファイルを読み込んでください。

通知センターへの登録

NicoLiveAlertからの通知はNSDistributedNotificationCenterを使って通知されます。
なので、アプリケーションの起動時(例えば、applicationWillFinishLaunching:applicationDidFinishLaunching:)に

	// プログラム開始通知を捕捉するメソッドを登録する
[[NSDistributedNotificationCenter defaultCenter] 
	addObserver:self
	   selector:@selector(catchProgramStart:)
	       name:NLABroadcastStartNotification
	     object:NLAApplicationName];
	// プログラム終了通知を捕捉するメソッドを登録する
[[NSDistributedNotificationCenter defaultCenter] 
	addObserver:self
	   selector:@selector(catchProgramEnd:)
	       name:NLABroadcastEndNotification
	     object:NLAApplicationName];

等として、プログラム開始・終了通知を受け取る様にします。プログラム終了の通知を受け取らなくて良い場合は、NLABroadcastEndNotificationを登録しなくても構いません。
上のサンプルコード中のcatchProgramStart:catchProgramEnd:のプロトタイプは、
- (void) メソッド名:( NSNotification)*note;
の様になります。

通知センターから登録解除

同様に、アプリケーション終了時には、通知センターから登録を削除しなければいけません。なので、アプリケーションの終了時(例えば、applicationShouldTerminate:applicationWillTerminate:)に

	// プログラム開始通知を解除する
[[NSDistributedNotificationCenter defaultCenter] 
	removeObserver:self
			  name:NLABroadcastStartNotification
			object:NLAApplicationName];
	// プログラム終了通知を解除する
[[NSDistributedNotificationCenter defaultCenter] 
	removeObserver:self
			  name:NLABroadcastStartNotification
			object:NLAApplicationName];

の様に、通知センターから登録を解除します。これはもちろん、最初に登録したnameに関してのみ行ってください。

通知を受け取った時の振る舞い

通知は、先のプロトタイプのNSNotificationクラスのインスタンスとして渡されます。

通知の中身

通知される情報は、
NSDictionary *info = [note userInfo];
の様にして、NSDictionaryクラスのオブジェクトとして取得します。
各情報は、valueForKey:メソッドにより取り出します。 各Keyとそれにより、取得される値のクラスと意味は以下の通りです。

Key Class 内容
ProgramURL NSString 番組のURL文字列
LiveNumber NSString lv.....だけの文字列、URLそのものは必要無い場合はこちらの方が使い勝手が良いと思います。
CommentViewer NSNumber numberWithBoolで、BOOLを取得してください。
環境設定でコメントビュワーで開く条件を満たしていると、YES,そうで無い場合はNOが入っています。
BroadcastStreamer NSNumber numberWithBoolで、BOOLを取得してください。
自分の放送時に外部配信ツールを起動する必要があると、YES,そうで無い場合はNOが入っています。
BroadCastKind NSNumber numberWithBoolで、NSIntegerを取得してください。値は、
  • bradcastKindUser : 放送はユーザーの放送
  • bradcastKindOfficial : 放送は公式生放送
  • bradcastKindChannel : 放送はニコニコチャンネル
のいずれかが設定されているので、必要時に適宜利用してください。

ヘッダーファイル

ヘッダーファイルはNicoLiveAlertCollaboration.hにあります。
これでほぼ、Fix.だと思いますが、追加リクエストなどで改変されることがあるかも知れないので、その際は、RSSまたは掲示板で確認をお願いします

最後に

以上で、NicoLiveAlertが捕捉したプログラムの開始をアプリケーションが連動して動けるようになると思います。
不足している情報、追加して欲しい情報などがありましたら、サイトトップのメールアドレス、またはコミュニティの掲示板にてリクエストをお願いします。
最後までお付き合いくださり、ありがとうございました。