본문 바로가기

Android

CleanArchetecture https://academy.realm.io/kr/posts/clean-architecture-in-android/ Presentation 레이어 -> Data-> domain -> entity Presentation layer 로직과 관련된 레이어 Data layer 네트워크, 로컬 db에서 데이터 가져옴 Domain layer 사용자의 유스케이스로 분리 Entity layer 사용자 개념 정의 의존성은 안쪽으로만 발생해야 한다. Entity레이어가 의존성이 낮다 더보기
ComponentArchitecture LiveData liveData는 식별 가능한 수명 주기 인식 데이터 홀더 클래스. UI코드는 LifecycleOwner와 연결된 기본 데이터의 변경사항을 구독하고 수명 주기가 활성상태 인 동안 관찰자가 데이터에 대한 업데이트를 가져옴 LifecycleOwner가 제거될 때 관찰자가 제거됨 LifecycleOwner가 구성변경으로 인해 다시 시작되거나 백스택에서 다시시작되는 경우 관찰자가 최신 데이터를 가져옴 메모리 누수를 일으키는 많은 경로를 제거할 수있음 충돌방지 Lifecycler수명주기 소유자와 연결된 많은 리스너에 의해 관찰가능 ViewModel ViewModel Activity또는 Fragment 에 대한 UI데이터를 포함하는 도우미 클래스 이며, UI컨트롤러 로직과 데이터 보기 소유권을 분리.. 더보기
[안드로이드 개발기간] gcm menifest 설정 용어정리용어정리 - senderID : developer console에 들어가서 Project Number이다. - Sender AuthToken = 서버 키 라고도 불리며, 우리 서버가 gcm서버를 요청할 때, 자신의 서버키를 등록하는 것이다. 유출되지 않도록 보안에 신경을 써야한다. - Registration Token : Gcm Server로부터 앱이 발급받은 ID - Application ID = manifest에 등록된 앱의 pakage명 menifest설정 1. permissin 4개 설정2. receiver 설정 Permission 정의wake.Lock 폰이 꺼져있을때 키는 permission googleplayservice가 메세지를 날릴때, c2dm.permission.RECEIVE퍼미.. 더보기
[안드로이드 개발기간] request만들기 안드로이드 서버와 request 필요한 클래스는 - NetworkManager = 네트워크 연결과 관련된 설정 - NetworkRequest = request를 보내기 위한 설정 - AbstractReqeust = request를 쉽게 하기 위한 추상클래스 실제 request를 만들때는 abstractrequest에 설정된, http,https통신과 host,port 세팅을 해주고 Httpgetbaseurl 메소드는 일반 Httpsgetbaseurl 은 https메소드를 만들어 준다. 그리고 gson파싱과 타입토큰에 대한 메소드를 AbstractRequest에 T타입으로 만들어주고 AbstractRequest 를 상속받아서 구현을 해준다. request를 만들때 해당되는 data클래스를 new TypeT.. 더보기
[25일차] 채팅 User Data 클래스를 만든다. MessageListRequest Abstract 리퀘스트 상속 NetowrkResult 제네릭 타입. 드드드드드득득득득득득ㄱ득득득득득득득득득득득득득드귿귿귿귿귿귿귿귿귿귿귿귿귿귿귿그득득득득드귿귿귿그득득득ㄷ그 TypeToken gson에서 타입토큰을 넘겨줘야한다. TypeToken 설명 - https://brunch.co.kr/@elijah17/17 DAte를 받아야하는데 날짜를 형식으로 바꿔 주려면 SimpleDateFormat 클래스를 사용한다. SimpleDateFormat 설명 - http://ontent provider loadermanager Service로 구현 한다. push로 메세지를 수신할 때,topic 으로 gcm을 수신한 것이 아니기 때문에 디폴트로 .. 더보기
[25일차]페이스북 로그인 연동 오늘은 마지막으로 채팅할건데 이거 하기 전에 오늘부터 프로젝트 들어갈거다. 예제페북로그인에 성공하면 로그인한 토큰을 먼저 얻는다. 서버에 값을 저장하는건 아니다. 저걸 가지고 페북에게 정보를 요청하고, 받은정보를 저장하는 거지, 지금 얻은 토큰은 저장하면 안된다.서버의 규격서를 확인한다. 사용자가 서버에게 요청했을 때의 결과로써 로그인 성공, 페북 회원가입이 안되었을때, 로그인 실패했을 때 세가지 분기로 나뉜다.(규격서에 나와있는대로 회원가입되었을 때는 code 1, 안되었을 때는 code 3, 아예 실패했을 때는 code 2이다.)규격을통해 데이터를 하나 만들어주었고, User데이터에 facebookId를 추가해주었다. FacebookLoginRequest를 추가해주었고, 세가지 결과가 올 수 있기 때.. 더보기
[24일차]구글 GCM 메카니즘 푸쉬는 뭐냐면 클라이언트 서버가 있으면 지금까지는 클라이언트가 서버에게 요청하면 그거에 응답하는 방식이었다. 이것은 클라이언트 - 서버 방식이라 한다. 서버가 클라이언트에게 먼가 를 noti해야하는 경우가 생길때 , 이런것들을 처리 할 방법이 없다. chatting 서버가 따로 있다. 그렇게 서버랑 클라이언트가 둘다 클라이언트로 채팅서버와 연결되어있는 것이다. 이게 푸쉬다 GCM은 단말이 있으면 구글 플레이 클라이언트가 채팅 서버에 연결 되있고 채팅서버는 GCM 서버가 연결되어있다. 5222번 포트로 서버로 접속해서 사용되며, 연결된 후 에는 xmpp로 gcm과 클라이언트가 xmpp로 p2p로 직접연결되어 통신ㄴ한다. GCM은 변경사항을 알리는 용도로만 사용한다. 왜냐면 최대크기가 4K밖에 안되니까.. .. 더보기
[24일차] 연동 로그인 페이스북 페이스북 로그인 퍼미션 하나 추가 해야된다. provider+ 앱 ID 페이스북 로그인 메카니즘 페이스북 로그인 하고 나면 페이스북에 대한 엑세스 토큰을 얻는다. 액세스토큰이라는게 여기 접근하는 key 이다. 인증 값이 있으면 누가 접근했는지 알 수 있다. 그래서 그 토큰을 내 서버에 넘기고, 페이스북으로 넘기면 누군지 알 수 있다. 페이스북 로그인 연동 토큰을 획득한다 인증값 앱에서 서버로 토큰을 보내고 서버에서 다시 페북으로 토큰을 보내서 인증을 하는거페북 아이디만으로 한다면 보안에 문제가 생김 그래서 access_token을 통해 사용자 정보를 얻는다페북 id로 내 db의 id를 확인한다. db에 id가 있는 경우 - 사용자가 이미 가입을 한 경우 db에 id가 없는 경우 - 사용자가 서비스에 가입.. 더보기
[23일차]페이스북 로그인 실습 페이스북 로그인 페이스북 개발자에서 앱 생성한다. 그리고 openssl 티아카 소모임 에서 다운 받은 다음에 환경변수 설정해서 그거 cmd로 실행시켜보고 끈다. 그리고 앱 만들어서 그대로 grdle설정하고 그대로 따라 하면 된다. 그리고 해쉬 키는 java key tool을 설정해서ㅓ한다. 그러면 로그인이 된다. 그리고 로그인 버튼 커스텀을 할 때는 버튼을 만들어 주고 resultAcitivity 로 호출해서 한다. 로그인 상태를 가지고 있는 애가 ACCess 토큰인데 얘가 있으면 로그인상태고 없으면 로그아웃 상태 이다. 토큰은 AccessToken = getInstance() 머시기 해서 얻어 올 수있다 그렇게 토큰에 상태에 따라서 버튼을 바꿔주고, Tracker라는 객체로 버튼이 바뀌면 상태를 알 수.. 더보기
[23일차] 페이스북 Oauth 페이스북 로그인 메카니즘 액세스 토큰을 보면 어떤 앱에서 누가 보는 지 알 수 있다. 로그인 요청할때 서비스의 앱 id를 같이 보낸다. 앱이 글을 쓰는데 어떤 사용자가 쓴 글인지 알면된다. id pw 는 누가 받았냐면 페이스북이 받았기 때문에 알수없다. 로그인 창을 페이스북에서 띄우고 인증되면 코드를 서비스에 보내고 토큰 요청을 하면서 앱의 id를 같이 보낸다. 그러면 토큰을 발급해준다. Permission이라고 한다. 페이스북은 scope라고 한다. 내가 사용자 정보를 보는 기능, 뭐 여러 기능들이 있다. 승인하면 그때 코드를 보낸다. 한번 발급 받으면 액세스 토큰을 계속 썻다. 일정 시간이 지나면 Access토큰이 만료된다. 이런 기술을 Outh다 라고 부른다. 로그인을 사용해서 하는 서비스이면, 다.. 더보기