質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

1回答

2837閲覧

Vue.jsフレームワークでバナー広告を正しく表示させたい

tara-tail

総合スコア32

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

1クリップ

投稿2020/02/07 10:18

やりたいこと

MonacaのVue.jsフレームワーク(Onsen UI不使用)で作成したアプリに、Adgenerationのバナー広告(JavaScript)を組み込みたいと思っています。

症状

マニュアル(Banner_Ad_Monaca)通りにJavaScriptを記載し、フッターにバナー広告を表示することはできたのですが、しばらく表示した後にクリックすると、cordoveプラグイン「InAppBrowser」が起動しなくなってしまいます。
具体的には、アプリ起動時にバナー広告をタッチすると、「InAppBrowser」が起動し、App.storeなどが表示されます。しばらくアプリを動かした(2, 3分)後、再びバナー広告をタッチすると、何も表示されなくなってしまいます。おそらく、「InAppBrowser」が起動していません。

コード

フッターのメソッドは、以下のURLの記載をほぼコピーしています。
Banner_Ad_Monaca

vue

1<!--App.vue--> 2<template> 3 <div class="container"> 4 <transition name="route"> 5 <router-view /> 6 </transition> 7 <ad-footer /> <!--広告を表示せるフッターコンポーネント--> 8 </div> 9</template> 10 11<script> 12 import AdFooter from '@/components/Footer' 13 export default { 14 components: { 15 AdFooter 16 }, 17 // 以降省略 18 } 19</script>

vue

1<!--Footer.vue--> 2<!--フッターのコンポーネント --> 3<template> 4 <div class="footer" ref="adg" :id="divid"> 5 </div> 6</template> 7 8<script> 9 export default { 10 data: function() { 11 return { 12 divid: 'banner', 13 } 14 }, 15 computed: { 16 adid: function() { 17 return '00000' // 仮の数値です。 18 } 19 }, 20 mounted: function() { 21 this.makeADGTag(this.adid, this.id, '320', '50') 22 }, 23 methods: { 24 makeADGTag: function(adid, divid, width, height) { 25 // マニュアルでは、「getElementById」で要素を取得しているが、 26 // $refsでdivを参照するように変更 27 let adg = this.$refs.adg 28 let script = document.createElement('script') 29 script.type = 'text/javascript' 30 // async=trueにすることによって非同期に対応されます 31 script.src = 'https://i.socdm.com/sdk/js/adg-script-loader.js?id=' + adid + '&adType=FREE&width=' + width + '&height=' + height + '&displayid=0&targetID=adgAd_' + divid + '&async=true' 32 if (adg != null) { 33 adg.appendChild(script) 34 } 35 let self = this 36 adg.style.display = 'none' 37 let count = 0 38 let timer = setInterval(function checkAd() { 39 count++ 40 if (count > 100) { 41 clearInterval(timer) 42 return; 43 } 44 if (self.checkADGTag(adg) === true) { 45 clearInterval(timer) 46 adg.style.display = 'inline' 47 } 48 }, 100); 49 }, 50 checkADGTag: function(obj) { 51 let links = obj.getElementsByTagName('a') 52 let frms = obj.getElementsByTagName('iframe') 53 if (links.length > 0) { 54 this.makeADGLink(links) 55 return true; 56 } 57 let res = false 58 for (let i = 0; i < frms.length; i++) { 59 if (this.checkADGTag(frms[i].contentWindow.document) === true) { 60 res = true 61 } 62 } 63 return res 64 }, 65 makeADGLink: function(arr) { 66 for (let i = 0; i < arr.length; i++) { 67 (function(a) { 68 let href = a.href 69 a.href = '#' 70 a.onclick = function() { 71 // マニュアルでは、「window.open」で記載されているが、 72 // cordovaの「InAppBrowser」に変更 73 let ref = cordova.InAppBrowser.open(href, '_blank') 74 return false 75 }; 76 })(arr[i]) 77 } 78 } 79 } 80 } 81</script>

補足

cordoveプラグイン「InAppBrowser」を導入済みです。
上記の一つ目のコード(App.vue)のとおり、アプリの起動中、画面を移動(vue router使用)しても、フッターは固定されたままにしています。

Vue.jsで作成したアプリに広告を組み込むのは初めてで、このような症状を改善したいと思っていますが、どのようにしたら良いのか、良い案が浮かびません。どなたかにご教示していただけたらと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

アドジェネサポート様から回答をいただき解決しました。クリックしても反応しないのは、広告のローテーションに秒数を指定していたからでした。初期値では60秒に設定されています。
「Monaca」で作成するハイブリッドアプリにアドジェネレーションの広告を使用する場合は、広告のローテーションをなしに設定しなければならないということです。
Monaca Getting Started / バナー広告」の」注意文にも書いてありました。

投稿2020/02/08 08:09

編集2020/02/14 07:10
tara-tail

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問