2013-03-27 3 views
2

readRSSI 함수 을 사용하여 타이머를 RSSI로 읽으려고 일정을 잡았지만 내 앱이 백그라운드로 들어갈 때 타이머가 멈 춥니 다. 앱이 백그라운드로 들어 오면 주변 기기의 알림에서 RSSI 값을 얻는 좋은 방법이있을 수 있습니다. 그러나 나는 어떻게 해야할지 모른다. 아무도 도와 줄 수 있습니까? 누구나 더 나은 방법이 있습니까?readRSSI 함수를 사용하여 RSSI를 읽으려는 타이머를 예약하지만 내 앱이 백그라운드로 들어갈 때 타이머가 멈 춥니 다.

+1

iOS 앱은 백그라운드 실행을 구현하지 않는 한 앱이 포 그라운드로 돌아올 때까지 모든 타이머가 일시 중지 될 수 있도록 구체적으로 지정하고 짧은 시간 동안 만 지정하지 않는 한 백그라운드에서 실행되지 않습니다. (http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html) – Greg

답변

1

나는 동일한 문제가있어, 나는 두 가지 생각이 있습니다.

1.

첫째, 당신은 PERIODLY corebluetooth 대리자를 가지고 어떤 서비스를해야한다. F 또는 필자는 주기적으로 didUpdateValueForCharacteristic으로 델리게이트 할 수있는 배터리 서비스를 보유하고 있습니다.

두 번째로 readRSSI 함수를 didUpdateValueForCharacteristic에 설정하십시오. Corebluetooth로 백그라운드 모드를 설정하는 것을 잊지 마십시오. 이제 배터리 값을 업데이트 할 때 RSSI를 업데이트 할 수 있습니다.

잘 작동하지만 일부 샘플 코드에서 다른 아이디어가 있습니다.

2.

사용하면 RSSI 리더 시작할 때마다 아래 코드 :

NSTimer *rssiTimer; 
[rssiTimer invalidate];  
rssiTimer = [NSTimer timerWithTimeInterval:1.0 target:peripheral selector:@selector(readRSSI) userInfo:nil repeats:YES]; 
[[NSRunLoop currentRunLoop]addTimer:rssiTimer forMode:NSRunLoopCommonModes]; 

그것은 너무 나를 위해 잘 작동합니다.

+0

나는이 아이디어를 어제 받았고 수정 장치로 해결하려고합니다.하지만 질문은 내 장치를 수정하지 않고도 거리 경보를 사용할 수있는 일부 앱을 볼 수 있습니다. – user2214220

+0

정확히 "장치 수정"이 무엇을 의미하는지 모르겠습니다. 귀하의 질문에 대해 자세히 설명해 주시겠습니까? – momoyo

+0

감사합니다. 답변을 찾았습니다. – user2214220