나는 지속적으로 실행하고 일부 주변 특성을 추적해야하는 응용 프로그램을 개발하고 있어요.CoreBluetooth "willRestoreState"- 정확히 수행해야 할 작업은 무엇입니까?
모든 전경에서 잘 작동합니다.
는 또한 백그라운드에서 작동하지만, 나는 제대로 수행하는 것이 확실하지 않다.
상태 복원 및 구현 willRestoreState
에 대한 많은 게시물이 빨간색으로 표시되지만이 중 많은 메소드는이 메소드가 호출 될 때 수행 할 작업을 명시 적으로 표시하지 않습니다. 내가 만들고있어
과정은 다음과 같이 진행됩니다
내가myCentralManager =
[[CBCentralManager alloc] initWithDelegate:self queue:nil
options:@{ CBCentralManagerOptionRestoreIdentifierKey:
@"myCentralManagerIdentifier" }];
는 여기에서 내가의 일정한 흐름하고있어 사용하여 중앙 관리자 만드는거야
:
대기를 에 연결> - -> 발견 서비스 -> 특성을 발견 ->는 charactristic 구독 - 내 주변에 대한 검사> - 중앙 관리자에 대해 (centralManagerDidUpdateState)에 받아보세요> 읽기 데이터
그럼 나는 몇 초를 기다리고
kill(getpid(), SIGKILL);
를 사용하여 내 응용 프로그램을 죽이고, 그리고 내 주변에서 다시 광고를 시작합니다.
은 그럼 프로세스가 다시 살아 오는 것을 볼 수 있고, 내 로그는 AppDelegate에있는didFinishLaunchingWithOptions
호출지고 있음을 보여준다.
나는 다음과 같이 중앙 관리자를 복원
NSArray *identifiers = launchOptions[UIApplicationLaunchOptionsBluetoothCentralsKey];
if (identifiers && identifiers.count > 0) {
_centralManager = [[CBCentralManager alloc] initWithDelegate:self
queue:nil
options:@{CBCentralManagerOptionRestoreIdentifierKey:[identifiers objectAtIndex:0]}];
}
는 또한 willRestoreState
와 centralManagerDidUpdateState
호출지고 있음을 볼 수 있습니다. 내가 잃었어요 여기 어디에
입니다. 다음에해야 할 일은 무엇입니까?
및 위와 같은 방법으로하지만 - -. 나는 내가 위에서 설명 된 일반 흐름 (일을 계속 해요 경우, 모두 잘 작동하는 것 같다 내가 옳은 일을하고 있는가
내가 뭔가를해야합니까? ?!? willRestoreState
예라면, 내가 사전에 기본적으로 이미 연결되어있는 주변 장치를받을 수가 있습니다