もふもふ技術部

IT技術系mofmofメディア

JINS MEMEでリアルタイムにセンサーの値を取得してログに表示してみる

meme-main このあたりを参考にやっていきます。

http://qiita.com/nisshiee/items/9ec409a35f4137e2a32e http://qiita.com/you_matz/items/4f0f83289cb5f4ee5980

普段通りxcodeでプロジェクトを新規作成しておきます。

まずはMEMEのSDKをダウンロード。

https://developers.jins.com/ja/sdks/ios/

解凍後ディレクトリ内のframework/universal/MEMELib.frameworkをxcode上でドラッグ&ドロップしてプロジェクトに追加します。

Embedded BinariesにもMEMELib.frameworkを追加。 こんな感じになっていればOKかな?

meme1

JINS MEMEはBluetooth LEiOSアプリと接続するので、BLEを有効にする必要あり。Capabilities > Background ModesをONにして、Use Bluetooth LE accessory にチェックする。

meme2

Bridginging Headerファイルを作成するため、ファイル名をdummyとかにしてObj-Cのダミーファイルを作成する。「Bridginging Header作る?」って聞かれるのでcreateうんたらを選択する。

作成されたdummy.mファイルはいらない子なので削除し、もう一方の〜Bridging-Header.hファイルに以下を記述する。

#import <MEMELib/MEMELib.h>

ちなみにBridginging Headerとは、swiftプロジェクト内でObjective-Cのソースを使うためのおまじないという理解でいいのかな。

公式サイトから作成するアプリの認証コードを取得する。画面上で新しいアプリを作成するとコードが発行される。

https://developers.jins.com/ja/apps/create/

AppDelegate.swiftにキー情報を実装。

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        MEMELib.setAppClientId("<applicationId>", clientSecret: "<secret>")
        return true
    }

ViewController.swift

import UIKit

class ViewController: UIViewController, MEMELibDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        MEMELib.sharedInstance().delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func memeAppAuthorized(status: MEMEStatus) {
        MEMELib.sharedInstance().startScanningPeripherals()
    }

    func memePeripheralFound(peripheral: CBPeripheral!, withDeviceAddress address: String!) {
        MEMELib.sharedInstance().connectPeripheral(peripheral)
    }

    func memePeripheralConnected(peripheral: CBPeripheral!) {
        let status = MEMELib.sharedInstance().startDataReport()
        print(status)
    }

    func memeRealTimeModeDataReceived(data: MEMERealTimeData!) {
        print(data.description)
    }
}

JINS MEMEの公式アプリで、MEMEとiOS端末を接続した上で、アプリを起動する。下記のようにコンソールにログが出力されれば成功!

できた!! meme3

シミュレータではエラーになる

MEME Error: CoreBluetooth not correctly initialized !

シミュレータはBluetoothが使えないので、上記のようなエラーメッセージが出力されます。実機でテストしましょう。