web-dev-qa-db-ja.com

CoreBluetooth XPC接続がViewControllerを無効にすると無効になる

Bluetoothデバイスからの切断を完了し、didDisconnectPeripheralデリゲートで切断されたことを確認したら、viewcontrollerを閉じようとします。

これが発生すると、「[CoreBlueooth] XPC Connection Invalid」というメッセージが表示されます

ViewControllerを終了する前に、Bluetoothでクリーンアップする必要がある特定のものはありますか?

15
Lou_257

CBCentralManagerをシングルトンに配置すると、エラーメッセージが解決されます。

CBCentralManagerは割り当て解除されません)

8
oOEric

次のメッセージが表示されました。

[CoreBlueooth] XPC接続が無効です

そして、次の非常に簡単な実装を使用してBLEデバイスをスキャンできませんでした。

NSObject<CBCentralManagerDelegate, CBPeripheralDelegate>

私の解決策は、Privacy-Bluetooth Peripheral Usage DescriptionNSBluetoothPeripheralUsageDescriptionのBluetooth Peripheralでの処理を説明するInfo.plistに値を追加することでした。

info.plistでは次のようになります。

<key>NSBluetoothPeripheralUsageDescription</key>
<string>Play with BLE Compatible devices<string>

もっと正確なことをここに書いてください;)

6
GabLeRoux

CBCentralManager参照は、メンバー変数としてのクラスへの強い参照である必要があります。ローカル参照として機能することはできません。

3

これを試して:

CBPeripheral *mConnectedPeripheral;

-(void)viewDidDisappear:(BOOL)animated{
    [_centralManager cancelPeripheralConnection:mConnectedPeripheral];
}
1
Garima Paliwal

私の場合、機能からアプリサンドボックスをオフにしました。

0
Chulseung

わかりました、私はその問題に出くわし、Info.plistに必要なキーを追加しようとした後、それはまだ機能し、この時点で使用するビューがありませんでした(AppDelegateにありました)。それでもうまくいかない場合は、以下を試してください。

以前使用していたもの:(Swift)

_ = BluetoothMngr.init(config: bleConfig)

ここでの問題は、Bluetoothを管理する変数が保持されないため、BLEコールバックを追加すると、これらが空のクラスになってしまうため、保持する場所にグローバル変数を作成するだけです(これがシングルトンで動作し、これらを表示する理由です保持されます)このように。

self.bleMngr = BluetoothMngr.init(config: bleConfig)

私のために働いて、それが役立つことを願っています。

0
Rémy Blanc