Posted at

他アプリからCharlestonへの放送接続命令

More than 3 years have passed since last update.

CharlestonはNSDistributedNotificationというOS Xの仕組みを使って、他ソフトからの通知により、放送に接続することが出来ます。

以下にその具体的な方法を説明します。


 NSDistibutedNotificationとは?

NSDistributedNotificationとは、NSNotificationサービスのOS間共通版で、この通知センターを使う事で、アプリケーションAからアプリケーションBへ通知を投げることが出来ます。


どうやって使う?

まずは通知に使う定義の一覧です。


CollaborationDefinition.h

//

// NicoLiveAlertCollaboration.h
// NicoLiveAlert
//
// Created by Чайка on 5/20/12.
// Copyright (c) 2012 iom. All rights reserved.
//

#define NLAApplicationName @"NicoLiveAlert"
#define NLABroadcastStartNotification @"NLABroadcastStart"
#define NLABroadcastEndNotification @"NLABroadcastEnd"

/*!
@abstract dictionary keys of NLABroadcastStartNotification
*/

/*!
@define ProgramURL
@abstract program url by NSString object
*/

#define ProgramURL @"ProgramURL"
/*!
@define LiveNumber
@abstract program number (lv....) by NSString object
*/

#define LiveNumber @"LiveNumber"
/*!
@define CommentViewr
@abstract Wish to Open Comment Viewr by BOOL value of NSNumber object
*/

#define CommentViewer @"CommentViewer"
/*!
@define BroadcastStreamer
@abstract Wish to Open Straming program by BOOL value of NSNumber object
ex. Flash Media Live Encoder
*/

#define BroadcastStreamer @"BroadcastStreamer"
/*!
@define BroadcastKind
@abstract tell a kind of this program by described enumlation Number
by NSNumber object
*/

#define BroadCastKind @"BroadCastKind"

typedef NSInteger BroadcastKind;
enum BroadcastKind {
broadcastKindChannel = -1,
broadcastKindUser = 0,
broadcastKindOfficial = 1
};


以下にこの定義を使ってCharlestonを放送番号lvxxxxxxxxへ接続するためのメソッド例を書きます。


sample.m

#import "CollaborationDefinition.h"


- (void) kickCharleston:(NSString *)liveNumber
{
// Charlestonに送る通知内容の辞書を作成
NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
// 辞書に内容を設定
// URLを作成・追加
NSString *url = [@"http://live.nicovideo.jp/watch/" stringByAppendingString:liveNumber];
[userInfo setValue:url forKey:ProgramURL];
// 放送番号を追加
[userInfo setValue:liveNumber forKey: LiveNumber];
// コメントビュワー(Charleston)に接続
[userInfo setValue:[NSNumber numberWithBool:YES] forKey:CommentViewer];
// ストリーミングツールは何もしない
[userInfo setValue:[NSNumber numberWithBool:NO] forKey:BroadcastStreamer];
// 放送の種類(ユーザー放送の場合)
[userInfo setValue:[NSNumber numberWithInteger:broadcastKindUser] forKey:BroadCastKind];

// 上記内容を通知
// 通知センターインスタンスの取得
NSDistributedNotificationCenter *center = [NSDistributedNotificationCenter defaultCenter];
// 通知の発行(放送開始なので、NLABroadcastStartNotification)
[center postNotificationName:NLABroadcastStartNotification object:@"アプリケーション名" userInfo:userInfo];
}// end - (void) kickCharleston:(NSString *)liveNumber


ざっとこんな感じです。