안드로이드에서 자바스크립트 사용하기(보안이슈)

안드로이드에서만 작동하는 네이티브 앱의 경우는 알 수 없다.

다만 내가 웹을 위주로 개발을 하다보니…

안드로이드의 경우에도 모바일 앱이 아닌 모바일 웹인 경우가 많다.

즉, 화면만 모바일 기기로 보는 것일 뿐, 안에 내용은

일반적인 웹 서비스이다.

다만 모바일로 보기 위하여 WebView 라는 클래스의 도움을 받아

화면에 뿌려줄뿐…

여기서 문제가 발생한다.

웹 서비스의 경우 대부분 javascript 로 구성되어져있다.

안드로이드 환경에서 모바일 웹을 구현 할때에는

웹 서비스 URL 의 경우 h ttps(SSL)이 기본으로 되어 있어야만

javascript 를 사용할 수 있다.

※ 물론 예외는 있다.

SSL 이 적용 되지 않은 웹 서비스는 모바일 웹 어플리케이션을

개발 할 수 없다는 말인가..?

그것은 아니다.

@Javascritp 라는 어노테이션을 이용하여 다음과 같이 구현 할 수 있다.

MainActivity.java

//javascript 사용여부 true
mWebView.getSettings().setJavaScriptEnabled(true);
//웹서비스 <-> 안드로이드간 통신할 클래스 및 객체명 정의
mWebView.addJavascriptInterface(new WebBridge(), "android");

 

MainActivity.java

아래와 같이 기기 고유 ID 와 Push 메시지를 보낼 때 필요한 토큰 값을 return 받는

메소드를 정의하여 준다.

public class WebBridge{
    @JavascriptInterface
    public String getPhoneId(){
        return Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID);
    }

    @JavascriptInterface
    public String getToken(){
        return FirebaseInstanceId.getInstance().getToken();
    }
}

 

모바일 웹서비스에서 호출 방법은 간단하다.

아래와 같이 사용하면 위에서 정의한 phoneId 와 token 값을 확인 할 수 있다.

//모바일웹과 일반웹을 구분하기 위함
if(window.android){
	alert(window.android.getPhoneId());
	alert(window.android.getToken());
}

물론 위와 같이 사용하였을 경우 일반적인 웹 서비스에서는 window.android 객체를

찾을 수 없기 때문에 실행되지 않지만, 모바일 웹에서는 정상 작동한다.


위와 같이 작업을 마치고 APK를 생성한 다음 Google Play Console 에 등록하면..

이상한(?) 메일을 받아 볼 수 있다..

설명을 보면…

상세사유와 수정해야 할 APK 버전, 그리고 수정 마감일(?)이 날아온다.

어플리케이션을 등록 해본 적이 처음이라 주의 사항 같은건가. .싶어서 넘어갔었는데..

수정마감일이 지나면, 구글플레이에서 등록한 어플리케이션이 등록 취소 된다.

즉, 다운 로드 받을 수 없는 상황이 발생되기 때문에…

사용자가 많은 어플리케이션의 경우 큰 타격을 입지 않을까 싶다.

하여 처음에는 Webview에서 URL을 호출 할때 http -> https 로 변경한 후

어플리케이션을 등록해보았다… (테스트 할 당시 캐시 문제인지 정상작동..ㅠㅠ)

//이전버전
//mWebView.loadUrl("http://esoclan.com");
//임시변경
mWebView.loadUrl("https://esoclan.com");

절대.. 네버.. SSL 이 등록되어 있지 않다면, 위와 같은 실수는 할지 말 것..!

웹어플리케이션을 실행해보면, 흰 화면만 나오고.. 아무것도 진행이 안된다;;

물론 SSL 처리가 되어있다면 위와 같은 방식으로 처리해도 될 지도…?

하지만 SSL 처리가 되어 있었다면… 여기저기 search 할 필요도 없었겠지만..;;

최종적으로 찾은 결과는 아래와 같다.

//javascript 사용여부 true
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(final WebView view, String url) {
        if(url.indexOf("test.php") > -1) {
            String phoneId = Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID);
            String tokenId = FirebaseInstanceId.getInstance().getToken();
            mWebView.loadUrl("javascript: updateInfo('" + phoneId + "', '" + tokenId + "');");
        }
    }
});

javascript 사용여부는 true이고

WebView 클래스의 mWebView 객체에 내장되어 있는

setWebViewClient 클래스를 선언하여 이용한다.

onPageFinished 메소드를 오버라이드 한다.

특정 URL에 해당하면 javascript 명을 호출하여준다.
※ 해당 URL 에서 javascript 메소드가 선언되어 있거나,
선언되어있는 js를 include 해주어야 한다.

이때 javascript 의 인자는 필요한 값을 넘겨주면 된다.


위와 같이 하고 플레이 스토어에 다시 등록하면, 별다른 보안 이슈 메일이 오지 않고,

정상적으로 등록되어 서비스를 이어 나갈 수 있게 된다.

0 글이 마음에 드셨다면 하트 꾸욱~

GTA5 설치/실행 방법!! 2부

지난번 포스팅에 이어 2부…!!

지난번 글은 아래 참조…

GTA5 설치/실행 방법!!

GTA5가 워낙 유명한 게임인데다 무료로 배포함으로써…

다운로드하려는 사용자가 많아 다운 속도가 1Mb/s 조차 나오지 않아…

틈틈히 다운로드를 받아서 최종적으로 100% 완료를 모두 받게 되었다.

에픽게임즈 런처를 실행하고, 라이브러리 클릭 -> GTA5를 클릭해준다.
※ 라이브러리 메뉴에서는 본인이 구매한 게임 리스트를 보여준다.
※ 게임을 바로 실행 할 수는 없고, 별도의 다운로드 과정이 필요하다.
※ 다운로드가 완료된 게임의 경우 실행으로 나타나고, 그렇지 않은 경우에는
설치라고 나타난다.

에픽게임즈에서 2020.05.22(금) 부터 문명6을 무료 배포하기 시작하였다.

무료다운로드(무료구매)기간은 2020.05.22 ~ 2020.05.29 까지이다.

코로나19 영향인지.. 아니면 GTA5 무료로 배포하면서 얻은 마케팅 효과인지…

유명한 게임을 줄줄이 무료 배포하니… 사용자입장에서는 좋을뿐이다.

이야기가 다른 곳으로 새버렸다…

GTA5를 클릭하게 되면

위와 같은 창이 잠깐(?) 나오게 되고

 

게임시 이용할 언어를 선택한다.

 

게임 실행에 필요한 프로그램에 대한 안내가 나오고,

 

라이선스 계약을 잘 읽고..(모..몰라.. 계속하기)

 

설치할 위치를 선택해주고… 계속하기를 눌러주면…

게임 설치가 시작된다.
(다운 받는다고 끝이 아니었다니…)

설치가 완료된다.
(그래도 다운로드 받는 속도에 비하면.. 무척 빨리 되는 편이다.)

닫기버튼을 눌러준다.

 

GTA5 게임 서비스에 연결중…
(에픽게임즈가 아닌 GTA5 게임 개발사 서버로 연결된다.)

업데이트가 이뤄지고, 업데이트가 완료되면 게임일 실행된다(?)

가 아니라..

위와 같은 오류가 발생한다.. 뭐지..ㅠㅠ

게임 한판 하기 힘드네…

오류인즉…

에픽게임즈에 구매내역이 없거나…

다운받은 GTA5가 최신 버전이 아니라는 얘기다..

안내에 따라 하나씩 해보자..

우선 라이브러리로 이동 후 위 버튼을 누른다.

그리고 제품 검사 버튼을 눌러주게 되면…

파일이 정상적으로 다운로드 되었는지 확인하는 과정을 거쳐본다.

다시 게임 실행!!

 

어라? Rockstar Games 에 계정도 만들어줘야하나부다..ㅠㅠ

Rockstar Games 계정을 만들러 출발~!

우측 상단의 계정 생성 버튼을 눌러준다.

라이센스 관련 정책과 계약 내용, 약관을 읽고… 읽고…!! 다음 버튼을 클릭~!
(읽지 않음..ㅎㅎ)

Rockstart Games 에서 사용할 이메일 주소와 비밀번호, 닉네임

그리고 생년월일과 국가를 선택해준다.
※ 비밀번호는 숫자, 대문자, 소문자가 모두 들어가야 다음 단계로 넘어간다.
※ 닉네임에서 한글은 되지 않는 것 같다.. 6자 이상부터 가능하다.)

게임 소식관련을 받을지 말지 선택한다.

어라… 지금보니 선택사항이었네… 해제하러 가야지…

하단의 로봇인지 아닌지를 체크 하고 다음 버튼을 누른다.
이거 할때 시간이 한참 걸렸다…ㅠㅠ

소화전을 선택하라, 신호등을 선택하라, 버스를 선택하고, 차를 선택하라.. 등등

 

프로필정보에 대한 공개 유무를 선택 할 수 있다.

나는 혼자 스토리 모드를 위주로 할 것이기 때문에 나만을 선택하였다.

친구는 알 것 같은데… 조직…?

클랜? 길드 시스템? 약간 그런 류인 것 같은데… 음..

 

담벼락과 통계 역시 나만.. .볼거다…

그리고 계정 생성버튼을 눌러보자~!

그럼 위와 같은 메시지가 나타나게 되고,

계정생성에서 입력하였던, 이메일 주소로 이동하면

Rockstar Games에서 인증 메일이 오게 된다.

이메일 주소 인증하기 버튼을 눌러주고,

위와 같은 창을 확인하였다면, 다시 Rockstar Games 런처로 돌아가서

인증확인 버튼을 눌러준다.

아.. 아직 끝난게 아니다..ㅠㅠ 길다 길어…

처음 GTA5 를 받을 때 사용하였던 에픽게임즈와 계정을 연동할지에 대해 물어본다.

GTA5 외에 다양한 게임을 관리해주는 런처이므로 연동하기를 눌러주었다.

 

클라우즈 저장의 경우 하는게 좋을 것으로 보여진다.

혹여 지금까지 진행한 다양한 스토리와 아이템 획득과 같은 내용을 저장할지 물어보는 것이다.

여기서 지금 활성화하지 않기를 누른다면…

혹여 PC에 문제가 발생하면 다시 처음부터 시작해야되는 상황이 생길 수 있다.

그러므로 클라우드 저장 활성화 를 클릭하여 지금까지 진행한

내용에 대해 저장해두는 것이 좋다.(자동 저장!!)

활성화 버튼을 눌러주게 되면….

드디어…

드디어!!!

GTA5 메인화면을 볼 수 있다..

조금 기다리면 감마 조정 화면이 나타나고

마우스로 Rockstar Games 로고가 보이면서

하단의 색깔(검정—-흰색)이 구분자로 잘 보이도록 조정한 후

확인 버튼을 눌러주거나, 엔터키를 눌러준다.

GTA5 진짜 메인화면…

종료, 설정, 스토리 모드가 있다.

설정에 들어가서 다양한 환경설정을 할 수도 있겠지만..

우선 스토리모드가 정상적으로 작동하는지에 대해 확인하기 위하여 스토리모드

를 클릭해본다.

우측하단에 보면 스토리 모드를 불러오는 중이라고 나타나고..

잠깐 기다리다 보면….

현재 어떤 배경을 기준으로 시작하는지에 대해 로고가 나오고…

스토리모드가 시작하게 된다.

 

에픽게임즈에서 무료로 배포한 GTA5…

스팀 찜목록에도 있었으나… 딱히 너무너무 하고 싶다…!! 라는 느낌이 들지 않아서…

구매하지 않고 있었다가.. 이번에 무료 배포 소식을 듣고 알게된 에픽게임즈 플랫폼..

에픽게임즈에 대한 계정이나 정보가 없는 상태로 포스팅을 작성하게 되었고,

이를 바탕으로…

에픽게임즈 회원가입, 게임 결제(다운) 부터 게임 설치까지 알아보았으며,

상황에 따라(다른 게임은… 또 다를지도..) 게임사에서도 회원가입을 해야 하는 경우..

등 다양한 문제가 발생 할 수 있다.

하지만 하나하나 차근차근 따라하다보면 원하는 게임을 다운 받고,

즐길 수 있지 않을까 싶다.

0 글이 마음에 드셨다면 하트 꾸욱~

나는 원숭이다.

나는 원숭이다.

2020.05.22 카카오톡으로 넘어온 링크..

해당링크를 누르면

나는 원숭이다.

라는 채팅이 쳐진다..

카카오톡 API를 통해 만든 것으로 추정..

해킹과는 무관하다.

문득 궁금하여 테스트용 애플리케이션을 등록하여 개발 시도..

음… 프링향 전용이라는.. 저 애플리케이션 이름이…

안 나오게는 할 수 없는건가..

또한 일반 웹에서의 버튼이 아니라 버튼 자체에 링크가 걸려있어

원하는대로 컨트롤이 되지 않는다.

웹이 아니라.. 앱으로 시도 해봐야 할 듯…?

0 글이 마음에 드셨다면 하트 꾸욱~

2020.05.21 오랜만에 저녁 사진~

오랜만에 저녁 사진~

집근처 마트에서 발견한 초당두부 라는 이름의 두부…

그냥 먹어도 맛있지만…

내가 좋아라 하는 조림식으로~

총각김치는 덜 익었으나 하루정도 바깥에 두었더니 딱 먹기 좋게 아삭아삭~

살짝 부족한 느낌이 들어 급하게(?) 호다닥 만든 감자채볶음~

내가 한건… 없지만… 히히

잘먹겠습니다~

0 글이 마음에 드셨다면 하트 꾸욱~