Kanishka
Kanishka

Reputation: 77

Watch Count and views are not increasing while using youtube iframe api

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

Answers (0)

Related Questions