안녕하세요.
iOS 하이브리드 앱을 개발하고 있는 개발자 입니다.
웹뷰내의 페이지에서 링크 공유를 위해 아래와 같이 호출하고 있습니다. 반응이 없습니다.
WKNavigationDelegate의
func webView(_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) → Void)
에서 url을 확인해보니 “about:blank” 호출되고 “Kakao CORS Provider” 이후 아무런 액션이 발생하지 않고 있습니다.
개발 환경 -
- OS: iOS 14.3
- Device: iPhone 12
- XCode: 12.3
- 카카오 개발 사이트에 등록된 App bundle identifier: kr.co.lsinvest.hola.ios
- AppName: Hola
- 카카오 관련 LSApplicationQueriesSchemes는 모두 등록했습니다.
KAKAO_APP_KEY: *****
등록된 kakao related schemd 목록
- kakaokompassauth
- kakao35e547bea5c7cabbb2207a9c0d581d10
- kakaolink
- kakaotalk-5.9.7
앱 코드
extension WebViewController: WKNavigationDelegate {
func webView(_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
var wkNavigationActionPolicy: WKNavigationActionPolicy = .cancel
defer {
decisionHandler(wkNavigationActionPolicy)
}
guard let url = navigationAction.request.url else {
return
}
if let scheme = navigationAction.request.url?.scheme,
((dataDetectorSchemes.contains(scheme)) || !["http", "https", "file", "about"].contains(scheme)) {
UIApplication.openURL(navigationAction.request.url!)
return
}
wkNavigationActionPolicy = .allow
}
}
샘플 테스트 페이지 코드
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, target-densitydpi=medium-dpi, viewport-fit=cover">
</head>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
<script type="text/javascript">
function shareKakao() {
if (navigator.share) {
navigator.share({
title: 'web.dev',
text: 'Check out web.dev.',
url: 'https://web.dev/',
})
.then(() => console.log('Successful share'))
.catch((error) => console.log('Error sharing', error));
}
}
</script>
<body style="background-color: #79b8ff">
<h1><a href="javascript:shareKakao();">카카오공유<img src="https://developers.kakao.com/assets/img/about/logos/kakaolink/kakaolink_btn_medium.png" /> </a></h1>
</body>
</html>