마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

모바일웹에서 앱실행여부 관련인데요...

0 추천
안녕하세요

안드로이드 개발 초보자이고  개발 도중에 어려움에 있어서 선배고수님들에게 조언을 구하고자 질문드립니다.

현재 커스텀 스킴으로 url에서 앱이 설치 되어 있지 않으면 마켓주소로 가고 앱이 설치 되어있으면 해당 Activity를 띄울려고 하는데 잘 안되네요 좀 도와 주십시요 ^^

 

AndroidManifest.xml에 해당 커스텀 스킴  설정은 아래와 같습니다.

<activity
            android:name=".GivetalkViewActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|orientation|screenSize"
            android:theme="@style/AppTheme">

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="post_detail"
                    android:scheme="funnyview" />
                <data
                    android:scheme="kakao768afecedb47c4a2b7b2300ba0026a16"
                    android:host="kakaolink" />
                <!--<data-->
                    <!--android:scheme="@string/kakao_scheme"-->
                    <!--android:host="@string/kakaolink_host" />-->

            </intent-filter>

</activity>

 

그리고 웹페이지에서 앱설치  유무관련체크하는 부분은 아래와 소스입니다.

<script>

var market_a = "market://details?id=kr.co.nsupport.givemon";

var IS_IPAD = navigator.userAgent.match(/iPad/i) != null,
      IS_IPHONE = !IS_IPAD && ((navigator.userAgent.match(/iPhone/i) != null) || (navigator.userAgent.match(/iPod/i) != null)),
      IS_IOS = IS_IPAD || IS_IPHONE,
      IS_ANDROID = !IS_IOS && navigator.userAgent.match(/android/i) != null,
      IS_MOBILE = IS_IOS || IS_ANDROID;

function checkAppInstall() {

  var bo_table = "<?=$bo_table?>";
  var wr_id = "<?=$wr_id?>";

  // 앱에 설정해놓은 커스텀 스킴. 여기선 "funnyview"
  var url = "funnyview://post_detail?bo_table="+bo_table+"&wr_id="+wr_id;

  if(IS_ANDROID) {
    // 안드로이드는 미리 만들어둔 iframe에
    var invisible_div = document.getElementById("invisible_div");
    invisible_div.innerHTML = "<iframe src=" + url + " onload='goMarket();'></iframe>";
  } else if(IS_IOS) {
    setTimeout( function() {
      goMarket();
    }, 1000);

    window.location = url;
  } else {
    //alert("안드로이드와 아이폰에서만 사용 가능");
  }

  return false;
}

// 마켓 이동
function goMarket() {
  if(IS_ANDROID) {
    //alert("here");
    window.location=market_a;
  } else if(IS_IOS) {
    //location.href=market_i;
  } else {
    /* 기타 OS일 때 */
  }
}

checkAppInstall();

</script>

위처럼 체크 하고 있구요 현재 상태는 앱이 설치 되어 있으면 해당 Activity가 열리는데 앱이 설치 되어있지 않으면 그냥 모바일페이지가 열리는 상태이구요

테스트는 페이스북에 링크 공유해서 링크 클릭으로 테스트 하고 있습니다.

고수님들의 조언 부탁드립니다.
익명사용자 님이 2016년 3월 8일 질문

1개의 답변

0 추천
안드로이드 내장 브라우저가 아닌 웹뷰를 사용하시나 보군요

웹뷰 클라이언트에서 url파싱후 인텐트로 내보내는 작업을 구현하셔야 됩니다
익명사용자 님이 2016년 3월 9일 답변
혹시 인텐트로  내보내는 작업에 예를 좀 가르쳐 주실수 없나요?
어떤식으로 구현을 해야 되는지에 대한 예를 들어주신다면 저같은 초보에게 큰 힘이 될거 같습니다.
...