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

  • 0
    いいね
  • 0
    コメント
    この記事は最終更新日から1年以上が経過しています。

    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
    

    ざっとこんな感じです。