0

AdMob Plugin Proを Phonegap アプリケーションに追加しました。サンプル コードに従って、アプリケーションのホームページに次のコードを追加します。

function onDeviceReady() {
    var admobid = {};
    if( /(android)/i.test(navigator.userAgent) ) {
        admobid = { // for Android
            banner: 'ca-pub-{key hidden}'
            interstitial: 'ca-pub-{key hidden}'
        };
    } else if(/(ipod|iphone|ipad)/i.test(navigator.userAgent)) {
        admobid = { // for iOS
            banner: 'ca-pub-{key hidden}'
            interstitial: 'ca-pub-{key hidden}'
        };
    }
    if(window.AdMob) AdMob.prepareInterstitial( {adId:admobid.interstitial, autoShow:true} );
}
document.addEventListener('deviceready', onDeviceReady, false);

上記のコードは機能し、インタースティシャル広告が表示されますが、別のページで AdMob を再度呼び出そうとすると問題が発生します。私はいくつかのアプローチを試みますが、どれもうまくいきません。

私のアプリの背景情報は次のとおりです。

  1. ユーザーがリンクをクリックすると、私のアプリケーションはページをリロードします。たとえば、ユーザーがホームページで「設定」ボタンをクリックすると、ページ全体が「setting.html」にリロードされます。
  2. DOM とコンテンツを操作するスクリプトは、常に最後の行に配置されます。<body>

だからここに私が試したことがあります:

  1. onDeviceReady()上記と同じものをコピーしてaddEventListner()、別のページに入れます。

    • 私が見つけたのは、deviceready イベントが 2 番目のページで再び発生しないことです。したがって、もちろん、インタースティシャル広告が再び表示されることはありません。
  2. を新しいページにコピーし、AdMob.prepareInterstitial( {adId:admobid.interstitial, autoShow:true}ページがロードされた後に実行するだけです

    • 私が見つけたのは、AdMobがundefined

それで、私は何かを逃したのか、それとも何か間違ったことをしたのか知りたいですか?

ありがとうございました!

4

2 に答える 2

2

私はこの cordova-admob plugin の作成者です。

@Simonが前に述べたように、最良のチャンスは SPA に移行することです。そうは言っても、これが不可能な場合は、醜い回避策を試すことができますが、アプリの実装方法に大きく依存します。

すべてのリンクをインターセプトし、index.htmlajax 経由でロードしてみてください。ajax 経由で読み込まれると、本文内のコンテンツを読み込むことができますindex.html。新しいコンテンツのすべてのスクリプトを必ず評価してください。ここでは、実装方法の例を見つけることができます: http://plnkr.co/edit/ew21klKYRcfvjX8wrAY1

純粋なJavaScriptで実装されていますが、jQueryを使用している場合は、ライブをより簡単にすることができます$(document.body).load(...)

于 2016-05-19T12:53:31.047 に答える
1

複数のページを使用しないでください。Cordova のドキュメントに記載されているように、Single Page Applications はあなたの味方です。新しいページをロードすると、すべてのページに cordova.js を含めない限り、すべてのプラグインとその他の Cordova 機能が失われます。

SPA にリファクタリングできれば、さまざまな面で生活が楽になります。

コルドバのドキュメントを引用:

何よりもまず、Cordova アプリケーションは SPA (Single Page Application) 設計を採用する必要があります。大まかに定義すると、SPA は Web ページの 1 つの要求から実行されるクライアント側アプリケーションです。ユーザーはリソースの初期セット (HTML、CSS、および JavaScript) をロードし、その後の更新 (新しいビューの表示、データのロード) は AJAX を介して行われます。SPA は通常、より複雑なクライアント側アプリケーションに使用されます。GMail はその好例です。GMail を読み込んだ後、現在のページを実際に離れてまったく新しいページを読み込むのではなく、DOM を更新することで、メールの表示、編集、整理がすべて完了します。

SPA を使用すると、より効率的な方法でアプリケーションを編成するのに役立ちますが、Cordova アプリケーションに固有の利点もあります。Cordova アプリケーションは、プラグインを使用する前に、deviceready イベントが発生するまで待機する必要があります。SPA を使用せず、ユーザーがクリックしてあるページから別のページに移動する場合、プラグインを使用する前に deviceready が再び起動するのを待つ必要があります。アプリケーションが大きくなるにつれて、これは忘れがちです。

Cordova を使用しないことを選択した場合でも、単一ページ アーキテクチャを使用せずにモバイル アプリケーションを作成すると、パフォーマンスに重大な影響があります。これは、ページ間を移動するには、スクリプトやアセットなどを再読み込みする必要があるためです。これらのアセットがキャッシュされていても、パフォーマンスの問題は残ります。

于 2016-05-17T06:24:19.660 に答える