その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

openFrameworksのofxOscアドオンでiOS/Macアプリ間連携を行うメモ

openFrameworks で OSC (Open Sound Control) を使うためのアドオン、ofxOsc を使用してアプリ間連携を行う方法のメモ。

送信側の実装

ホストアドレスとポートの定義

ローカルにあるアプリ同士連携させる場合はlocalhostでOK。

#define HOST "localhost"
#define PORT 12345


ネットワーク上にあるアプリ同士であれば、IPアドレスを指定する。

#define HOST "192.168.x.x"
#define PORT 8000
メンバ変数
ofxOscSender sender;
セットアップ
sender.setup( HOST, PORT );
メッセージ送信
ofxOscMessage m;
m.setAddress( "/mouse/button" );
m.addStringArg( "down" );
sender.sendMessage( m );

受信側の実装

ポートの定義

送信側の定義と合わせる

#define PORT 12345
メンバ変数
ofxOscReceiver receiver;
セットアップ
receiver.setup(PORT);
メッセージ受信
while(receiver.hasWaitingMessages()) {

    ofxOscMessage m;
    receiver.getNextMessage(&m);

    if(m.getAddress() == "/mouse/button"){
        mouseButtonState = m.getArgAsString(0);
    }
}

サンプルを試す

oFに付属しているサンプルを使用してみる。ごちゃごちゃ書いてるけど、要は Sender側にReceiver側のIPアドレスを定義するだけ。

Macアプリ同士

localhostでうまく通信できた。

iOSアプリ(Sender)、Macアプリ(Receiver)
  • Sender(iOS)側でMacのIPアドレスとポート8000指定
  • Receiver(Mac)側でポート8000指定
Macアプリ(Sender)、iOSアプリ(Receiver)
  • iOSデバイス(iPhone)の設定アプリから、 [Wi-Fi] -> iボタンタップでIPアドレス確認
  • Sender(Mac)側でiOSデバイスのIPアドレスとポート8000指定
  • Receiver(iOS)側でポート8000指定
iOSアプリ同士
  • Receiver側のiOSデバイス(iPhone)の設定アプリから、 [Wi-Fi] -> iボタンタップでIPアドレス確認
  • Sender(iOS)側でiOSデバイスのIPアドレスとポート8000指定
  • Receiver(iOS)側でポート8000指定


(oscSenderExample)


(oscReceiverExample)