2017-12-14 11 views
5

ボタンが付いたBluetoothデバイスがあります。デバイスのボタンをクリックすると、通知特性更新と私のアプリケーションはローカル通知を表示します。それは簡単です。ユーザーがアプリを終了したときにBluetoothデバイスを再接続する

Iは以下のように前景のBluetoothデバイスを接続:

var restoreOptions = [CBPeripheralManagerOptionRestoreIdentifierKey: "customIdentifier"] 
    centralManager.connect(peripheral, options: restoreOptions) 

そしてsetted通知特性値が真である:

peripheral.setNotifyValue(true, for: notificationCharacteristic) 

通知特性更新、アプリケーションがローカル通知を示す:

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { 
     showLocalNotification() 
    } 

通知特性は変更され、didUpdateValueForがトリガされ、ローカル通知が表示されます。前景と背景に問題はありません。しかし、アプリケーションがユーザによって終了されると、ブルートゥースデバイスは切断され、didUpdateValueForはトリガされない。私も、特性の変化がユーザーによって終了された場合でも、Bluetoothデバイスを再接続したい。これどうやってするの ?私は自分の問題を教えてくれることを願っています。ありがとうございました。

答えて

0

あなたのアプリはいくつかのリソースを解放するためにOSによって殺されている場合は、デバイスに再接続することができるようになりますCore-Bluetooth Background Mode

この方法を処理するためのアプリケーションができますし、プログラムする必要があります。

"あなたのアプリがコアBluetoothバックグラウンド実行モードの1つまたは両方をサポートしていても、永遠に実行することはできません。現在のフォアグラウンドアプリケーションのメモリを解放するために、 iOS 7以降、コアBluetoothは、中央および周辺マネージャオブジェクトの状態情報の保存と、アプリケーションの起動時にその状態を復元することをサポートします。この機能を使用して、長期的なアクションをサポートすることができますBluetoothデバイスを含む」

ただし、ユーザーがアプリケーションを終了した場合は再接続できません。

+0

本当ですか?あなたはタイルアプリを知っていますか?タイルアプリはこれを行います。タイルアプリケーションが終了すると、タイルボタンを押してタイルデバイスを再接続します。 – sorunluadam

+0

タイルアプリがユーザーまたはシステムによって"で終了した場合、どういう意味ですか"? – Neo

+0

私はユーザーによって終了したことを意味します。 – sorunluadam

関連する問題