問題タブ [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.

0 投票する
3 に答える
712 参照

ios - CoreBluetooth - centralManagers メソッド didDiscoverPeripheral は、スリープ モードで最も頻度が低くなり、何も発生しなくなります。

私が使用していて、アプリがフォアグラウンドまたはバックグラウンドになっている場合、またはデバイスの画面がまだオンになっている状態でデバイスがロックされている場合CoreBluetooth、コールバック メソッドが頻繁に呼び出されます。didDiscoverPeripheralしかし、画面がオフ/ブラックアウト (スリープモード) になるとすぐに、コールバックの頻度はほとんどなくなります。

何が原因でしょうか? デバイスのバッテリーがいっぱいで、Bluetooth がオンになっています。

この問題で私を助けてください。

ありがとう。

0 投票する
1 に答える
90 参照

ios - Core Bluetooth 状態の復元をオプトアウトする方法はありますか?

CBCentralManager が復元識別子で既にインスタンス化されている場合、CB 状態の復元をオプトアウトする方法を知っている人はいますか?

基本的には条件によっては再度CBの状態回復をオフにしたい(=状態回復をずっと使いたくない)。

centralManager の割り当てを解除し、復元識別子なしで新しいインスタンスを作成する必要がありますか?

0 投票する
1 に答える
288 参照

ios - iOS デバイスから Bluetooth 周辺機器またはサービスを検出できない

CoreBluetooth フレームワークを使用して Bluetooth デバイスをスキャンしようとしています。デバイスはクライアントから提供されたプロトタイプです。

の実装CBCentralManagerDelegateは正しいと思いますが、centralManager: didDiscoverPeripheral: advertisementData: RSSI:コールバックを受信して​​いません。すべてのデバイスに対して検出コールバックを起動するサービス UUIDに登録してもnil、何も起こりません。

ここにシワがあることを除いて、Bluetoothデバイスに欠陥があるかどうかを検討します... iPadでBluetoothデバッグアプリケーションLightBlueを起動すると、プロトタイプデバイスがいくつかのサービスとともにリストされます. 実際、そのアプリの「クローン」機能を使用して iPad からサービスを直接再現するとすぐに、デリゲート コールバックが起動します。

サンプルコードを投稿できますが、それは定型的なものです (私は信じています)。Bluetooth の専門家: 私が経験している動作に明らかな原因はありますか?

0 投票する
1 に答える
2516 参照

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"]]];

ここに私がいつも見ているエラーがあります:

私が欠けているものを知っている人はいますか?

ご協力いただきありがとうございます。

0 投票する
2 に答える
323 参照

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") でラベルを更新します。

0 投票する
1 に答える
660 参照

ios - 周辺機器のサービスの CentralManagers リストを更新しています

iOS で Core Bluetooth に問題があります。OTA アップデーターをプログラミングしていて、奇妙な問題に遭遇しました。デバイスを OTAU モードに切り替えると、デバイスは切断され、同じデバイス UUID の下で別のサービスをアドバタイズします。問題は、新しく接続されたデバイスからサービスを検索しようとすると、サービスの古いリストが表示されることです。これはもはや有効ではありません。問題の明らかな部分は、CBPeripheral.name 値が元のデバイス名であるが、didDiscoverPeripheral に返される広告辞書では正しい新しい名前であるということです。

これが私が見たものです:

多くの場合、プログラムの次のクリーンな実行では、周辺機器名の Xxxx_boot とアドバタイズされた名前の Xxxx が逆に表示されます (アドバタイズは常に正しい)。

CBCentralManager 内に保存された周辺情報をクリアする方法がわかりません。CentralManager の新しいインスタンスを作成しようとしましたが、何も機能していないようです。何か案は?