2017-12-14 14 views
5

버튼이있는 블루투스 장치가 있습니다. 장치의 버튼을 클릭하면 알림 특성 업데이트 및 내 앱이 로컬 알림을 표시합니다. 그것은 간단합니다.사용자가 앱을 종료 할 때 블루투스 기기를 다시 연결하십시오.

는 I는 다음과 전경에 블루투스 장치를 연결 :

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

이어서 걸렸고 통지 특성치 참 :

peripheral.setNotifyValue(true, for: notificationCharacteristic) 

통지 특성 업데이트, 애플리케이션은 로컬 알림 표시시 :

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

알림 특성이 변경되면 didUpdateValueFor가 트리거되고 로컬 알림이 표시됩니다. 전경과 배경에는 문제가 없습니다. 그러나 사용자가 응용 프로그램을 종료하면 블루투스 장치가 연결 해제되고 didUpdateValueFor가 트리거되지 않습니다. 나는 심지어 특성 변화가 사용자에 의해 끝날 때 다시 블루투스 장치를 연결하고 싶다. 어떻게해야합니까? 나는 내 문제를 말할 수 있기를 바랍니다. 고맙습니다.

답변

0

당신은 수 있도록 프로그램이 앱 Core-Bluetooth Background Mode

앱이 어떤 자원을 확보하기 위해 OS에 의해 살해되는 경우 장치에 다시 연결 할 수있을 것입니다 이런 식으로 처리해야합니다.

"앱이 핵심 블루투스 백그라운드 실행 모드 중 하나 또는 둘 다를 지원하더라도, 영원히 돌아갈 수는 없습니다. 시스템은 현재 포 그라운드 앱의 메모리를 확보하기 위해 앱을 종료해야 할 수도 있습니다. iOS 7부터는 중앙 블루투스가 중앙 및 주변 관리자 개체에 대한 상태 정보를 저장하고 앱 실행시 해당 상태로 복원하는 기능을 지원합니다.이 기능을 사용하여 장기간의 작업을 지원할 수 있습니다 블루투스 기기 관련 문제 "

하지만 사용자가 앱을 종료 한 경우 다시 연결할 수 없습니다.

+0

정말인가요? Tile 앱을 아십니까? 타일 ​​응용 프로그램에서이 작업을 수행합니다. 타일 ​​응용 프로그램이 종료되면 타일 버튼을 눌러 타일 장치를 다시 연결합니다. – sorunluadam

+0

타일 응용 프로그램이 " 사용자 또는 시스템에 의해 종료 될 때 "은 무엇을 의미합니까? – Neo

+0

사용자가 종료했습니다. – sorunluadam