Reputation: 77
I am Implementing some promotion url of YouTube in my project & when user clicks on it then we wants to increase its watch time and views. Below I am mentioning my code, Kindly let me know what is missing in it. While using this code my watch time is not increasing. Kindly help & Thank you in advance
Code
func loadYouTubeVideo() {
// Configure WKWebView
let contentController = WKUserContentController()
contentController.add(self, name: "youtubePlayer")
let config = WKWebViewConfiguration()
config.userContentController = contentController
webView = WKWebView(frame: self.view.bounds, configuration: config)
webView.navigationDelegate = self
webView.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(webView)
// Auto Layout constraints
NSLayoutConstraint.activate([
webView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
webView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
webView.topAnchor.constraint(equalTo: self.view.topAnchor),
webView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
])
let videoID = "your id here"
let html = """
<!DOCTYPE html>
<html>
<body>
<div id="player"></div>
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '80%',
width: '80%',
videoId: '\(videoID)',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
},
playerVars: {
'playsinline': 1
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
var done = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.ENDED && !done) {
done = true;
// Video ended
window.webkit.messageHandlers.youtubePlayer.postMessage("Video Ended");
}
}
</script>
</body>
</html>
"""
webView.loadHTMLString(html, baseURL: nil)
}
Upvotes: 0
Views: 35