LoginSignup
20
16

More than 5 years have passed since last update.

UnityでMQTTライブラリを使って、Milkcocoaに接続、さらにiPadでも動かす

Last updated at Posted at 2016-01-23

はじめに

UnityにMQTTライブラリを導入して、Milkcocoaに接続します。最後にiPadで動作確認します。

今回使うMQTTライブラリ:https://github.com/vovacooper/Unity3d_MQTT

導入

まず、こちらのURLからzipでプロジェクトごとダウンロードし、解凍します。

スクリーンショット 2016-01-24 2.21.54.png

Import PackageからCustom Packageを選び、ダウンロードしたpackageファイルを選択します。

スクリーンショット 2016-01-24 2.24.33.png

次に、ProjectタブのAssetsの中からMQTTをドラッグして、左上のHierarchy内に持ってきます。このオブジェクトにはMqtt TestというScriptが紐付いているので。Mqtt Test Scriptを編集します。{app-id}のところは、MilkcocoaのAppIDです。自分のAppIDに置き換えてください。Milkcocoaでアカウント登録後、アプリを作るとAppIDが発行されます。

using UnityEngine;
using System.Collections;
using System.Net;
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;
using uPLibrary.Networking.M2Mqtt.Utility;
using uPLibrary.Networking.M2Mqtt.Exceptions;

using System;

public class mqttTest : MonoBehaviour {
    private MqttClient client;
    // Use this for initialization
    void Start () {
        // create client instance 
        client = new MqttClient("{app-id}.mlkcca.com", 1883 , false , null ); 

        // register to message received 
        client.MqttMsgPublishReceived += client_MqttMsgPublishReceived; 

        string clientId = Guid.NewGuid().ToString(); 
        client.Connect(clientId, "sdammy", "{app-id}"); 

        // subscribe to the topic "/home/temperature" with QoS 2 
        client.Subscribe(new string[] { "{app-id}/unity/send" }, new byte[] { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE }); 

    }
    void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) 
    { 

        Debug.Log("Received from Milkcocoa: " + System.Text.Encoding.UTF8.GetString(e.Message)  );
    } 

    void OnGUI(){
        if ( GUI.Button (new Rect (20,40,100,30), "Hello")) {
            Debug.Log("sending...");
            client.Publish("{app-id}/unity/send", System.Text.Encoding.UTF8.GetBytes("{\"message\":\"Hello\"}"), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false);
            Debug.Log("sent to Milkcocoa");
        }
    }
    // Update is called once per frame
    void Update () {

    }
}

動作確認

とりあえずUnity内のテスト実行で動くことを確認します。

スクリーンショット 2016-01-24 2.21.03.png

iOSでも動作確認

この後、iOSにビルドしても動くことを確認しました。
ちょっと手間取ったのが、この問題。記事通りxcodeでBuild SettingsのENABLE_BITCODEを"NO"にするとビルドできました。プロジェクトをCleanするのも忘れずに。

1355.jpg

20
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
16