iOSiOSでBLEを利用するアプリを開発していると、「スキャンで見つからない」「つながらない」といった場面はよく出てきますし、相手が新規開発デバイスだとそっちを疑いたくなることもあるわけですが、けっこうiOS側での「あるある」な実装ミスや勘違いというのが多くあります。そんなよくあるトラブル、その解決のためのチェックポイント等をまとめました。(本題に入る前に・・・)このトラブルシューティング集は、下記書籍の執筆にあたりまとめていたものです。ここに書いてある分量の2倍ぐらい*1のトラブル&対策について書いてあります。いうニッチな内容で480ページ!下記に紹介記事があります。なってない、という可能性があります。この実装ミスは、再試行ではうまくいくだけに、「何かハードか電波の調子悪いのかなー」ぐらいに思い過ごしがちなので要注意です。1発でバシッと繋がるようになるのはユーザー体験の改善効果としても大きいと思うし、修正も簡単なので、ぜひ今一度ご確認を。スキャン時に発見できないことになります。渡してみるとそのペリフェラルが見つかるようになる、といった場合はこのケースに当てはまっている可能性があります。プロパティなり配列に格納するなりして参照を保持しないと解放されてしまう可能性がある、という点です。オブジェクトは、必要であれば(接続したりするのであれば)きちんとその参照を保持する必要があります。コールしても失敗するとか、デリゲートメソッドが呼ばれない、といった事態を引き起こします。これで見つかるようなら、渡してるUUIDが間違っている、と考えられます。食い違いを疑うetc...と、無駄なデバッグ作業をしてしまいかねません。変更を反映することはできるのですが、正しい解決方法をAppleの中の人に聞いてきたので、下記記事を併せてご参照ください。GATTの当該キャラクタリスティックのプロパティ設定と合ってないとエラーになります。なっていると失敗します。第1引数にスキャン対象とするサービスを1つ以上渡す必要があります。待ってみるフォアグラウンドのときと比べ、バックグラウンドでのスキャンは間隔が長くなります。Appleのドキュメントでは具体的な数値を発見できなかったのですが、わふうさんの記事によると12分に1回とか。http://reinforce-lab.github.io/blog/2013/09/19/blebook-ch3-corebluetooth/おわりに以上、日々の開発の中で書きためていたトラブルシューティングでした。他にもあれば追記していきます。(22)月別アーカイブリンクWishlist検索はてなブログをはじめよう!shu223さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。