ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î


Android - iOS UserAgent ±¸ºÐ ¹× ¸ð¹ÙÀÏÀ¥ÆäÀÌÁö¿¡¼­ ¾Û ¼³Ä¡ ¿©ºÎ È®ÀÎ
7³â Àü
¾Æ·¡ º»¹® ³»¿ëÀ¸·Î´Â ¾Èµå·ÎÀ̵忡¼­ ³×À̹ö, Å©·Ò µî ¸î¸î ºê¶ó¿ìÀú¿Í ÃֽŠ±â±â¿¡¼­ Á¤»ó ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù.

https://github.com/koreaparks/CustomSchemeManager

À§ Github¿¡ ¾÷µ¥ÀÌÆ®ÇÏ¿´À¸´Ï È®ÀÎÇϽðí, ¾Æ·¡ º»¹®Àº Âü°í¿ëÀ¸·Î ºÁÁÖ¼ÌÀ¸¸é ÇÕ´Ï´Ù.



¸ð¹ÙÀÏ À¥ÆäÀÌÁö¿¡¼­ Ä¿½ºÅÒ ½ºÅ´À» È°¿ëÇÏ¿© ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¼³Ä¡ À¯¹«¸¦ È®ÀÎÇÏ°í, ¼³Ä¡°¡ ¾ÈµÇ¾îÀÖÀ» ¶§´Â Ç÷¹À̽ºÅä¾î, ¾Û½ºÅä¾î·Î °¢°¢ À̵¿ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸°Ú½À´Ï´Ù.


Android¿Í iOSÀÇ ±¸Çö»ó Â÷ÀÌÁ¡

(1) Android
div¸¦ ¹Ì¸® ¸¸µé¾î³õ°í ½ºÅ¸ÀÏ ¼Ó¼º display:none À¸·Î ¼û°ÜµÓ´Ï´Ù.
Àç»ý¹öÆ° Ŭ¸¯ ½Ã div¿¡ iframeÀ» »ý¼ºÇÏ¿© Ä¿½ºÅÒ½ºÅ´À» ºÒ·¯¿Àµµ·Ï ÇÏ°í,
½ÇÆÐÇϸé ÀÚµ¿À¸·Î goMarket ÇÔ¼ö¸¦ ºÒ·¯¿Í ¸¶ÄÏÀ¸·Î À̵¿ÇÕ´Ï´Ù.

(2) iOS
iOS´Â iframeÀÌ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù ÇÕ´Ï´Ù.
±×·¡¼­ ŸÀ̸Ӹ¦ ¼³Á¤ÇÏ°í, Ä¿½ºÅÒ½ºÅ´À» ºÒ·¯¿Â ÈÄ ÁöÁ¤ÇÑ ½Ã°£(¼Ò½º¿¡¼­´Â 1ÃÊ)ÀÌ Áö³¯µ¿¾È ½ºÅ´Ã³¸®°¡ ¾ÈµÇ¸é
¸¶Âù°¡Áö·Î goMarket ÇÔ¼ö¸¦ Ÿµµ·Ï ÇÏ¿´½À´Ï´Ù.
´Ü, iOS´Â ¾Û ¼³Ä¡°¡ µÇ¾îÀÖÁö ¾ÊÀ» ¶§ ¿À·ùÆ˾÷ÀÌ Àá±ñ ¶ß´Âµ¥ À̺κÐÀº ¾î¿ ¼ö ¾ø´Â °Í °°½À´Ï´Ù.



script - userAgent¸¦ ¾ò¾î¿À±â

UserAgent´Â navigator.userAgent¸¦ ÅëÇØ ¾ò¾î¿Ã ¼ö ÀÖ½À´Ï´Ù.
.toLowerCase¸¦ ÅëÇØ ¾ò¾î¿Â ½ºÆ®¸µÀ» ¼Ò¹®ÀÚ·Î º¯È¯ÇÏ°í, android¿Í iOS¸¦ ±¸ºÐÇÕ´Ï´Ù.
ÀÌ °úÁ¤¿¡¼­ BlackBerry µî ´Ù¸¥ OS¸¦ ƯÁ¤ÁöÀ» ¼öµµ ÀÖ½À´Ï´Ù.

var currentOS;
var mobile = (/iphone|ipad|ipod|android/i.test(navigator.userAgent.toLowerCase()));

if (mobile) {
        // À¯Àú¿¡ÀÌÀüÆ®¸¦ ºÒ·¯¿Í¼­ OS¸¦ ±¸ºÐÇÕ´Ï´Ù.
        var userAgent = navigator.userAgent.toLowerCase();
        if (userAgent.search("android") > -1)
                currentOS = "android";
        else if ((userAgent.search("iphone") > -1) || (userAgent.search("ipod") > -1)
                                || (userAgent.search("ipad") > -1))
                currentOS = "ios";
        else
                currentOS = "else";
} else {
        // ¸ð¹ÙÀÏÀÌ ¾Æ´Ò ¶§
        currentOS = "nomobile";
}




script - Ä¿½ºÅÒ ½ºÅ´À» ÅëÇÑ ¾Û ¼³Ä¡ À¯¹« È®ÀÎ

¾Û¼³Ä¡ È®ÀÎ ÈÄ Android´Â iframe»ý¼ºÀ¸·Î ½ºÅ´Ã³¸®°¡ µÇ¾ú´ÂÁö ÆÇ´ÜÇÏ°í, iOS´Â ŸÀӾƿôÀ» ÅëÇØ ½ºÅ´ 󸮸¦ È®ÀÎÇÕ´Ï´Ù.
°¢°¢ Á¤»ó 󸮰¡ µÇÁö ¾Ê¾ÒÀ» ¶§ goMarket ÇÔ¼ö·Î ³Ñ¾î°¡µµ·Ï ÇÏ¿´´Âµ¥, ÇÔ¼ö¸¦ µû·Î ¸¸µå¼Åµµ »ó°ü¾ø½À´Ï´Ù.

// ¹Ù·ÎÀç»ý, ´Ù¿î·Îµå ¹öÆ° Ŭ¸¯
function checkAppInstall() {
        // ¾Û¿¡ ¼³Á¤ÇسõÀº Ä¿½ºÅÒ ½ºÅ´. ¿©±â¼± "customScheme"
        var url = "customScheme://blahblah~";
        
        if(currentOS == "android") {
                // ¾Èµå·ÎÀ̵å´Â ¹Ì¸® ¸¸µé¾îµÐ iframe¿¡
                var invisible_div = document.getElementById("invisible_div");
                invisible_div.innerHTML = "<iframe src=" + url + " onload="goMarket()"></iframe>";
        } else if(currentOS == "ios") {
                setTimeout( function() {
                        goMarket();
                }, 1000);

                location.href = url;
        } else {
                alert("¾Èµå·ÎÀ̵å¿Í ¾ÆÀÌÆù¿¡¼­¸¸ »ç¿ë °¡´É");
        }

        return false;
}

// ¸¶ÄÏ À̵¿
function goMarket() {
        if(currentOS == "android") {
                location.href=market_a;
        } else if(currentOS == "ios") {
                location.href=market_i;
        } else {
                /* ±âŸ OSÀÏ ¶§ */
        }
}



body

È®ÀÎ ¹öưŬ¸¯ ½Ã ¾Û ÀνºÅç üũ ÇÔ¼ö¸¦ ½ÇÇàÇÕ´Ï´Ù.
div¸¦ ¹Ì¸® ¸¸µé¾î¼­ ¼û°Ü³õ´Â °ÍÀÌ ÇÙ½ÉÀÔ´Ï´Ù. ¼û±âÁö ¾ÊÀ¸¸é ÀÌÈÄ iframeÀÌ »ý¼ºµÇ¸é¼­ ÆäÀÌÁö¿¡ ³ëÃâµË´Ï´Ù.

<button class="big" onclick="return checkAppInstall()">È®ÀÎ</button><br>

<!-- display ¼Ó¼ºÀ» µÎ¾î ¼û¾îÀÖ´Â div¸¦ ¹Ì¸® ¸¸µé¾î ³õ½À´Ï´Ù. ÀÌ div¿¡ iframeÀÌ »ý¼ºµË´Ï´Ù. -->
<div id="invisible_div" style="display:none;"></div>



Áö±Ý±îÁö ¾Û ¼³Ä¡¸¦ ÆǺ°ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò½À´Ï´Ù.
ÃßõÃßõ : 875 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
1,286
[Android] webview ssl ¹®Á¦
1,285
[Android] Webview url ¼û±â±â
1,284
[Android] AlarmManager ÀÏÁ¤½Ã°£ À̺¥Æ® ½ÇÇà
1,283
¾Èµå·ÎÀÌµå ¿ÀǼҽº ³¡ÆÇ
1,282
android studio DefaultHttpClient, HttpClient import ¿¡·¯
1,281
[Android] Webview ¸Þ¼Òµå
1,280
¾Èµå·ÎÀ̵å: ¼­ºñ½º Service ¿¹Á¦
1,279
[Android] Effect (¿Àµð¿À¸ðµå) º§¸ðµå, Áøµ¿¸ðµå, ¹«À½¸ðµå½Ã µ¿ÀÛó¸®
1,278
Mediaplayer ·Î ÁöÁ¤µÇ¾îÀÖ´Â º§¼Ò¸® Àç»ýÇϱâ
1,277
Android Intent - ¾Èµå·ÎÀ̵å ÀÎÅÙÆ®
1,276
[Android Intent Useage] ¾Èµå·ÎÀ̵å Intent »ç¿ë ¹æ¹ý
1,275
SharedPreferences¶õ?
1,274
ÀÎÅÙÆ®(Intent)·Î µ¥ÀÌÅÍ Àü´Þ(putExtra, getExtras)
1,273
¾Èµå·ÎÀÌµå ±¸±Û ¾Öµå¸÷ Àü¸é±¤°í ³Ö±â
1,272
¾Èµå·ÎÀÌµå µÚ·Î°¡±â ¹öÆ° ´õºíŬ¸¯Çؼ­ ¾Û Á¾·áÇϱâ
1,271
¾Ë¸²Ã¢ ¶ç¿ì±â(Multi Choice, Single Choice)
1,270
Android SharedPreferences »ç¿ë ¿¹Á¦
1,269
¾Èµå·ÎÀ̵å PHP GET ¹æ½Ä Åë½Å¿¡¼­ ÇÑ±Û ±úÁü(?) ÇØ°á
1,268
¾Èµå·ÎÀÌµå ¾Û ÃÖÃÊ ½ÇÇà½Ã ¹ÙÅÁÈ­¸é¿¡ ¾ÆÀÌÄÜ(Shortcut) »ý¼ºÇϱâ
1,267
ÇöÀç½Ã°£(Local Time) °¡Á®¿À±â
1,266
ÆÄÀÏ »ý¼º ¹× ÀúÀå
1,265
µÚ·Î°¡±â(Back ¹öÆ°) µÎ¹ø ´­·¯ ¾Û Á¾·áÇϱâ
1,264
Custom ListView (Ä¿½ºÅÒ ¸®½ºÆ®ºä) Footer¸¦ ÀÌ¿ëÇÑ ´õº¸±â ±¸Çö
1,263
CheckBox(üũ¹Ú½º) À̹ÌÁö º¯°æÇϱâ
1,262
C¼­¹ö¿Í ¼ÒÄÏÅë½Å
1,261
½½¶óÀ̵ù ¸Þ´º - SimpleSideDrawer
1,260
selector·Î ¹öÆ° ¾×¼Ç À̹ÌÁö º¯°æ
1,259
À̹ÌÁö¹öÆ° »çÀÌÁî Á¶Àý
1,258
XmlPullParser °£´ÜÇÑ »ç¿ë¹ý
1,257
¹öÆ°»çÀÌ ¿©¹é ¾ø¾Ö±â
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.