
*디퍼드 딥링크란 모바일웹서비스로 공유된 링크를 통해 앱을 실행할수 있도록 해주며, 앱설치자들은 해당 링크로 앱실행후 이동되게 해주며, 앱 미설치자들은 스토어로 이동시켜주고 앱설치후 앱을 실행하면 처음에 공유된 링크로 앱화면이 이동이 되는기능을 말합니다.
*이 딥링크는 파이어베이스에서 제공된 기능을 통해 단축url을 앱내에서 생성하여 공유할 수 있도록 앱 기능개발이 가능하며, 파이어베이스에서 제공하는 다이내믹링크 관리화면에서도 수동으로 딥링크를 생성하여 사용할 수 있습니다.
*구글에서 ’25년9월부터 지원중단된다는 얘기가 있으며, 사용이 안되는경우 다른 솔루션등으로 업데이트가 필요할 수 있으니 참고부탁드리겠습니다.
//웹에서 어느 페이지에서든 아래 js스크립트로 생성할 딥링크가 있다면 사용하면 됨.
// 앱단 메세지 핸들러 호출상태 체크 함수
function waitForCallHandler(callback_func, attempts = 0) {
if (window.webkit && window.webkit.messageHandlers) {
callback_func();
} else if (attempts < 100) { // 100회까지 시도
setTimeout(function() {
waitForCallHandler(callback_func, attempts + 1); // 시도 횟수를 증가
}, 100);
} else {
//console.log('waitForCallHandler: 최대 시도 횟수에 도달했습니다.');
}
}
//메세지 핸들러 호출함수
waitForCallHandler(function() {
//action=앱과 연동 명령어(변경하지 말고 그대로 사용)
//target_url=딥링크 대상 full url 기입
//getdeeplink=생성된 딥링크를 전달받을 js함수명으로 원하는 이름으로 기입(아래 정의필요합니다.)
window.webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify({"action": "deeplink_create","target_url": "딥링크생성 대상URL","callback": "getdeeplink"}));
});
function getdeeplink(deeplink){
//전달받은 deeplink를 필요한 로직에 맞추어 사용하면 됨.
alert(deeplink);
}
//웹에서 어느 페이지에서든 아래 js스크립트로 다이내믹딥링크 생성이 가능함.
//아래 변수값중 빨간색의 값은 고정값으로, 작업진행시 알려드립니다.
//(숏링크변경 대상인 targetlink 변수값면 변경하여 사용하면됨)
api_key = 'AIzaSyBWWHFzKgTJsczShyfzzzzzzzzzz_w'//웹 api key**(변경x)**
domainuriprefix = '<https://testapp.page.link>'; //다이내믹링크로 사용할 도메인**(변경x)**
targetlink = '<https://www.testapp.com/board/view.php?&bdId=noevent&sno=46&main>'; //숏링크로 변경할 대상 URL 지정
androidpackagename = 'com.test.mobileapp'; //android앱 패키지명**(변경x)**
iosbundleid = 'com.test.mobileapp'; //ios앱 패키지명**(변경x)**
iosappstoreid = '1481234567'; //ios앱 스토어id 명시.**(변경x)**
$.ajax({
url: '<https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key='+api_key>,
type: 'POST',
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({
"dynamicLinkInfo": {
"domainUriPrefix": domainuriprefix,
"link": targetlink,
"androidInfo": {
"androidPackageName": androidpackagename
},
"iosInfo": {
"iosBundleId":iosbundleid,
"iosAppStoreId": iosappstoreid
},
"navigationInfo": {
"enableForcedRedirect": true //다이내믹링크로 앱실행시 미리보기페이지 건너띄위고 곧바로 앱실행되도록 하는옵션(안될수도 있다고 함)**(변경x)**
},
"DynamicLinkSocialInfo": { //옵션으로 미리보기페이지나 소셜공유시 사용되는정보(미사용시 기본 앱정보로 표시됨)
"socialTitle": "특급 이벤트 프로모션 진행", //동적 링크가 소셜 게시물에 공유될 때 사용할 제목입니다.
"socialDescription": "더 많은 혜택이 기다리고 있어요!", //동적 링크가 소셜 게시물에 공유될 때 사용할 설명입니다.
"socialImageLink": "<https://yourdomain.com/icon_1024.png>" //이 링크와 관련된 이미지의 URL입니다.
}
}
}),
success: function(response) {
//변환된 숏링크(다이내믹링크)
console.log(JSON.stringify(response));
console.log('변환된 숏링크(다이내믹링크) : ' + response.shortLink);
},
error: function(xhr) {
console.log("ERROR : " + JSON.stringify(xhr));
}
});