2012-07-31 4 views
3

저는 애플리케이션을 개발했습니다. 내 응용 프로그램은 사용자로부터 피드백을받습니다. 네트워크를 사용할 수 없으면 해당 데이터가 로컬 db에 저장됩니다. 그러나 네트워크를 사용할 수있게되면 중앙 데이터베이스와 자동으로 동기화됩니다.중앙 데이터베이스와 자동 동기화

하지만 여기에는 몇 가지 문제가 있습니다. 데이터베이스 &을 백그라운드로 보내면 네트워크를 사용할 수있게되면 자동으로 중앙 데이터베이스와 동기화됩니다. 그렇게하는 방법?

네트워크 가용성을 확인하기 위해 Reachability 클래스를 사용하고 있습니다.

답변

1

현재 네트워크를 사용할 수있게되면 앱을 "깨우기"위한 방법이 없습니다. 사용자가 네트워크 연결없이 앱을 종료하면 앱을 자발적으로 열지 않으면 아무 것도 할 수 없습니다.

그러나 UILocalNotification을 사용하여 메시지를 보낼 수 있습니다. 앱이 종료되고 업로드 대기중인 일부 데이터가있는 경우 4 시간 이내에 (또는 어떤 의미있는 시간이든) 알림이 실행되도록 예약 할 수 있습니다.

사용자가 알림 시간 전에 앱을 열고 데이터를 업로드 할 수있는 경우 알림을 취소 할 수 있으며 아무도 일정을 알 수 없습니다.

사용자가 앱을 열지 않으면 알림이 표시되며 "휴대 전화에 잠시 동안 업로드하지 않은 데이터가 있습니다. 인터넷에 연결하고 MyAwesomeApp을 시작하여 데이터를 동기화하십시오 . "

+0

@benzado .. UILocalNotification을 사용하면 네트워크 상태가 변경 될 때마다 이러한 알림이 실행되고 응용 프로그램이 많은 로컬 알림에 방해가됩니다. 어쨌든, 나는이 아이디어를 좋아했다. Incase 특정 사용자가 알림을 무시하면 도달 가능성이 변경 될 때 Reachability 클래스 'kReachabilityChangedNotification'이 여러 번 실행되기 때문에이 알림은 계속해서 발생합니다. – Bharath

+1

@ taruninima 당신은 오해하고 있습니다. 앱이 종료 될 때 하나의 알림 만 예약합니다. 앱이 열려 있으면 취소합니다.하루 정도 후에 앱을 열지 않는 한 사용자는 알림을 볼 수 없습니다. – benzado

1

iPhone에서는 할 수 없습니다. 앱이 백그라운드로 이동하면 몇 초 안에 앱이 사라집니다.

나는 모든 앱에 대해 5 초, 더 많은 배경 시간을 요청한 일부 앱에 대해서는 10 분이라고 생각합니다.

추 신 : 앱을 탐색 또는 음악 앱으로 표시하지 않는 한 이론적으로는 이론적으로 영원히 남을 수 있습니다. 그러나 피드백 앱이 그러한 권한을 가진 앱 스토어에서 승인을받을 수 있는지 의심 스럽다.

0

데이터를 서버에 성공적으로 업로드했음을 표시하는 추가 열을 저장된 데이터베이스에 보관하십시오. 데이터를 쓰지만 아직 업로드하지 않은 경우이 값을 설정하십시오. 업로드가 완료되면 값을 지우십시오. 앱이 포 그라운드로 올 때이 값을 확인하고이 열을 지우지 않은 데이터를 업로드하도록 할 수 있습니다. 앱이 실행되는 동안 적절한 간격으로 타이머를 설정하여 도달 가능성을 다시 확인하고 성공한 경우 업로드를 시도 할 수 있습니다. 데이터가 성공적으로 기록 될 때만 깃발을 지우고 서버가 부분 업로드를 처리하지 않도록하십시오 (지하철 또는 기차에서이 작업을 시도하거나 연결을 이동하려는 사람을 생각하십시오).

+0

@Owen .. 데이터가 중앙 DB와 동기화되는지 여부를 처리하는 방법을 알고 있습니다. 하지만 제 질문은 이것이 아닙니다. 질문을 다시 참조하십시오. – Bharath

+0

데이터가 도착해야하는 시간 제한이 없다면 다시 활성화 될 때까지 기다려야합니다. 물론 사용자가 앱을 다시 활성화하지 않으면 게재가 보장되지 않습니다. –

관련 문제