Simple&Natural

[해결중] 네트워크 작업 요청 제한하기 본문

안드로이드(Android)/이슈 및 해결

[해결중] 네트워크 작업 요청 제한하기

Essense 2020. 11. 8. 19:23
728x90

현재 진행중인 프로젝트는 실제 서비스를 목표로 만들고 있다.

그러다보니 연습용 프로젝트와는 달리 사용자들의 예상치 못한 조작에도 폭넓게 대응할 수 있어야 한다.

 

이번 이슈는

사용자가 고의로 네트워크 작업을 과도하게 요청할 때 이를 막을 수 있는 방법에 대한 고민이다.

 

현재 특정 API를 이용하여 데이터를 불러오고 있다.

이때 API를 제공하는 쪽에서 초당 1회로 트래픽을 제한하고 있기 때문에 내 경우 자동으로 3초마다 업데이트 되도록 설정을 해놓았다.

그러나 현재 데이터를 요청하는 ViewModel이 파괴되고 다시 만들어지면 3초 이내라도 여러 번 요청이 가능하다.

예를 들어 사용자가 고의적으로 BottomNavigationItem을 여러 번 클릭하는 행위를 하는 경우를 가정할 수 있다.

이렇게 되면 API 엔드포인트 쪽에서 트래픽 제한이 걸리므로 앱이 제대로 동작하지 않는 문제가 생긴다.

 

이걸 해결할 수 있는 방법으로 여러가지가 있을텐데 가장 효율적인 방법에 대해 고민중에 있다.

1. 현재 있는 nagivation item을 클릭하면 이벤트를 무시 

-> bottomNavigation에 onItemReselectedListener를 달아서 구현이 가능하긴 하나,

사용자가 다른 item을 클릭하고 다시 오면 무용지물

 

2. 데이터를 처리하는 ViewModel을 Fragment가 아니라 Activity에 연결

-> 현재 고려중, 다만 이 경우 특정 Fragment에서만 사용하는 데이터 작업을 Activity LifeCycle에 따라 처리되는 문제가 있다. 결국 싱글톤으로 데이터를 관리하는 것과 다름이 없기 때문.

 

3. API를 재호출하는 동작까지 1초 이상이 걸리도록 구현

-> Fragment 내부를 뷰페이저로 나누고 첫 페이지에서 스크롤을 해서 넘겨야 api를 호출하는 방식을 고민중이다.

이 경우 대부분 조작시간이 1초 이상이므로 가능할 것 같다. 다만 그렇게 되면 구현을 위해 화면 기획을 바꾸어야 하는

주객전도? 의 문제가 발생해서 이런 방식을 보류중이고 다른 방법을 이용해 조작시간을 확보해야 할 것 같다.

728x90