/images/profile_no_background.png

김영천 블로그

카카오톡, 네이버 인앱 브라우저 호환성 문제

카카오톡, 네이버 인앱 브라우저 호환성 문제

개요

카카오톡, 네이버와 같은 앱에서는 인앱 브라우저를 지원합니다(안했으면 좋겠다). 다만 웹표준을 완벽하게 지키는 것은 아니고 Notification, Geolocation같은 일부 API를 지원하지 않습니다. 만약 이를 고려하지 않고 firebase의 getMessaging같은 함수를 앱 init 단계에서 사용한다면 의도치 않은 오류가 발생하여 앱이 제대로 동작하지 않을 수 있습니다.

google ID 토큰 콘텐츠 팁

구글의 ID 토큰 콘텐츠는 인증한 사용자의 정보를 간단하게 보여줍니다. 이 중 sub 필드는 인증한 사용자의 고유한 ID 값인데, 이 값은 aud 필드의 값이 달라도 인증한 계정이 동일한 구글 계정이라면 sub 필드는 항상 동일한 값을 반환합니다. 심지어 서로 다른 GCP 프로젝트를 통해 인증해도 동일한 구글 계정이라면 동일한 값을 반환합니다.

타입스크립트 import 절대경로로 설정하기

타입스크립트 개발을 하다 보면 import 구문이 절대경로가 아니라 상대 경로로 포함되는 경우가 있습니다.

1
2
3
import { MY_MODULE } from '../../../../my_module'; // incorrect

import { MY_MODULE } from 'src/modules/my_module'; // correct

import 구문을 절대 경로로 포함하길 원한다면 tsconfig.json 파일의 compilerOptions 속성 내부에 baseUrl 속성을 지정하면 됩니다.

TTL vs TTI

Spring 환경에서 로컬 캐시를 위해 많이 사용되는 Ehcache는 캐시 유효 시간 설정을 위해 다음과 같은 옵션을 제공합니다. [공식 문서]

No Expiry

캐시가 절대 만료되지 않고 무한히 유지됩니다.

TTL (Time To Live)

캐시된 객체가 지정된 시간동안 유효하고, 지정된 시간이 지나면 만료됩니다.

Android WebView에서 firebase Auth 오류 해결하기

증상

안드로이드에서 WebView 기반 앱을 개발하고 있습니다. 대부분의 기능을 웹뷰에 의존한 형태의 단순한 앱이고, 웹뷰는 Angular, Firebase 조합의 코드가 동작하고 있습니다. 사용자 인증 관련 기능은 Firebase의 Auth를 사용하였는데, 특정 조건에서 onAuthStateChanged 함수가 동작하지 않는 문제가 발생하였습니다. 해당 조건은 다음과 같습니다.