問題タブ [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 が BLE サービスと特性をキャッシュするための条件は何ですか?
同じデバイスを切断してから再接続すると、iosがBLE周辺機器のサービスと特性をキャッシュしていることを読みました(もちろん、これらのサービスと特性が発見された後)。したがって、再検出の長いプロセスは必要なく、再接続後にこれらの特性に直接書き込みまたは読み取りを行うことができます。
このスレッド: BLE 周辺サービスをより速く検出する方法はありますか? 接続が暗号化されている場合、サービスと特性がキャッシュされると言われています。また、WWDC 2013 セッション 702 では、サービスと特性がキャッシュされていると表示されていますが、条件が指定されていません。
iOS が BLE サービスと特性をキャッシュするための条件は何ですか? 暗号化された接続だけが必要であることを誰かが確認できますか?
objective-c - iOS CBCentralManager が再接続しない
そのデバイスのUUIDとメソッドを使用して、電話から結合された別のデバイスに接続します
CBCentralManager オブジェクトから。アプリケーションの起動時にこれを自動的に行います。すべて正常に動作し、接続した周辺機器でデータを送受信できます。
その後、範囲外になると、デバイスから切断されました。範囲内に戻ると、Bluetooth はボンディングされたデバイスに自動的に接続しますが、CBCentralManager は接続しません。そのため、ボタンをクリックして、接続されている周辺機器を再度取得して、接続を強制する必要があります。これはかなり面倒なので、以前に接続されていたデバイスが再び接続されたときに呼び出されるメソッドはありますか? または、UUID を持っているので、必ずしも接続されているとは限らない任意のデバイス。
詳細についてはBluetoothHelper
、アプリの起動時にインスタンス化するというシングルトン クラスを使用しており、そこに main CBCentralManager
objectがあります@property (strong, nonatomic) CBCentralManager *bluetoothManager;
。私はそれを初期化します:
シングルトンの初期化で。次に、上記のように、中央マネージャーの状態を受け取った後、デバイスに接続しようとします。
シングルトン クラスは AppDelegate で初期化されます。
bluetooth-lowenergy - CoreBluetooth - セントラルからペリフェラルへのデータの書き込み
Apple が提供する CoreBluetooth 用の Sample アプリを参照したところ、Peripheral から Central に Data を送信できたので、Central から Peripheral に Data を書き込む必要があります。グーグルの後、私はそれが使用できることを発見しました[_discoveredPeripheral writeValue:aData forCharacteristic:charc type:CBCharacteristicWriteWithResponse];
以下は、周辺機器にメッセージを送信するためのセントラルの実装です。
このメソッドを呼び出すと、データを書き込むことができません。代わりに、以下のようにコンソールに CoreBluetooth 警告が表示されます。
誰かが周辺機器のオブジェクトを取得する最良の方法と、セントラルから周辺機器へのデータの送信を開始する方法を教えてくれれば幸いです。
EDIT目的の C で UUID から特性を取得する方法に 示されている方法を試しましたか?
しかし、この場合、サービスをループしようとするたびにサービスをループすることができず、services=nil が返されます。
ios - 中央マネージャーが正常に接続できるようにするために、(システム ボタンを使用して) iOS Bluetooth を再起動する必要がある場合があるのはなぜですか?
iOS で CoreBluetooth を使用し、Mac で IOBluetooth を使用している iOS および OS X Yosemite でアプリケーションを開発しています。iOS アプリは「中心」の役割を果たし、Mac アプリは「周辺」の役割を果たします。
基本的に、iOS アプリ (セントラル) は周辺機器を見つけるためにスキャンを開始し、Mac アドバタイジング周辺機器データを見つけると、セントラルはそれに接続し、そのサービスと特性を発見できます。
私の問題は、iOS アプリが Mac 広告を見つけるためにスキャンを開始し、それを見つけると (このステップは常に機能します)、接続を試みますが、成功しないことがあります。
周辺機器に再び正常に接続できるようにするには、iOS ボタンから Bluetooth をオフにしてからオンにする必要があります。
もう1つの奇妙なことは、セントラルが同じ状況にあると想像してください(接続しようとしても成功しません)。OS X では、システム ステータス バーのネットワーク アイコン (Wifi シンボル付き) をクリックすると、利用可能なすべての Wi-Fi ネットワークのリストが表示され、iPhone が「パーソナル ホットスポット」としてリストに追加されると、この時点で、中央 (iPhone 上にある) が周辺機器 (Mac) に接続できます。
この問題により、iPhone がランダムに Mac に接続できなくなるため、アプリの使用が大幅に損なわれます。
同様のケースを見つけるために、インターネット(Google、Stackoverflowなど)で何日も費やしました。私は多くの記事を読み、たとえば 10 秒後に接続が成功しなかった場合にスキャンを停止して再開するなど、多くのことを試しました。
私の質問が明確でない場合は、遠慮なく言ってください。必要に応じて更新します。
ご協力いただきありがとうございます。これを修正する方法を本当に見つける必要があります。
ios - CoreBluetooth AdvertisementData に CBAdvertisementDataLocalNameKey が含まれていませんか?
現在、使用可能なデバイスをスキャンする CoreBluetooth アプリケーションを構築しています。問題は、「didDiscoverPeripheral」の AdvertismentData ディクショナリに CBAdvertisementDataLocalNameKey が含まれていないことです。CBAdvDataChannel と CBAdvDataIsConnectable のみが含まれています。これは、BLE デバイスを識別できないことを意味します。
興味深いのは、Lightblue アプリ (iOS BLE スキャナー) が名前を表示できるため、おそらく「CBAdvertisementDataLocalNameKey」にアクセスできることです。
私が間違っていることを誰かが知っていますか?私は本当にこれで髪を引き裂いています!
私のコードの基本的なサンプルは次のとおりです。
ios - 周辺機器がバックグラウンドでしばらくしてから切断されました
plist でバックグラウンド フェッチ モードを使用しています。周辺機器をデバイスに接続すると、バックグラウンドでしばらく動作しますが、10 ~ 15 分後に自動的に切断されます。周辺機器を常に接続したい。アプリケーションがバックグラウンドからウェイクアップしたときに呼び出されるメソッド..
ios - Swift で BLE のアドバタイズと検出に失敗しました
次のようにBLEを宣伝しようとしています
でペリフェラルを発見したい
ただし、didDiscoverPeripheral メソッドは呼び出されません。私は 2 つの IPhone5 でテストしています。誰が私が間違っているのか教えてもらえますか?