2014-04-07 3 views
1

백그라운드에서 계속 실행되는 앱을 필요로하는 iBeacon이있는 프로젝트에서 작업하고 있습니다. 이것의 실용성을 절대로 깨닫지 못하게하십시오. iBeacon API는 앱이 백그라운드에서 지속적으로 범위를 지정하거나 입장/퇴장 이벤트가 아닌 다른 통신을 수신하는 것을 허용하지 않습니다 (needsDisplay 플래그를 설정 한 경우 허용하지만 이는 필요로하는만큼 수동적이지 않습니다).). 특정 지역에서 앱이 완전히 백그라운드로 설정되어있는 동안 가장 가까운 비컨을 감지 할 수없는 것 같습니다.BLE 백그라운드에서

이것을 해킹하기 위해 CoreBluetooth 주변 기기로 몇 가지 iOS 기기를 설정하고 연결하여 항상 앱에서 지속적으로 발견 할 수 있습니다. 주변기기에 사용되는 BLE 프로파일은 "연결 가능"이기 때문에 백그라운드에서 무한대로 앱을 유지할 수 있으며 iBeacon 범위는 하루 종일 가능합니다. 시동을 걸기 위해 배터리 수명을 최소한으로 줄였습니다.

지금 문제는 격일로 앱이 종료되고 입력/종료 이벤트로 깨우지 않으며 범위 내에있을 때 다른 BLE 장치로 깨우지 않는 것입니다.

나는 이와 같은 해킹 된 솔루션을 통해 수많은 문제가 발생할 수 있다는 것을 알고 있지만, 내 인생에서이 문제의 원인을 좁힐 수는 없습니다. 생각?

답변

2

한 번에 한 번씩 CoreLocation이 중단되고 새로운 항목/종료 이벤트가보고되지 않습니다. 전화를 재부팅하면 일반적으로이 문제가 해결됩니다. 일화 보고서의 증가는 iOS 7.1이 출시 된 이래로 더 일반적 일 수 있음을 시사합니다. (지난 몇 주 동안 StackOverflow에서 이와 비슷한 질문이 두 번 있었으며 Radius Networks에서이 문제에 대한 많은 지원 요청을 받았습니다.) 그러나 7.1에있는 변화가 이것을 증명하는 단단한 기록은 이것에 영향을 미치지 않는다.

EDIT : 다른 장소에서 수집 된 추가 데이터는 이러한 전화 끊김이 발생하면 Bluetooth가 계속 정상적으로 작동하며 끊긴 장치가 iBeacon으로 전송할 수 있음을 보여줍니다. 이것은 CoreLocation의 버그로, 정기적 인 Bluetooth LE 검사에서 iBeacons이 멈추는 것을 찾습니다. 지금까지 유일하게 알려진 수정 프로그램은 영향을받는 전화를 재부팅하는 것입니다.

문제는 근본 원인을 알기 위해 특성화 할 수 없을만큼 희귀합니다. Bluetooth 문제입니까? CoreLocation 문제? 설정으로 인해 문제를 찾는 데 이상적인 방법이 될 수 있습니다.

즉시이 문제를 재현으로, 여기에 내가 무엇을 할 것이라고입니다 :

  1. Locate for iBeacon 같은 또 다른 아이 비콘 스캐닝 프로그램을 시작하고 그것은 당신의 근접 UUID를해야합니다 (이 지역의 모든 iBeacons에 대한 범위가) 그들을 보십니까? 그렇다면 Bluetooth 및 CoreLocation이 작동하므로 앱에 문제가있을 수 있습니다.

  2. (1)에 iBeacons가 보이지 않으면 설정> 블루투스로 이동하여 다른 주변 장치 (클래식 블루투스 장치 포함)를 검색하십시오. 쉽게 테스트 할 수 있도록 Macbook 또는 블루투스 헤드셋을 표시하십시오. 장치가 보이지 않으면 블루투스가 끊어집니다. 전원을 껐다가 다시 켜보십시오.

  3. (2)에 블루투스 장치가 있지만 (1)에 iBeacons이없는 경우 CoreLocation을 처리 할 때 OS 문제가있을 수 있습니다.

내가 보는 것을 아는 데 관심이 있습니다. 위의 절차를 수행해도 문제가 해결되지는 않지만 문제가 해결 될 수 있는지에 대한 증거가 될 수 있습니다.

여기에 사용자가 비슷한 문제를보고 다른 질문이 있습니다 :

iOS app with iBeacon must restart device

ibeacon does not apear in iPhone 4S

+0

감사 @davidgyoung. 나는 그 발걸음을 옮겨 어디로 가는지 볼 것입니다. 정보를 정말 고맙게 생각합니다. – d2burke