오늘하루열지 않기 구현에 있어 질문드립니다.

조회수 518회

원하는 동작이

오늘하루열지않기 체크 후 다시 로드하면 체크한날과 현재날짜가 같으면 X 다르다면 0 입니다.

현재 구현상태는 체크시 프리퍼런스에 체크한날짜를 저장하고 다시 로드하면 메인에서

프리퍼런스날짜와 현재날짜를 비교하여

compare 값에 따라

if( comapre==0){

show( );

}else if( compare < 0){

dismiss( );

}

else if( compare > 0{

dismiss( );

}

이렇게 구현중인데 핸드폰상에서 날짜를 바꾸면 프리퍼런스에서 저장한값과 달라서 compare값이 바뀌면서 compare 0이 타야되는데 계속

compare값이 0으로 찍혀 팝업이 게속 사라지게나오네요.

1 답변

  • 체크한 날짜를 저장하기보다는 팝업을 언제까지 안 열고 꺼놓을지 (즉, 그 시점이 지나면 팝업이 열려야 하는) 시점을 저장하세요.

    1. "오늘 하루 팝업 열지 않기"를 체크하면 오늘 날짜를 받아온 다음 23:59까지 붙여 (datetime 타입으로 만들어) 프리퍼런스에 popup_dismissed_until이란 이름으로 저장합니다.
    2. 다시 로드할 때 그냥 다음과 같은 로직으로 팝업을 띄울지 말지 결정합니다.
    // 오늘 23시 59분이 오기 전까지는 팝업 끄기
    if (현재시각 <= modal_dismissed_until) {
        dismiss();
    
    // 그 조건을 충족하지 않으면 웬만하면 보여주기
    // (modal_dismissed_until 값이 없거나 하는 경우)
    } else {
        show();
    }
    

    + 의견을 덧붙이자면 "사용자가 기기에서 굳이 날짜를 변경한다" 같은 시나리오는 매우 특수한데다가 고려 사항이 되기 어려운 시나리오 같습니다. 사용자 입장에서는 오늘 하루만 팝업을 보기 위해 두 가지 선택(체크를 한다 / 설정에 들어가서 기기 날짜를 굳이 바꾼다)이 있는데 전자가 잘 작동한다면 굳이 더 귀찮고 복잡한 후자를 선택하지는 않겠지요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)