10.6 (화) ~10.7 (수)
소셜 로그인 sdk를 우리 프로젝트에서 편하게 사용할 수 있도록, 모듈화 작업을 진행하고 있다.
KakaoLoginManager, NaverLoginManager 등 Manager 클래스를 만들어 놓고 관리하려고 한다.
Kakao sdk의 경우 문서가 정말 친절히 잘나와 있었다. 심지어 rx로 구현되어 있는 부분도 있어서,
모듈화하는데 크게 어려움이 없었다.
하지만, Naver sdk의 경우는 문서가 친절한 편이 아니었다.
심지어 sdk 코드를 확인하니, asynctask를 이용해서 비동기 처리를 하고 있었다.
android 11버전 부터는 asynctask가 deprecate된다.
이에 따른 조치가 필요한데, 포럼에 질문을 올려도 대답이 없다.
필수 권한 체크 또한 사용자가 맘대로 해제가 가능해서, 이에 따른 조치를 별도로 해줘야할 것 같다.
* 프로젝트 기획상 ci 값이 필요한데(휴대폰 본인인증값 등) 네이버 아이디 로그인 서비스에서 ci 제공 제휴를 진행하지 않는다고 한다. 그렇기에 naver 소셜 로그인을 잠시 보류하기로 했다.
10.8 (목)
페이스북 로그인 sdk 모듈화를 진행했다.
페이스북 개발 문서를 확인 후, 샘플 예제를 따라서 진행했다.
페이스북 sdk는 rx로 구현된 소스 코드가 존재하지 않았다.
그리고 콜백 인터페이스를 등록해서 로그인을 진행했다.
github에서 페이스북 sdk를 이용해서 rx로 구현한 코드를 찾아보았다.
참고할 만한 소스를 찾아서 아래와 같이 구현해보았다.
private fun initLogin(
activity: Activity? = null,
fragment: Fragment? = null,
readPermissions: Collection<String>,
publishPermissions: Collection<String>?
): Single<FacebookOauthToken> {
return Single.create<FacebookOauthToken> { emitter ->
loginManager.registerCallback(callbackManager, object : FacebookCallback<LoginResult> {
override fun onSuccess(result: LoginResult) {
emitter.onSuccess(result.accessToken.parse())
}
override fun onCancel() {
emitter.onError(Exception("Cancelled Facebook Login"))
}
override fun onError(error: FacebookException) {
emitter.onError(error)
}
})
initPermission(activity, fragment, readPermissions, publishPermissions)
emitter.setCancellable {
loginManager.unregisterCallback(callbackManager)
}
}
}
Single을 이용해서 스트림을 만들어주고, 콜백에 따라서 스트림에 받아온 데이터를 흘려보내줬다.
그리고 이 데이터는 엑티비티나, 프래그먼트에서 구독하여 받게 처리했다.
아직 rx가 미숙한데, 다른 사람 코드를 참고해서 조금씩 수정해 나가는 게 재미있었다.
10.9 (금)
사이드 프로젝트인 헬로프라이스의 figma가 ios 버전이 나왔다.
android 버전은 이번주말에 올려주신다고 해서 기다리고 있는데,
일단 로그인 화면 부터 만들어보려고 한다.
로그인은 카카오 로그인과 구글 로그인이 들어갈 예정이다.
기존에 모듈화해 놓았던 카카오 로그인 부분을 가져다 쓰고, 구글 로그인 부분을 모듈화 진행하면 될것 같다.
화면에 로티 부분이 들어가게 되는데, 이번기회에 한번 사용해볼 수 있을 것 같다.
10.10 (토) ~ 10.11(일)
사이드 프로젝트 진행 중 다크모드에 대해서 공부를 해보았다.
안드로이드 10(Q) 버전 이상 부터 다크모드를 권장사항으로 발표했다.
우리 헬로 프라이스 앱은 신규 프로젝트이기에, 다크 모드를 적용하면서 화면을 설계해 나가면 되기에 어려움을 없을 것 같다.
다크모드를 위해서 style을 아래와 같이 설정을 해주었다.
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
그리고 시스템 모드에 따라서 다크모드인지, 라이트 모드인지 식별 후 반영할 수 있도록, 리소스 폴더를 분리했다.
color의 경우 values-night/colors를 만들어서 같은 이름으로 적용하면 다크모드일 때 해당되는 리소스가 적용이 된다.
drawable의 경우 drawable-night 리소스 폴더 안에 같은 이름으로 적용한 drawable 파일이 존재할 경우 다크 모드일 때 해당되는 리소스가 적용된다.
문서를 모두 읽어 봤을 때 조금 난해한 부분이 있었지만, 다크모드를 적용하면서 조금씩 더 알아가보겠다.
'라이프 > WIL' 카테고리의 다른 글
[WIL] 23.04.24 ~ 23.04.30 (0) | 2023.04.24 |
---|---|
[WIL] 20.6.01 ~ 20.6.07 (6월 1번째) (0) | 2020.06.07 |
[WIL] 20.5.18 ~ 20.5.24 (5월 4번째) (0) | 2020.05.23 |
[WIL] 20.5.11 ~ 20.5.15 (5월 3번째) (0) | 2020.05.13 |