๋ชจ๋ฐ์ผ ์น์์ ์ฑ ํธ์ถํ๊ธฐ
์ข
์ข
์ฌ๋ฌ๊ฐ์ง ์ด์ ๋ก ๋ชจ๋ฐ์ผ ์น์์ ์ฑ์ ํธ์ถํ๊ณ ์ถ์๋๊ฐ ์์ต๋๋ค.
๋ณดํต ์ด๋ป๊ฒ ํ์๋์?ย
์๋ง๋ ์ฑ์ด ์์ผ๋ฉด ์ฑ์ ์คํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฑ์คํ ์ด๋ก ์ด๋ํ๋๋ก custom URI-scheme์ ์ฌ์ฉํ์๊ณ ์์ ๊ฒ ๊ฐ์๋ฐ์. ์์ดํฐ๊ณผ ์๋๋ก์ด๋์์ ๊ฐ๊ฐ ๋ช๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ด์ ์๋ง๋ ์ฌ์ฉํ์ค๋ ๊ณค๋ํจ์ ๋๋ผ์ค๊ฑฐ๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค.
๊ทธ๋์ ๋ชจ๋ฐ์ผ ์น์์ ์ฑ ํธ์ถ์์ ์์๋์ด์ผ ํ ์ฌํญ์ ๊ฐ๋ตํ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
์์ดํฐ์์๋ custom URI-scheme์ timeout์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด ์ ์๋ ค์ ธ ์์ต๋๋ค.
ย ย setTimeout(function () {
์ฐ์ ์ฑ์ ์คํํด๋ณด๊ณ ์ฑ์ด ์คํ๋์ง ์์ผ๋ฉด ๋ง์ผ์ผ๋ก ์ด๋ํ๋ ๋ฐฉ์์ผ๋ก, ์ฑ ์คํ์์๋ ์คํ ์ด ์ด๋์ด ์ทจ์๋๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ์คํ ์ด๋ก ์ด๋ํ๋๋ก ํ์ด๋จธ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
ํ์ง๋ง ๊ฐ๋ ์คํ ์ด๋ก ์ด๋ํ์๋ timer๊ฐ ์ทจ์๋์ง ์๊ณ , ์ฑ์ด ์์๋ ๋จ๋ ์์คํ
์ผ๋ฟ์ด ๋ฌ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๊ทธ๋๋ ํ์ฌ, ์ฑ์ ์คํํ๊ณ ์ฑ์ด ์๋ ๊ฒฝ์ฐ ์คํ ์ด๋ก ์ด๋์ํฌ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์
๋๋ค :D
๋ฐ๋ฉด ์๋๋ก์ด๋์๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
1. iframe์ embeddingํ๋ฉด์ custom URI-scheme์ ์ฌ์ฉํ๋ ๋ฐฉ์
์์ดํฐ๊ณผ ์ ์ฌํ ๋ฐฉ์์ด์ง๋ง custom URI-scheme์ ์คํํ ๋ iframe์ ์ฌ์ฉํ๊ณ , ์ฑ ์คํ ํ ๋ค์ ์น์ผ๋ก ๋์์์๋์ ์๊ฐ์ฐจ๋ฅผ ์ด์ฉํ ๋ฐฉ์์
๋๋ค.
function web2app_android_scheme(launchURI) {
ย ย var clickedAt = new Date().getTime();
ย ย setTimeout(function () {
ย ย ย ย var now = new Date().getTime();
ย ย ย ย if (isPageVisible() && now - clickedAt < 2000) {
ย ย ย ย ย ย moveToStore();
ย ย var iframe = createHiddenIframe();
ย ย iframe.src = launchURI;
๋ณดํต ์์ ๊ฐ์ ๋ฐฉ์์ ์ฌ์ฉํ๊ณ , ํฌ๋กฌ์ ์ ์ธํ ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ์์ ์ ๋์ํฉ๋๋ค.
2. intent-based URI๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์
๋ชจ๋ฐ์ผ ํฌ๋กฌ 25๋ฒ์ ๋ถํฐ๋ iframe์ embedding ํ๋ ๋ฐฉ์์ด ๋์ํ์ง ์์ต๋๋ค.
๊ตฌ๊ธ์์๋ iframe์ embeddingํ์ฌ custom URI-scheme์ ์ฐ๋ ๋ฐฉ์ ๋์ intent-based URI๋ฅผ ์ฌ์ฉํ๋๋ก ํ๊ณ ์์ต๋๋ค.ย
ํท์บฃ๋ถํฐ๋ ์น๋ทฐ๋ ํฌ๋กฌ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ณ , ์ ์กฐ์ฌ๋ค๋ ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ ๋ฅผ ํฌ๋กฌ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ๋ ์ถ์ธ์ด๋ intent-based URI ๋ฐฉ์์ ํ์ฉ๋๊ฐ ์ ์ ๋ ๋์์ง ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
function web2app_android_intent(launchURI) {
ย ย top.location.href = launchURI;
ํ๊ฐ์ง ๋จ์ ์ด ์๋ค๋ฉด ํ๋ ์ด ๋ง์ผ ์ด๋์ ์ฑ์ ์ต์ข
ํ๊ฒ ๋งํฌ๊ฐ ์๋ ์ค๊ฐ๋ชฉ๋ก์ผ๋ก ์ฐ๊ฒฐ๋๋ค๋ ์ ์
๋๋ค -_-;;
* intent-based URI์ syntax๋ ์๋์์ ํ์ธํ ์ ์์ต๋๋ค.ย
https://developers.google.com/chrome/mobile/docs/intents
ํ์ฌ ์๋๋ก์ด๋์์ ๋ชจ๋ฐ์ผ ํ์ด์ดํญ์ค์ ์คํ๋ผ์ ๊ฒฝ์ฐ๋ intent-based URI๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ํฌ๋ก๋ฏธ์์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์คํ๋ผ์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง ์
๋๋ค.
๋๋ฌธ์ ๋ค์ ๋ณต์กํ๋๋ผ๋ ๊ฐ๊ฐ์ ๊ธฐ๊ธฐ์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ณ ๋ คํ์ฌ ๊ทธ์ ๋ง๋ ๋ฐฉ๋ฒ์ ์ ํํด์ ์ฌ์ฉํ๋๋ก ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.