問題タブ [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 - CoreBluetooth - centralManagers メソッド didDiscoverPeripheral は、スリープ モードで最も頻度が低くなり、何も発生しなくなります。
私が使用していて、アプリがフォアグラウンドまたはバックグラウンドになっている場合、またはデバイスの画面がまだオンになっている状態でデバイスがロックされている場合CoreBluetooth
、コールバック メソッドが頻繁に呼び出されます。didDiscoverPeripheral
しかし、画面がオフ/ブラックアウト (スリープモード) になるとすぐに、コールバックの頻度はほとんどなくなります。
何が原因でしょうか? デバイスのバッテリーがいっぱいで、Bluetooth がオンになっています。
この問題で私を助けてください。
ありがとう。
ios - Core Bluetooth 状態の復元をオプトアウトする方法はありますか?
CBCentralManager が復元識別子で既にインスタンス化されている場合、CB 状態の復元をオプトアウトする方法を知っている人はいますか?
基本的には条件によっては再度CBの状態回復をオフにしたい(=状態回復をずっと使いたくない)。
centralManager の割り当てを解除し、復元識別子なしで新しいインスタンスを作成する必要がありますか?
ios - iOS デバイスから Bluetooth 周辺機器またはサービスを検出できない
CoreBluetooth フレームワークを使用して Bluetooth デバイスをスキャンしようとしています。デバイスはクライアントから提供されたプロトタイプです。
の実装CBCentralManagerDelegate
は正しいと思いますが、centralManager: didDiscoverPeripheral: advertisementData: RSSI:
コールバックを受信していません。すべてのデバイスに対して検出コールバックを起動するサービス UUIDに登録してもnil
、何も起こりません。
ここにシワがあることを除いて、Bluetoothデバイスに欠陥があるかどうかを検討します... iPadでBluetoothデバッグアプリケーションLightBlueを起動すると、プロトタイプデバイスがいくつかのサービスとともにリストされます. 実際、そのアプリの「クローン」機能を使用して iPad からサービスを直接再現するとすぐに、デリゲート コールバックが起動します。
サンプルコードを投稿できますが、それは定型的なものです (私は信じています)。Bluetooth の専門家: 私が経験している動作に明らかな原因はありますか?
ios - CBPeripheral 接続は、discoverServices を呼び出した後も切断され続ける
アプリケーション内に coreBluetooth を統合しようとしています。これが私のコードです:
内で startScanning を呼び出していますが、呼び出し後viewcontroller
に常に(void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error
コールバックに 入ります[self.activePeripheral discoverServices:@[[CBUUID UUIDWithString:@"A65eBB2D-3D30-4981-9DB2-1996D88118A0"]]];
ここに私がいつも見ているエラーがあります:
私が欠けているものを知っている人はいますか?
ご協力いただきありがとうございます。
ios - View Controller の UILabel を Singleton から変更する
私は iOS 開発が初めてで、BLE デバイスに接続するアプリの作成に苦労しています。多くのView Controllerがあるため、すべてのView Controllerで周辺機器を常に接続しておく必要があります。
これを実現するために、すべての BLE 接続メソッドをSingleton
. これはうまく機能します。私は connect メソッドを呼び出して、周辺機器View Controller
に接続します。Singleton
さて、問題は、UILabel
からの接続状態(スキャン中、接続中、接続中、切断中)で更新したいView ControllerにあることSingleton
です。
そこで、からインスタンスを取得してView Controller
、ラベルを次のように直接変更しようとしました。
また、次のようなビュー コントローラー クラスをインスタンス化しました。
次に、メインでメソッドを作成しようとしましたView Controller
:
そして、Singleton
次のように呼び出します:
これは適切に呼び出されました (NSLog
が表示されました) が、ラベルは更新されませんでした。
View Controller
からラベルを更新する方法がよくわかりませんSingleton
。私がやろうとしている方法が正しいかどうかもわかりません。
アドバイスや助けをいただければ幸いです。ありがとう。
-----更新: -----
Mundi と Nikita のおかげで、NSNotification を通じて必要なものを実装するためのより良い方法を手に入れることができました。ここでそれを必要とするすべての人のために、私のやり方は次のとおりです。
私のView Controller
中でviewDidLoad
私は電話します:
次に、同じクラスで、次のような通知オブザーバー メソッドを実装します。
次に、Singleton
必要に応じて次のように呼び出します。
がView Controller
から通知を受け取るSingleton
と、通知オブジェクトに追加したテキスト (この場合は @"CONNECTED") でラベルを更新します。
ios - 周辺機器のサービスの CentralManagers リストを更新しています
iOS で Core Bluetooth に問題があります。OTA アップデーターをプログラミングしていて、奇妙な問題に遭遇しました。デバイスを OTAU モードに切り替えると、デバイスは切断され、同じデバイス UUID の下で別のサービスをアドバタイズします。問題は、新しく接続されたデバイスからサービスを検索しようとすると、サービスの古いリストが表示されることです。これはもはや有効ではありません。問題の明らかな部分は、CBPeripheral.name 値が元のデバイス名であるが、didDiscoverPeripheral に返される広告辞書では正しい新しい名前であるということです。
これが私が見たものです:
多くの場合、プログラムの次のクリーンな実行では、周辺機器名の Xxxx_boot とアドバタイズされた名前の Xxxx が逆に表示されます (アドバタイズは常に正しい)。
CBCentralManager 内に保存された周辺情報をクリアする方法がわかりません。CentralManager の新しいインスタンスを作成しようとしましたが、何も機能していないようです。何か案は?