問題タブ [cbcentralmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - iOS Core Bluetooth (LE): 異なるビューを処理するとアプリがクラッシュする
2 つのビューがあります。検出されたすべてのデバイスが表示される中央の TableView と、ユーザーが検出されたデバイスの 1 つに接続することを選択したときに読み込まれる detailView です。
次の時点まで機能します。
- デバイスの検出
- デバイスに接続
- サービス、特性を読み取り、それらを購読する
- char の値が正常に読み取られ、detailView に表示されています。
「戻る」ボタンを介してdetailViewから戻ると、コールバック関数
}
呼び出されますが、その後 EXC_BAD_ACCESS で終了します。私の DiscoverDevices() 関数は次のとおりです。
「centralManager.scanForPeripheralsWithServices(nil, options: nil)」にエラーがあるようですが、コールバック後のみです。最初からすべて問題ありません。どこかにデリゲートを設定する必要がありますか? 「EXC_BAD_ACCESS」エラーで何もわかりません。
centralManager を再初期化する必要がありますか? 再起動する必要がありますか?
事前に助けてくれてありがとう。
よろしく、 スティービル
ios - iOS からのバックグラウンドでの Bluetooth LE デバイスのスキャン
バックグラウンド モードで BLE をスキャンする作業を行っています。
バックグラウンド スキャンで問題が発生しない。フォアグラウンドモードで非常にうまく機能します。
以下は、いくつかのコード行です。
ここではサービスとして nil を渡しています。
Xcode の Devices セクションでログを受け取ります。しかし、アプリケーションではありません。
ios - 同じ BLE デバイスを 2 回スキャンするにはどうすればよいですか?
私は BLE 周辺機器をスキャンする iOS アプリを持っていますが、その多くが存在する可能性があり、ユーザーがデバイスに接続するかどうかを決定できるようにします。接続すると、ユーザーは接続を切断することもできます。これはすべて正常に機能します。
ユーザーが気が変わってデバイスを再スキャンできるようにするオプションも追加したいと思いますが、これには問題があるようです。これを行う最も明白な方法は、次のようにスキャンを停止して再起動することです。
これは動作しません。
最終的に、iOS はデバイスが再度アドバタイズしていることをアプリに通知することを決定しますが、これには数分かかります。
数分待たずに iOS が周辺機器についてもう一度教えてくれるようにするにはどうすればよいですか?
ios - CBPeripheral、ローカル ペリフェラル識別子を取得
CoreBluetooth Framework に関する問題に直面しました。
例として、2 つのデバイスがあり、各デバイスが広告とスキャンの両方を実行します。だから、私はそれぞれにCBCentralManager
andを使いCBPeripheralManager
ます。
したがって、問題を単純化するために、Device1がブロードキャストを行い、 Device2がスキャンを行っていると仮定しましょう。
Device2CBCentralManager
でDevice1を検出すると、コールバック
centralManager:didDiscoverPeripheral:advertisementData:RSSI:
が呼び出され、 を呼び出してDevice1識別子を取得できます[peripheral.identifier UUIDString]
。
ローカル デバイス ( Device2 ) 識別子を取得するにはどうすればよいですか? 両方のデバイスがアドバタイズしている場合、Device1もDevice2を検出して周辺機器の識別子を取得しますが、 Device2でこの識別子 (ある種の自己アドレス) を正確に取得するにはどうすればよいですか?
PS この識別子はデバイスごとに一意ではなく、時間の経過とともに変化する可能性があることを知っていますが、それは問題ではありません。
ios - Peripheral(iOS Core Bluetooth)に特徴的な中央書き込み
さて、私は何千ものチュートリアルと他のスタック オーバーフロー スレッドを調べました (したがって、質問に答えずに重複としてリストしないでください)、この機能の使用方法を理解できません。
私はこのチュートリアルに従いました: http://code.tutsplus.com/tutorials/ios-7-sdk-core-bluetooth-practical-lesson--mobile-20741
セントラルがペリフェラルに接続し、そこから特性を読み取ることができるシステムがあります。
私は今、セントラルに特性内のデータを書き換えさせようとしていますが、呼び出した書き込み行が無視されていることがわかりました。
私は自分の周辺クラス内で自分の特性を次のように宣言しました。
そして、私のcentralManagerで私は呼び出しました
しかし、その行は無視されます。誰かが間違っているかもしれないことについて私に話すことができますか? 周辺機器クラスにメソッドを追加する必要がありますか?
また、WithResponse を実行してみましたが、周辺機器からそのメソッドを呼び出すことさえありません。
ios - iOS で Bluetooth LE サービス アドバタイズメントを検出できない
2 つの iOS アプリを作成しました。1 つはサービスをアドバタイズする Bluetooth LE ペリフェラル、もう 1 つはアドバタイズされたサービスをスキャンする Bluetooth LE セントラルです。ペリフェラルは iPhone5s で実行され、セントラルは iPad Mini で実行されます。最初に、特定の宣伝されたサービスをスキャンするようにセントラルを設定しましたが、後で任意のサービスをリッスンするように変更しました。どちらの場合でも、中心として機能する iPad Mini アプリは、宣伝されているサービスをまったく検出しません。周辺機器マネージャーをアドバタイズするようにセットアップする方法に問題があるのか、中央マネージャーをスキャンするようにセットアップする方法に問題があるのか 、それともデバイス構成の問題なのかはわかりません。これを機能させるために実行できる提案またはテストを提供してください。
以下は、周辺機器として機能する iPhone5s アプリに関連するコードです。
必要なデリゲート メソッドは次のとおりです。注:デリゲート メソッドperipheralManagerDidUpdateStateが起動し、「CoreBluetooth BLEハードウェアの電源がオンになり、準備ができている」ことを示します(中央側でも同じです)。デリゲート メソッドperipheralManager:didAddService:error がエラーなしで起動します (以下の出力を参照)。また、デリゲート メソッドperipheralManagerDidStartAdvertising:error がエラーなしで起動します)。didAddService から出力されたサービス情報は次のとおりです。
CBPeripheralManager Delegate メソッド (すべてのコードについては申し訳ありませんが、完成させようとしています。):
iPad Mini で実行される関連する中心的なコードは次のとおりです。
そして、これは Central デリゲート メソッドの 1 つです。centralManagerDidUpdateState: を除いて、どのデリゲート メソッドも起動しません。
最後に、私のデバイスで BLE が動作するかどうか疑問に思います。iPhone と iPad Mini にいくつかの異なる iBeacon アプリをロードして、2 つのデバイスが iBeacon (一方は送信、もう一方は受信) を認識できるかどうかを確認しましたが、iBeacon も検出されませんでした。2台のiPhoneでも試してみました。また、Bluetoothをオフにしてからオンにしました。また、デバイスの電源をオフ/オンにしてみました。両方のデバイスがフォアグラウンドで実行されています。まだ運がありません。助けてください。
bluetooth-lowenergy - 周辺機器から受信したエラー:didUpdateNotificationStateForCharacteristic
2 番目の BLE セントラル アプリと正常に接続する Bluetooth Low Energy ペリフェラル アプリを開発しました。ただし、周辺機器が提供するサービスの特徴の 1 つについて、セントラル アプリに通知をサブスクライブさせることができません。中央アプリには、次のものがあります。
残念ながら、これは失敗し、デリゲート メソッドperipheral:didUpdateNotificationStateForCharacteristicでエラーが受信されます(エラー タイプは「不明」です)。上記のコード (aChar) で特徴的なオブジェクトを出力すると、次のようになります。
通知 = NO であることに注意してください。特性が通知できるようにペリフェラルを設定するにはどうすればよいですか?