Open1

【monaca】nend広告をタップできない(何も起こらない)時の解決方法

としひでとしひで

monacaアプリにnend広告を実装しても、広告はちゃんと表示できるのに広告をタップしても何も反応しないことがあります。原因は、広告のロードにタイムラグがあるからです。タイムラグがあったらなぜ反応しないのかは僕の知識ではよくわかりませんが、とにかく原因はそれです。

解決方法を探していたら次の記事を見つけ、これで解決することができました。

https://ja.stackoverflow.com/questions/5969/monacaでnend広告を別ウインドウで開く方法

ただ、この記事は2015年に書かれたもので、cordovaのバージョンが変わってこのままではちゃんと動かないので少し修正を加えて以下のようにしました。これをheadに挿入すると広告をタップできるようになります。

main.js
 addEventListener('load', onLoad, false);
      function onLoad() {
                //nendの広告タグのロードにラグがあるので、決め打ちで処理を遅延させています。
                var TIME_FOR_WAITING_NEND_AD = 500;
    
                setTimeout(function () {
    
                    var nendAdSpace = document.querySelector('div[id^=nend_adspace]');
                    var nendAdAnchors = nendAdSpace.querySelectorAll('a');
    
                    for (var i = 0; i < nendAdAnchors.length; i++) {
                        var hrefShelter = nendAdAnchors[i].href;
                        nendAdAnchors[i].removeAttribute('href');
                        nendAdAnchors[i].addEventListener('click', function () {
                           cordova.InAppBrowser.open(hrefShelter, "_system", 'location=yes');
                        }, false);
                    }                
    
                }, TIME_FOR_WAITING_NEND_AD);
            }

cordova.InAppBrowser.open(hrefShelter, "_system", 'location=yes');によって広告がデフォルトブラウザで開くようになっています。InAppBrowserプラグインを有効にしておいてください。