2017-03-02 15 views
0

저는 엔터프라이즈 애플리케이션의 iOS 백그라운드 패치를 조사했습니다. this과 같은 기사에 따르면 앱이 종료되기 전에 30 초간 다운로드하는 것과 같은 제한 사항이 있으며 3 회 시간 초과 후 앱이 백그라운드 동기화에서 금지되는 페널티 (확인되지 ​​않음) 일 수 있습니다. 또한 사용자가 앱을 죽이는 경우, 가져 오기가 중지됩니다 (noted here).iOS Backrground Sync 기업용 앱의 대안?

목표는 앱이 일시 중지되거나 실행되지 않을 때 Google 서버에서 데이터를 검색 할 수 있지만 장기간 실행되는 SQL로 인해 전송에 수분이 걸리는 경우가 있습니다. 모든 사용자에게 주기적으로 알림을 전송하도록 구현하고 싶지 않습니다.

iOS 백그라운드 동기화를 개발하는 과정을 거치기 전에 iOS의 백그라운드 동기화에 대한 몇 가지 실사와 연구 대안을 찾아야했으며 아무 것도 찾지 못했습니다.

iOS의 백그라운드 동기화에 대한 대안을 보거나 개발 한 사람이나 기업용 앱에서이 문제를 처리 한 사람이 있습니까?

+2

느린 SQL로 인해 업데이트가 차단되지 않도록 업데이트를 캐시 할 수 있습니까? 어쩌면 그것을 더 작은 부분들로 나눌 수 있을까요? 전화가 "시간이 걸린다"는 사실은 좋은 것이 아닙니다. – picciano

+0

"앱이 일시 중지되면 정기적으로 Google 서버에서 데이터를 검색"할 수 있습니까? –

+0

@nikdange_me 사용자가 집을 누르고 앱이 백그라운드로 이동하거나 일시 중지되면 30 분마다 API에 전화를 걸어 사용자의 로컬 데이터를 최신 상태로 유지해야합니다. 앱이 사용되지 않고 있습니다 (며칠 또는 수개월 동안). 더 나은 사용자 환경을 위해 모두. – Barrett

답변

0

기업용 앱으로 합법적 인 이유없이 필요로하는 배경 모드 (오디오, 위치, VoIP 등)를 사용할 수 있다는 것을 제외하고는 할 수있는 추가 기능이 없습니다. 이 도움이 있습니다

은 다음과 같습니다 백그라운드에서 응용 프로그램을 실행하는 통지 (정규 위치 변화에 반대) 당신이 중요한 위치 변화의 사용을 만들 수

  • . 이 문제는 당연히 앱 사용자가 돌아 다니는 지 여부에 달려 있습니다. 그러나 인력에 속한 모든 사람들이 iPhone으로 출퇴근한다고 가정하면 앱이 백그라운드에서 실행될 수있는 기회가 매일 두 차례 있습니다. 위치 변경으로 인해 실행되는 앱은 백그라운드에서 30 초 이상 실행될 수 있습니다.

  • 일반 푸시 알림 : 일반 푸시 알림과 달리 사용자가 강제 종료 한 경우에도 VoIP 푸시가 앱을 실행합니다.이 기능을 사용하려면 일반 푸시를 사용하는 것보다 조금 더 노력해야하며 실제 VoIP 전화를 걸거나받는 것과 관련하여 아무 것도 할 필요가 없으므로 일반 푸시 인증서 대신 VoIP 기능 및 VoIP 인증서 만 있으면됩니다. 나는 힘이 배경을 사용하여 내 자신의 응용 프로그램을 종료 한 응용 프로그램을 종료 사용자의 힘이 배경이 가져 오기 위해 실행하는 것이 부적합하지 않습니다 -

링크에 주석 가져 오기 종료와 배경의 힘에 대한 정확하지 않습니다 가져 오지 만 여전히 OS에 의해 시작되지만, 앱이 실행될 빈도가 많아지면 사용자가 앱을 다시 실행하지 않으면 OS가 실행을 멈 춥니 다. 앱을 종료하는 사용자가 강제로 푸시 알림 (예 : 음성 푸시가 아닌 경우)에 대한 응답으로 백그라운드에서 실행되는 것과 같이 다른 일이 발생하지 않도록합니다.

다운로드 시간과 관련이없는 30 초, NSURLConnection은 30 초 후에 중단되며 NSURLSession은 앱 대신 다운로드를 계속하도록 설계되었습니다. 그러나 다운로드하여 긴 SQL 처리를 적용하는 경우 문제가 될 수 있습니다. 그러나 처리 시간이 과도한 것처럼 보입니다. 확실히 최적화 되었습니까?

+0

느린 SQL은 수정되었지만 나머지 호출은 최악의 경우 백그라운드 가져 오기의 한계 인 30 초에 가까워졌습니다. 필자는 일련의 요청으로 관련 API를 히트 한 테스트 응용 프로그램을 만들었습니다. 내 앱을 실행하는 호출이 줄어들 었음을 알았습니다. 간격은 CPU로드 및 다운로드를 완료하는 데 걸리는 시간의 영향을받습니다. 간격이 12 시간에 가까워졌습니다. 앱과 상호 작용하면 잠시 동안 더 짧은 간격을 재개합니다. [이 역시 참조하십시오] (http://stackoverflow.com/questions/39197933/how-to-troubleshoot-ios-background-app-fetch-not-working) – Barrett

+0

또한, 나는 매주 또는 세미 주간 자동 침묵 알림을 구현할 수 있습니다 OS가 궁극적으로 앱 실행을 중단하는 언급 된 사례가 발생하는 경우 – Barrett

0

목표는 응용 프로그램이 일시 중단 주기적 때 우리의 서버에서 데이터를 검색 할 수 있습니다

  • 같은 동작을 달성하기 위해 신뢰할 수있는 유일한 방법은 사용자 대면 Remote를 구현하고 실행하지 않는/(푸시) 백엔드에 알림 프레임 워크 & 애플 리케이션.
    핸드 셰이크 메커니즘에 구현 된 경우 네트워크 가져 오기 요청이 필요 없도록 푸시 JSON 페이로드에 4kB (또는 VOIP의 경우 5) 상당의 데이터를 추가 할 수 있습니다.
  • 당신은 Background App Refresh 같은 가지고 있지만 & 는, 컨텐츠 기회 주의적으로의 소량을 가져 컨텐츠 그 갱신을 증가시키기 위해 Silent Remote Notifications에 사용을 평가할 수 있습니다.
  • 당신은 확실히 API can take minutes due to long running SQL
  • 을 개선하고 앱은업데이트가 필요 기억할 수있는 때 사용자 실제로 화재 그것을. 모든 데이터를 가져온 후 & 부드러운 가져 오기 콘텐츠 화면을 실제 화면으로 전환하는 것으로 평가하십시오.