2017-04-11 3 views
0

블루투스 주변 기기에 연결하는 iOS 앱이 있습니다 (연결된 버튼이라고 생각하시면됩니다). 주변 장치가 고정 된 위치에 있으므로 항상 iOS 장치의 범위 내에 있지 않습니다. 내 응용 프로그램은 백그라운드 작업으로 실행되며 주변 장치는 주기적으로 내 응용 프로그램에 단추 누르기를 알립니다.백그라운드에서 iOS BLE 앱을 유지하는 모범 사례

나는 (나는 믿는다) 메모리 압박 때문에 아이폰 OS가 때때로 내 앱을 죽이는 것을 알았다.

https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html

을 ... 주변에 블루투스 연결이 복원와 주변의 버튼을 누를 때마다 사망 응용 프로그램을 다시 실행하여 : 나는 BLE 상태의 보존과 복원이 나에게 도움이 될 것으로 생각했다. 그러나,이 게시물 :

BLE background reconnect이 ... (안톤에 의해 주석이) 그 상태의 복원을 제안 할 것으로 보인다는 조금 색다른이며, BT를 끈 후 상태를 복원 할 수 없습니다/또는 비행기 모드 후

BLE 상태 복원의 경우에도 마찬가지입니다. 내가 일하도록하는 데 시간을 낭비하고 있습니까? 작동한다면 좋은 예제 구현이 있습니까?

상태 복원을 사용할 수없는 경우 다른 옵션이 있습니까?

  • 내 응용 프로그램 크기를 작게 유지하면 iOS에서 죽일 가능성이 적습니까?
  • 앱을 계속 유지하는 원격 서버에 연결 유지 통신을 추가 하시겠습니까?
  • 내 앱에 메시징이나 VOIP 같은 기능을 추가하십시오 (앱 스토어 승인을 받기 위해 합법적이어야 함). 애플 리케이션이 다시 시작되고 BLE 주변 장치에 의해 연결이 다시 설정되거나 웨이크 업이 VOIP 전용 API 호출 만 허용합니까?
  • 다른 건 없나요?

분명히 BLE 상태 복구를 받기에 덜 바람직하다고 상기 목록에서 나와 작업을 수행하십시오. 어떤 조언도 크게 감사드립니다.

+0

비행기 모드 전환 후 다시 연결하지 않는 것에 대한 의견은 어디서 볼 수 있습니까? 또한 장거리 연결이있는 경우 재부팅 후 재시동하게 될 것입니다. 실제로 상태 복원을 구현하려고 시도했으나 문제가 있습니까? 나는 BOS를 iOS에서 잘 사용하는 것이 어렵다는 것을 알았지 만, 문제가 발생하기 전에 해결하기 위해 노력하지는 않을 것입니다. (물론 메모리 사용량이 많으면 그 일을해야하지만 완전히 별개입니다.) –

+0

저는 비행기 모드 문제를 다음과 같이 개발자가 여러 곳에서 언급 한 것을 보았습니다 : [link] (https : //forums.developer.apple.com/thread/26798) (내 원래 게시물에서 내 링크와 동일한 포스터입니다) 나에게 명확하지 않은 점은 이러한 문제가 여전히 지속되는지 아니면 이전 버전의 iOS와 관련이 있는지입니다. 나는 상태 회복을 작동 시키려고 노력하고있다. 그러나 내가 나의 시간을 낭비하지 않고 있었는지 확인하고 싶어하는 약간의 부정적인 지위를 보았다! 좋은 작업 솔루션에 대한 링크는 훌륭합니다! –

+0

누구든지 어떤 기법을 제안 할 수 있습니까? –

답변

0
난 당신이뿐만 아니라 읽어보십시오하는 동안 다시 여기에 댓글을 쓰셨

: Does CBCentralManager connect ever time out?

어쨌든, 작은 앱 풋 프린트를 유지하면 앱이 초기에 살해 될 가능성이 줄어 만들 수 있지만 결국 그것을 상관없이 일어날 것입니다. VOIP은 실제로 합법적 인 이유가있는 경우 좋은 해결책이 될 수 있습니다. VOIP 푸시 메시지를 읽으십시오. 중요한 위치 변경 사항을 구독하는 것이 매우 도움이 될 수 있지만 많은 사람들을 이동하는 사용자에게만 해당됩니다. BLE에 "고정"iPads가있는 사용자가있는 경우에는 도움이되지 않습니다. 앞서 언급했듯이 "ok"(사용 케이스에 따라 다름)로 작동하도록 할 수는 있지만 100 % 불가능합니다. 또한 Apple Watch 버그는 다소 불행합니다. 이제 시계가 페어링되었으므로 기본적으로 코어 블루투스를 내 사용 목적으로 포기했습니다.

저는 일부 애플 블루투스 엔지니어들과 연락을 많이하고 있으며, 그들은 문제에 대해 잘 알고 있음을 다소 확인했습니다. 왜 그들이 그것을 고치지 않을지 모르겠지만 제 3 자 주변 장치가 잘 작동하는지 확인하는 것이 중요하지 않은 것이 분명합니다. 그것의 자신의 제품 (시계, EarPods 등등.)에 관해서는 Corse의 그들에는 동일한 제한이 없다.