Charleston

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

More than 1 year has 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

ざっとこんな感じです。