【monaca】monacaでnendのインタースティシャル広告を実装する方法

monacaで作ったアプリにnendのインタースティシャル広告をつけたいなと思っている方へ。

結論から言うと、<b>無理</b>です。

Admobの広告なら付けられるみたいですが、nendではインタースティシャル広告はつけられません。

[nend公式](https://nend.net/faq/info/31)によると、

<blockquote>
Monacaには、画面上にWebViewとして広告のための領域を作り、サイトのようにJSタグを貼る形での掲載が可能です。
</blockquote>

とありますが、

![スクリーンショット 2021-03-04 14.54.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1159193/071111f7-b16d-1911-96b3-65ce95beff10.png)

ご覧のように、広告コードがなく、JSタグを貼れません。

高収益フォーマットなインタースティシャル広告をつけられないのは痛いですね。

でも、僕は<b>どうしてもお金が欲しい</b>ので、自作します。

そもそも、アプリにおけるインタースティシャル広告というのは、分解すると

<b>①画面いっぱいに出てくる</b>

<b>②右上に閉じるボタンがある</b>

<b>③たまに出てくる</b>

という特徴があります。これらの特徴を備えた広告を表示させることができれば、代替品として十分に機能しそうです。

<hr>

nendのインタースティシャル広告のサイズは、300x250です。そして、JSタグで表示させることができるインライン広告にも同じサイズのものがあります。これで代用することで、インタースティシャルもどきを作っていきます。

# 完成形

<p class="codepen" data-height="265" data-theme-id="dark" data-default-tab="js,result" data-user="toshihide2000" data-slug-hash="ExNpEyR" style="height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="擬似インタースティシャル">
  <span>See the Pen <a href="https://codepen.io/toshihide2000/pen/ExNpEyR">
  擬似インタースティシャル</a> by toshihide (<a href="https://codepen.io/toshihide2000">@toshihide2000</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>


広告表示用のモーダルを用意しておいて、load時に五分の一の確率でそれが出るようにしています。<code>Math.floor(Math.random()*5);</code>のx5の部分を変えることで確率を変更できます。

0以上1未満の値を返すMath.randomにx5をし、小数点以下を切り捨てる（Math.floor）ことで0~4の5つの数値をランダムで生成し、それが1だった場合にのみモーダルを表示する、という仕組みです。


コードにはnendのテストコードをあらかじめ入れてあります。

完成形はこんな感じになります。↓

![IMG_6185.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1159193/2d7092c8-32f2-8944-5ae6-8607f63a9dc0.png)

完成！

# headのJSについて補足

monacaでnend広告を表示する場合、広告を読み込むときのタイムラグが原因で、広告をタップしても何も反応しないという症状が出ます。そこで、それを回避するためにheadに次のスクリプトを入れています。

````JavaScript
 <script type="text/javascript">
    //  広告コード
var nend_params = {"media":82,"site":58536,"spot":127518,"type":1,"oriented":1};
    // 
         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);
            }
    </script>

````

詳しくはこちらの記事をご覧ください↓


https://qiita.com/toshihide_2000/items/dd57a5fbd617a46591e5



# ちょっとだけ宣伝

オナ禁アプリを作りました。禁欲に興味がある方はぜひ。



![kinyoku-100px-icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1159193/e4e3ef0f-f893-59bd-540b-d3c09d83e2ae.png)
[禁欲エボリューション](https://apps.apple.com/jp/app/禁欲エボリューション/id1553966013)

こっちは文字数を制限できるメモアプリ
![mem-100px-icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1159193/c4b778ff-7a14-b489-c71e-23fe6f6b7eb8.png)
[文字数制限メモ](https://apps.apple.com/jp/app/文字数制限メモ/id1552651234)