2014年10月18日土曜日

【iOS8】【homekit】200人の前でラジオボタンが動くだけのデモしました


大人のHomekit from Ken Haneda

今年もあきたらず、勉強会でお話しさせていただきました。

Homekitに関する情報はまだリソースが少なかったり、プロダクトがそもそもなかったりで少ないのが現状ですが、今回いろいろ調べて実装してみました。

コードに関しては後日個人的にシェアーさせていただきます。

とりあえず一部だけシェアーすると、家管理要のクラスは以下のように書きました。
書いたのがxcode6 Beta 4?くらいのころのなので、まだswiftと仲良く慣れてないコードです。

ご指摘いただけるとありがたいです!!宜しくお願いいたします。



        
import UIKit
import HomeKit

class MyHomeManager: HMHomeManager, HMHomeManagerDelegate{
    var isEnable:Bool = false
    class var sharedInstance : MyHomeManager! {
        struct Static {
            static var onceToken : dispatch_once_t = 0
            static var instance : MyHomeManager? = nil
        }
        dispatch_once(&Static.onceToken) {
            Static.instance = MyHomeManager()
        }
        return Static.instance!
    }
    
    override init()
    {
        super.init()
        self.delegate = self
    }
    
    func addPrimaruHome(name:String!)
    {
        SVProgressHUD.show()
        self.addHomeWithName(name,
            completionHandler: { (home:HMHome!,err:NSError!)->Void in
                if((err) != nil)
                {
                    println("Failed to build home \(err)")
                    // is not supported
                    if(err.code == 47)
                    {
                        
                    }
                }else{
                    println("add home")
                }
            }
        )
    }
    
    func destroyAllHome()
    {
        var homes:[HMHome] = self.homes as [HMHome]
        NSLog("delete target home:%d", homes.count)
        for home:HMHome in homes
        {
            self.removeHome(home,
                completionHandler: {(err:NSError!) -> Void in
                    if(err == nil)
                    {
                        println("remove home err")
                    }
            })
        }
    }
    
    // - homekit manager delegate
    func homeManager(manager: HMHomeManager!, didAddHome home: HMHome!)
    {
    }
    
    func homeManager(manager: HMHomeManager!, didRemoveHome home: HMHome!)
    {
    }
    
    // homeeは10件まで
    // アプリケーション内のhomeが装填される
    func homeManagerDidUpdateHomes(manager: HMHomeManager!)
    {
        self.successSetHome()
    }
    
    func homeManagerDidUpdatePrimaryHome(manager: HMHomeManager!)
    {
        self.successSetHome()
    }
    
    func successSetHome()
    {
        if(self.homes.count > 0){
            self.isEnable = true
            NSLog("Set primary home is %@", self.primaryHome.name)
        }
        var notif:NSNotification = NSNotification(name: NOTIF_MYHOME_UPDATE, object: nil)
        NSNotificationCenter.defaultCenter().postNotification(notif)
        SVProgressHUD.dismiss()
    }
}



発表で使ったシンプルなsimulaterは以下で落とせます。
アップルの落とすとこ

本当はライトをチカチカさせたり音楽流したりできれば良かったんですが、シミュレータがシンプルだったのでラジオボタンが動くだけのデモになりました・・・



是非使ってみてください!

0 件のコメント:

コメントを投稿

ShareThis