아무도 없는 회사... 배고프다..
이번에 Task로 소셜 로그인 UI개선 업무를 맡았다. 내용으로는
인데 뭐 쉽겠지 라는 생각을 갖고 키보드에 손을 올리는 순간 선채로 죽어버렸ㄷ..
일단 왜 굳이 변경을 하냐라고 생각할 수 있지만 애플은 진짜 왜그러는지 모르겠지만 ios 환경에서 자기들 로그인이 보이지 않으면 심사가 안될 수도 있다.
AOS에서 구글은 안그러는 이런건 애플 정말 별로다...
추가로 국가별로 그 언어를 쓰는 사람들이 주로 사용하는 소셜 로그인이 정말 확연하게 차이가 났다.
예를 들어 라인 로그인이 없이 일본앱에 출시하게 된다면 정말 가입율이 떨어지는걸 확인 할 수 있다. 각 나라마다 정말 확연한 차이를 보여줬다. 일본은 라인 로그인
이 필수적으로 화면의 윗쪽에 보여야하고 한국은 카카오톡
, 미국은 구글/애플 로그인
이 주된 소셜 로그인 방법이었다.
하지만 추후에 회사에서 중국 쪽 진출을 위해 코드 수정이 용이하게 로직을 작성하고 싶은 마음이 이번 Task에선 좀 컸다.
아무래도 나중에 추가하기 위해서 좀 유연하게 작성을 할 필요가 있었다. 내가 원하기도 했고.
나에게만큼은 쉽지 않은 일이었지만 아래와 같이 작성해봤다.
export default function App() {
const PROVIDERS = {
ko: {
ios: [
["kakao", "apple", "google", "email"],
["facebook", "line"]
],
aos: [
["kakao", "google", "email"],
["facebook", "apple", "line"]
]
},
en: {
ios: [
["google", "apple", "facebook", "email"],
["line", "kakao"]
],
aos: [
["google", "facebook", "apple", "email"],
["line", "kakao"]
]
},
ja: {
ios: [
["line", "apple", "google", "email"],
["facebook", "kakao"]
],
aos: [
["line", "google", "email"],
["facebook", "apple", "kakao"]
]
}
};
const TEST = {
google: "google",
line: "line",
kakao: "kakao",
email: "email",
apple: "apple",
facebook: "facebook"
};
const SIGN_IN_METHOD = {
'google': (
<React.Fragment key='google'>
<SignInWithGoogle />
<VerticalSpacer size={8} />
</React.Fragment>
),
'line': (
<React.Fragment key='line'>
<SignInWithLine />
<VerticalSpacer size={8} />
</React.Fragment>
),
'kakao': (
<React.Fragment key='kakao'>
<SignInWithKakao />
<VerticalSpacer size={8} />
</React.Fragment>
),
'email': (
<React.Fragment key='email'>
<SignInWithEmailLargeButton />
<VerticalSpacer size={8} />
</React.Fragment>
),
'apple': (
<React.Fragment key='apple'>
<SignInWithApple/>
<VerticalSpacer size={8} />
</React.Fragment>
),
'appleForAos': (
<React.Fragment key='appleForAos'>
<SignInWithAppleForAndroid/>
<VerticalSpacer size={8} />
</React.Fragment>
),
'facebook': (
<React.Fragment key='facebook'>
<SignInWithFacebook
/>
<VerticalSpacer size={8} />
</React.Fragment>
)
};
let result;
if (language === "ko") {
if (platform === "ios") {
result = PROVIDERS.ko.ios;
} else {
result = PROVIDERS.ko.aos;
}
}
if (language === "en") {
if (platform === "aos") {
result = PROVIDERS.en.aos;
} else {
result = PROVIDERS.en.ios;
}
}
if (language === "ja") {
if (platform === "aos") {
result = PROVIDERS.en.aos;
} else {
result = PROVIDERS.en.ios;
}
}
return (
<div className="App">
<ul>
{result[0].map((provider) => (
<li>{SIGN_IN_METHOD[provider]}</li>
))}
</ul>
<ul>
{result[1].map((provider) => (
<li>{SIGN_IN_METHOD[provider]}</li>
))}
</ul>
</div>
);
}
참고) 배열이 2개인 이유는 메인화면(1순위)과 모달창(2순위) 두개에 들어가기 때문에 그렇다.
result
값을 만들어놓는다.langauge
로 체킹하고 platform으로 ios인지 aos인지 체킹을 한다.아주 잘나온다.
음 오늘따라 배고픈 와중에 맛있는 글이였어요! 정말 잘 나오는군요!