연결이 끊겼다고 항상 업무까지 중단되어서는 안 됩니다. 오프라인 동작은 불안정한 네트워크에서도 일을 마치도록 돕거나, 제품 목적에 맞는 경우 자신의 기기에 기록을 보관하도록 도울 수 있습니다.
계속되어야 하는 업무에서 시작하세요
‘오프라인에서 작동’이라는 표현은 유용한 요구사항으로 삼기에는 너무 넓습니다. 기록 시작, 메모 수정, 저장된 일정 확인, 정보 내보내기처럼 계속 사용할 수 있어야 하는 구체적인 작업을 정하세요. 연결이 복구될 때까지 기다려도 되는 작업도 결정하세요.
인터페이스는 이러한 구분을 이해하기 쉽게 보여줘야 합니다. 사용자는 작업이 로컬에 저장되었는지, 다른 시스템으로 전송되었는지, 아직 조치가 필요한지 알아야 합니다. 로딩 표시만 보고 추측하게 하지 마세요.
데이터가 있어야 할 위치를 결정하세요
로컬 저장은 소유권과 복구에 관한 질문을 바꿉니다. 백업이 있나요? 기기를 잃어버리거나 교체하면 어떻게 되나요? 다른 곳에서 쓸 수 있는 형식으로 데이터를 내보낼 수 있나요? 앱을 삭제한 뒤 어떤 복사본이 남나요?
이러한 결정은 제품의 실제 동작 및 개인정보 안내와 일치해야 합니다. ‘오프라인’이라고 해서 모든 기능이 네트워크를 사용하지 않는 것은 아닙니다. 외부 지도, 지오코딩, 지원 메시지, 사용자가 선택한 내보내기는 별도 데이터 흐름을 만들 수 있습니다.
충돌 이후의 처리를 계획하세요
나중에 기록을 서버와 동기화한다면 두 기기에서 같은 정보를 수정했을 수 있습니다. 어떤 버전을 채택할지 정하는 규칙과 예상치 못한 결과에서 복구할 수 있는 명확한 방법이 필요합니다.
중복, 지연, 전송 중단도 고려해야 합니다. 여러 번 누른 동작이 사용자 모르게 금융 작업이나 운영 작업을 반복해서 실행해서는 안 됩니다. 정확한 해결책은 제품 데이터 모델과 관련 시스템에 따라 달라집니다.
권한 선택을 설명하세요
위치 기능은 특정 작업을 위해 제공되어야 하며 권한이 거부되어도 예측 가능하게 동작해야 합니다. 알림은 진행 중인 활동을 이해하는 데 도움이 되어야 합니다. 사용자는 Android 내부 구조를 몰라도 선택이 무엇을 바꾸는지 이해할 수 있어야 합니다.
권한이 거부된 경우의 경로도 설계에 포함하세요. 수동으로 할 수 있는 작업이라면 그 방법을 쉽게 찾을 수 있게 하세요. 기능을 사용할 수 없다면 필요한 시점에 한계를 설명하세요.
상태 전환을 검증하세요
네트워크를 끈 상태에서 앱을 실행하는 것만 확인하지 마세요. 작업 도중 연결이 끊기거나, 지연 후 복구되거나, 앱이 보이지 않는 동안 연결이 바뀔 때도 확인하세요. 앱 재시작, 내보내기 중단, 사용자의 이전 기록 수정도 고려하세요.
검증은 핵심 경로와 그 위험을 따라야 합니다. 빌드 성공은 컴파일에 관한 유용한 증거이며, 기기에서의 동작은 별도로 입증해야 합니다.