pc와 모바일에서 소셜공유하기
여러가지 방법이 있으나 깔끔하게 만드는게 좋아서.
웹쉐어API는 win10이상 pc에서도 동작은하나
모바일환경(스마트폰)에서만 적용하는걸 권합니다.
공유된 컨텐츠의 내용은 서버쪽 작업이필요(og태그설정)
web share API 명세 : https://developer.mozilla.org/en-US/docs/Web/API/Web_Share_API
pc용화면 공유창ui 부분
<style type="text/css">
.sns_layer {display:none;}
.sns_layer .wrap{display:block;width:300px;margin:0 auto;margin-top:150px;}
.sns_layer .btns{
display: block;width: 80%;
max-width: 220px;
height: 35px;line-height: 35px;
border-radius: 5px;
text-align:center;
margin:10px auto;
}
.sns_layer .btnKakao{ color: #000;background: rgba(255, 230, 0, 1) }
.sns_layer .btnLine{color: #fff;background: rgba(29, 205, 0, 1);}
.sns_layer .btnNaver{color: #fff;background: rgba(59, 172, 55, 1);}
.sns_layer .btnFacebook{color: #fff;background: rgba(59, 89, 152, 1);}
.sns_layer .btnTwitter{color: #fff; background: rgba(29, 161, 242, 1)}
.sns_layer .btnCopy{ color: #000;background: rgba(255, 255, 255, 1) }
.sns_layer .btnCancel{ color: #fff;background: rgba(100, 100, 100, 1) }
</style>
<div class="sns_layer animated SNS-on zoomIn" style="position: fixed; width: 100%; height: 100%; top: 0px; left: 0px; background-color: rgba(0, 0, 0, 0.5); overflow-y: auto; z-index: 1999; opacity: 1; animation-duration: 0.3s;">
<div class="wrap">
<button class="btns btnKakao" onclick="shareKakaoTalk()"> KAKAO TALK </button>
<button class="btns btnNaver" onclick="window.open('https://share.naver.com/web/shareView?url={=urlencode(share_data.share_url)}&title={=urlencode(share_data.share_title)}', 'naversharedialog', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=800,width=600');"> NAVER </button>
<button class="btns btnTwitter" onclick="window.open('https://twitter.com/intent/tweet?url={=urlencode(share_data.share_url)}&hashtags=&text={=urlencode(share_data.share_title)}', 'twittersharedialog', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=800,width=600');" > Twitter </button>
<button class="btns btnFacebook" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u={=urlencode(share_data.share_url)}&t={=urlencode(share_data.share_title)}', 'facebooksharedialog', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=800,width=600');"> Facebook </button>
<button class="btns btnLine" onclick="window.open('https://social-plugins.line.me/lineit/share?url={=urlencode(share_data.share_url)}&title={=urlencode(share_data.share_title)}', 'linesharedialog', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=800,width=600');"> LINE </button>
<button class="btns btnCopy" onclick="_ClipCopy('{share_data.share_url}',2)">URL 복사</button>
<button class="btns btnCancel">취소</button>
</div>
</div>
js : webshare api 처리및 pc용 카톡공유js
//카톡공유
Kakao.init('{__cfg.kakao_javascript_key}');
function shareKakaoTalk() {
Kakao.Link.sendDefault({
objectType: 'feed',
content: {
title: '{share_data.share_title}',
description:'{share_data.share_description}',
imageUrl: '{share_data.share_image}',
link: {mobileWebUrl: '{share_data.share_url}',webUrl: '{share_data.share_url}',},
},
})
}
//모바일용 webshareAPI
function sns_share(){
if (navigator.share) { // Web Share API is supported
alert('navigator.share');
navigator.share({
title: '{share_data.share_title}',
text: '{share_data.share_description}',
url: '{share_data.share_url}'
}).then(() => {
//alert('처리끝');
}).catch(console.error);
} else {
// Fallback
if ( user_agent == 'app' ){
//하이브리드앱 네이티브콜
//app_share2('{share_data.share_title}', '{share_data.share_url}', '{=get_text(data.pl_name)}');
}else{
$('.sns_layer').show();//pc용 공유버튼레이어보이게 처리
}
}
}
기타 :
{__cfg.kakao_javascript_key} : 카톡공유용 js key > 카카오링크설정참고
{share_data.share_title} : 공유제목
{share_data.share_url} : 공유할 url
서버측 og태그설정 (공유된 url 에서 head meta tag)
<meta property="og:type" content="{article | website | posts | ...}" />
<meta property="og:title" content="{공유제목}" />
<meta property="og:url" content="{request_url 또는 landing url}" />
<meta property="og:description" content="{설명 | 요약내용 | 본문내용}" />
<meta name="description" content="{설명}">
<meta property="og:image" content="{image_full_url}" />
<meta property="og:image:width" content="{width}" />
<meta property="og:image:height" content="{height}" />
<meta property="og:image" content="{image_full_url}" />
<meta property="og:image" content="{image_full_url}" />
...
<meta property="og:site_name" content="{사이트명}" />
<meta property="og:locale" content="ko_KR" />
<!-- 참고 : https://ogp.me/ -->
같은내용 이미지
'HTML.Js' 카테고리의 다른 글
브라우저에서 파일다루기(js, filereader, etc) (0) | 2022.08.05 |
---|---|
네이버 지도 길찾기 출발지 도착지 지정해서 링크로 바로열기+카카오맵길찾기 (1) | 2022.04.27 |
jquery 폼항목 숫자만 입력받기+숫자콤마찍기 (1) | 2019.10.24 |
이따금씩(혹은 자주)쓰지만 생각 안나서 매일검색하는것들. (0) | 2017.02.06 |
라디오버튼 체크해제기능 추가. (2) | 2015.03.06 |
댓글