어플이 설치되어있으면
어플에 파라미터 값을 넣고 실행하고
설치되어있지않으면 마켓 다운로드 페이지로 이동 시키려고 하는데
설치여부를 확인하는 부분을 모르겠습니다.
아시는분들 있으면 답변좀 부탁드립니다.
자문자답
// html에서 iframe 을 이용하여 앱을 호출하는걸 아이프레임에 넣어놓고 호출시에는 브라우저가 닫히고 앱이 실행되고
아이프레임상에서 오류페이지가 뜰경우 부모 html에 스크립트로 setTimeout 몇초간 줘서 브라우저가
0.5초동안 닫히지 않을시 어플다운로드 페이지로 이동하도록 해서 처리하였습니다.
여기서 iframe 는 눈에 보이지 않도록 width=0 height=0 설정하였습니다.
iframe 사용해서 하셨다고해서 해봤습니다.
아이디어가 좋으십니다.
구현은 다를 수 있습니다.
<script>
function checkApplicationInstall() {
document.checkframe.location = "myapp://check_install";
setTimeout("checkApplicationInstall_callback()", 1000);
}
function checkApplicationInstall_callback() {
try {
var s = document.checkframe.document.body.innerHTML;
// 어플리케이션 설치되어있음
} catch (e) {
// 어플리케이션 설치 안 되어있음
}
}
</script>
<input type="button" value="check app install" onclick="checkApplicationInstall()"/><br/>
<iframe id="checkframe" name="checkframe" src="check.html" width="1" height="1"></iframe>
<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:scheme="myapp" android:host="check_install" />
</intent-filter>
따로 api가 있거나 하지 않죠.
굉장히 우회적인 방법일거 같은데요.
myapp://check_install/39495959403 같이 설치체크할 앱에서만 처리할 수 있는 url 링크를 만들어서
사용자가 클릭을 하면 서버에 유니크한 값을 파라미터로 요청을 하는거죠...
서버에서는 해당 요청 커넥션을 일정시간 pending 해두고 (이런걸 comet 또는 http push 이라고 합니다)
설치된 앱에서 위 url 을 처리해서 "나 설치되어있다"고 유니크한 값을 파라미터로 날리면
서버에서 pending 하고 있던 요청에 응답을 주는거죠. '그 클라이언트에 앱 설치되어있다"
떠오르는 방법이 이거네요. 달리 뾰족히 방법이 없지 않나요?