忍者ブログ

フェレット倶楽部の備忘録

3歩あるいたら物を忘れてしまうぐらい物忘れの激しい管理人が触れた技術をメモしておくブログ

Unityにnendのインターステーシャル広告を導入

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

Unityにnendのインターステーシャル広告を導入

うっかりミスでハマりました

わかってしまえば簡単に導入できるのだが、知識不足でハマってしまった。
自分への戒めと、同じ凡ミスでハマる人が居ないようにメモを残しておきます。

どのタイミングでインターステーシャル広告を表示する?

AppCを使っていた時にリコネクト広告ということで終了時に1枚表示してから終了するようにしていた。
同じような使い方をしてみたいのでAndriodのバックボタンをフックとする。

AndroidのバックボタンでUnityを終了させる

AndroidのバックボタンでUnityを終了させる方法を調べると以下のようなコードに行き着く。
    void Update () {
        if (Application.platform == RuntimePlatform.Android) {
            if (Input.GetKey(KeyCode.Escape)) {
                Application.Quit();
                return;
            }
        }
    }
公式でもAndroidチェックなどはやっていないが、
if (Input.GetKey(KeyCode.Escape))
の部分は変わらない。

終了部分をインターステーシャルに置き換える

終了処理の部分を、nendのサンプルを元にインターステーシャル広告表示に置き換える。
広告が閉じられたら終了でいいのでFinish()を使う。

start時にロード処理を加え

    void Start () {
        #if UNITY_ANDROID
        NendAdInterstitial.Instance.Load("apiKey", "spotId");
        #endif
    }

終了部分を置き換える

Application.Quit()とreturnを削除し以下の内容に置き換える。
NendAdInterstitial.Instance.Finish();  

不具合発生

実機確認でバックボタンを押してみると一瞬だけインターステーシャル広告らしきダイアログが表示されるが消えてしまう。
フラグを立ててみたりしたが現象変わらずだった。

問い合わせてみた

インターステーシャル広告が使えないと今後困るのでnend側に問い合わせてみた。

解決

コードを送ってみると、Input.GetKeyではなくInput.GetKeyUpを使えば問題ないとのことだった。
そこで両者の違いを調べてみると
  • Input.GetKeyUpはボタンが話された時に呼び出される
  • Input.GetKeyはボタンが押されている間呼び出される
という違いがあった。
インターステーシャル広告はバックボタンで消すことが出来る仕様なので、
表示と非表示を繰り返したというわけだ。

単純にGetKeyとGetKeyUpの違いだったわけだが気をつけようと思う。
PR

コメント

ただいまコメントを受けつけておりません。

QRコード

P R