背景
現在、iPhoneとIntel EdisonをBluetoothで連携させたプロダクトを開発しているのですが、iOS側はCoreBluetoothってのを使って実装してます。(ちなみに、iOS側がCentralでEdison側がPeripheral)
その途中で、さっきまで検出できていたServiceが、ある時から検出されなくなってしまいました。iOS側とEdison側それぞれ色々コードを書き換えて試したのですがどうにもなりませんでした。しかし、あるたった一つのことで解決したので、それを今回はご紹介します。
解決法
iPhoneのBluetoothを一度Offにしてから、Onに戻す!!!
これだけ!!私の場合、本当にこれだけで直りました。(いままでの苦労はなんだったんだ...)
なんでも、開発途中でPeripheral側で内容を変更すると、iPhoneのBluetoothをOff/Onしないと変更が反映されないということがあるそうです。なので、Serviceが検出できない時以外も、一度これを試してみる価値はあると思います。
こちらの記事を参考にしました。これのトラブル3です。詳細はこちらをご覧ください。(http://d.hatena.ne.jp/shu223/20141202/1417480457)
まとめ
もうどうにも直らない!!嫌だ!!と思ってた時に、参考記事を見つけた時は神が舞い降りてきたと思いました。BugFix出来た感動と、この筆者の方への感謝と、同じ目にあった人を助けられればという気持ちで、この記事を投稿してみました。
余談ですが...初めてハードウェア開発と並行でそれに連携したiOSアプリの開発を行っております。(※ハードウェアの方は私が開発してるわけではありません)
アプリだけでは出来ないことが出来るようになるという当たり前の事実に気づき、なんだか視野が広がっている気がします。
完成まで頑張ろうと思います。