마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

점검중입니다를 띄우는법(부탁드립니다 .ㅠㅠ)

0 추천
제가 웹으로 만드는 어플을 제작하고 있는데

웹이다보니 업데이트를 할때는 앱을 잠시 점검중이라면서 닫아야하는데

혹시 어떤식으로 해야할까요? ㅠㅠ
분발하는자 (1,190 포인트) 님이 2016년 1월 11일 질문

1개의 답변

0 추천
우선 현재 업데이트중이라는 상태를 알수 있는 서버를 하나 둬야하구요

초기 스플래시화면을 띄울때 서버로부터 업데이트 진행중 여부를 체크하여

업데이트 창을 띄우던지 하시면 됩니다.
모나미153 (17,540 포인트) 님이 2016년 1월 11일 답변
서버는 하나두었습니다 ㅠㅠ 혹시 더 자세하게 알려주실 수 있나요 부탁드립니다
앱에서 특장 url을 호출합니다.
그 url은 현재 업데이트중인지 여부를 Y 또는 N값으로 줍니다.
값이 Y이면 업데이트창을 띄우고
값이 N이면 띄우지 않으시면 됩니다.
좀 더 자세히 알려드리면
HttpUrlConnection 등으로 특정 URL을 호출합니다.
해당 URL은 텍스트값으로 Y를 주던지 N을 주던지
아니면 JSON형태로 데이터를 주시던지 결정하시면 됩니다.
해당 커넥션으로 스트림을 연 후
텍스트 혹은 JSON을 읽어서 값에 따라서 처리해 주시면 됩니다.
그 값은 서버쪽에서 상시 바꿀수 있는 값이구요.
혹시 서버란게 카페24를 통해서도 가능한가요??
혹시 자세한 도움 부탁드릴 수 있을까요 ㅠㅠ 진짜
부탁드립니다
url 요청이 가능하고
해당 url이 돌려주는 결과값을 수정할 권한이 있다면
어디든지 가능합니다..
void DownloadData() throws IOException {
        URL url = new URL("http://xxxx.xxx/xxx.png");
        URLConnection con = url.openConnection();
        HttpURLConnection exitCode = (HttpURLConnection)con;
        if (exitCode.getResponseCode() == 200 ){

        }else if(exitCode.getResponseCode() == 400 ){
            Intent intentSubActivity = new Intent(Main.this, Main2.class);
            startActivity(intentSubActivity);
            finish();
        }
    }

제가 이상하게 한 부분이있나요??
exitCode.getResponseCode() == 200 인경우
getInputStream등으로 스트림을 얻은 다음
해당 스트림에서 데이터를 읽으면 됩니다.
그러면 Y N 아니면 다른 값들이 들어 있겠죠?
여기서 나오는 값이 업데이트 여부를 설정한 값이면 ㅑ되구요.
읽은 값에 따라서 처리를 해 주시면 되는겁니다.
BufferedReader bufferedReader = new BufferedReader(newInputStreamReader(exitCode.getInputStream()));
       
            if((boolean)bufferedReader == 'y'){

            }else{
                Intent intentSubActivity = new Intent(Main.this, Main2.class);
                startActivity(intentSubActivity);
                finish();
            }

ㅠㅠ 혹시 제가 또 틀린게 있나요 ㅠㅠ 아예 buffer에서 밑줄이 그어지네요 ㅠㅠ 계속질문해서 죄송합니다
우선 ... 버퍼리더에서 데이터를 읽을때는 read() 혹은 readLine()명령어를 사용합니다.
bufferedReader 자체를 boolean값으로 형변환 할수 없으며
그리고 'y' 값은 string값이지 boolean값이 아닙니다
boolean은 true, false값이죠.
BufferedReader bufferedReader = new BufferedReader(newInputStreamReader(exitCode.getInputStream()));
            String bufes = bufferedReader.readLine();
            if(bufes == "Y"){

            }else{
                Intent intentSubActivity = new Intent(Main.this, Main2.class);
                startActivity(intentSubActivity);
                finish();
            }

네그래서 이런식으로 바꾸어봤는데 작동을 안하네요 ㅠㅠ
위에서 요청한 url이 y값을 정상적으로 주는지 확인해 보시고. .
스트링 비교는 ==가 아니라 String.equals(string) 으로 합니다 ..
URLConnection con = url.openConnection();
        HttpURLConnection exitCode = (HttpURLConnection)con;
        if (exitCode.getResponseCode() == 200 ){

            BufferedReader bufferedReader = new BufferedReader(newInputStreamReader(exitCode.getInputStream()));
            String bufes = bufferedReader.readLine();
            if(bufes.equals('Y')){

            }else{
                Intent intentSubActivity = new Intent(Main.this, Main2.class);
                startActivity(intentSubActivity);
                finish();
            }
        }else if(exitCode.getResponseCode() == 400 ){
            Intent intentSubActivity = new Intent(Main.this, Main2.class);
            startActivity(intentSubActivity);
            finish();
        }

ㅠㅠ 애초에 200이란값이 안나오는걸까요??
해당 url을 익스플로러나 크롬등 웹브라우져에서 실제로 호출했을 때
값이 정상적으로 화면에 표시되는지 먼저 테스트를 해 보셔야 할것 같네요.
지금 상황으로는
HTTP_OK인데 데이터가 없는건지
아니면 연결 자체가 실패하는건지 알 수 없습니다.
아 3일째 해결을 못하고 있네요 ㅠㅠ 혹시 도옴줌 주실 수 없을까요 ㅠㅠ
순서대로 한번 진행해보세요.

1. 커넥션 맺을 url을 웹브라우져(크롬, Ie..)등에서 직접 들어가 봐서 값을 확인
2. 안드로이드 앱 단에서 해당 url과 커넥션을 맺어서 200이 나오는지 확인(디버그 등으로)
3. readLine 호출 후 들어있는 값 확인
...