問題タブ [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 - didUpdateNotificationStateForCharacteristic で CBcharacteristics 値を取得できません
正常に接続されている BLE デバイスを使用しています。この場合、文字列「GET DATA」を BLE デバイスに送信すると、デバイスは特定の応答を返すことで応答します。didDiscoverCharacteristicsForService を使用して writeValue ("GET DATA") を実行しています。didUpdateNotificationStateForCharacteristic のデータを期待していますが、毎回応答があります。
ios - ペリフェラル:didUpdateValueForCharacteristic: 呼び出しが非常に高速であるため、UITextView がブロックされる
からのデータを追加して、UITextView にデータを表示しようとしていますperipheral:didUpdateValueForCharacteristic:error:
。この場合peripheral:didUpdateValueForCharacteristic:error:
、 が非常に頻繁に呼び出されるため、UITextView
( self.responseTextView
) はデータを出力できないか、UI をブロックします。
ios - 接続後に iOS CoreBluetooth がローカルのperipheral.nameを失う
iOSでCoreBluetoothを使用してBluetoothアプリを構築しています。アプリが起動されるたびに、ユーザーは Peripheral の LocalNameKey に保存されている ID を受け取り、それを使用してアドバタイズを開始し、CentralManager を使用して他のユーザーの検索を開始します。すべてのユーザーはローカル名で識別され、それで問題ありません。
CentralManager を使用すると、すべてのユーザーが別のユーザーの Peripheral の特性に値を書き込み、変更について通知することができます。それも機能しています。ここで問題が発生します。接続が完了し、Peripheral が didRecieveWriteRequests メソッドを実行した後、CBPeripheralManager と CBCentralMange の両方がリセットされ、再初期化されます。その後、Peripheral の LocalNameKey は特定の ID ではなく、iPhone の指定された名前または (null) になります。それはアプリの全体的なアイデアを台無しにしますが、私はそれができると確信しています.
Bluetoothをオフにしてオンにすると、再び機能します。
これは、接続後にCentralをクリーンアップする方法です:
これは、ブルートゥースのセントラルとペリフェラルを再初期化する方法です:
ios - iPhone がロックされているときに CBCentralManager が didDiscoverPeripheral メソッドを呼び出さない
特定の周辺機器をスキャンするアプリに取り組んでいます。周辺機器は、少量のデータを送信する必要があることがわかりました。
アプリはフォアグラウンドでもバックグラウンドでも動作します。このコードもplistに追加しました
UIBackgroundModes bluetooth-central iPhone がロックされ、周辺機器がアドバタイズを開始すると、呼び出されません
いくつかの調査を行いましたが、答えが見つかりませんでした。
どんな助けでも大歓迎です。
ありがとう
swift - 状態の保存と復元 BLE - didFinishLaunchingWithOptions を呼び出しますが、CBCentral のデリゲート メソッドは呼び出しません
私はiPhoneアプリに取り組んでおり、実装していますCBCentralManager
。また、plist をバックグラウンド モードで更新し、centralmanager を識別子で初期化しました。
また、このコードをdidFinishLaunchingWithOptions
別のクラスで中央マネージャーを作成しましたが、それはシングルトンです。
アプリを 1 日か 2 日使用しないと、周辺機器がアドバタイジングを開始すると、アプリが起動してこの通知が発生しますが、CBCentral デリゲート メソッドは呼び出されません。willRestoreState メソッドも実装しましたが、それもカードを取得していません。
ユースケース: アプリが使用されていなくても、周辺機器を接続し、広告が開始されたらデータを送信する必要があります。アプリが didFinishLaunchingWithOptions 呼び出しを取得したときに、接続プロセスをどこで処理する必要がありますか? did finishlaunch メソッドで centralManager を初期化する必要がありますか?
ios - iOS: Bluetooth キーボードとして機能するように iOS デバイスをセットアップする方法
私は、iOS デバイスがキーボードであることを世界に伝えたいと思っています。人々がそれとペアリングすると、キーストロークを送信できるようになります。
フォーラムの記事によると、1800 (デバイス情報)、180f (バッテリー)、1812 (入力デバイス)、180a (メーカー) の 4 つのサービスを提供する必要があるようです。
これを行ったところ、BLE ユーティリティは 4 つのサービスを報告しましたが、1812 の兆候はありません。
iOS 周辺機器を OS/X とペアリングしようとすると、OS/X はあきらめ、iOS アプリのさまざまな周辺機器デリゲート メソッドはほとんど呼び出されません (ブレークポイントを入れました)。たとえば、私が各サービスに追加した特性のうち、どれも読み取られたり、購読されたりしていません。
BLE で入力デバイスをアドバタイズする適切な方法を説明できる人はいますか?
ios - iOS で Bluetooth 周辺機器を継続的に検索する方法
基本的に、アプリがバックグラウンドであっても、iOS アプリから近くの BLE デバイスを検索したいと考えています。
iOS は次の方法を提供します。
//_cbcManager は CBCentralManager のオブジェクトです
このメソッドはすべてのサービスをスキャンします (パラメーターに nil が指定されているため)。しかし、これはバックグラウンドでは機能しません。アプリがバックグラウンドにある場合、iOS には特定のサービス名が必要です。
基本的に、このページを読んで、オーディオ デバイスをスキャンしたいと思います: https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspxオーディオ デバイスがブロードキャストする一般的なサービスのほとんどを提供しました。したがって、メソッドは次のようになります。
すべての BLE デバイスがブロードキャストする特定/汎用のサービス名はありますか?