Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@fakestarbaby

Corona Enterprise に頼らない簡単広告実装のススメ

Corona SDK 未対応の日本の広告会社とどう付き合うか

日本向けアプリを開発する場合は、やはり、日本の広告会社の広告を採用したいですよね。
しかし、残念ながら Corona SDK には、日本の広告会社に対応したプラグインが用意されていません。
また、日本の広告会社のほとんどは、Corona SDK に対応した SDK を提供していません。
そう、Corona SDK には未対応ということですね。

え、それってつまり、Corona SDK で日本の広告会社は利用出来ないっていうことですか?
いいえ、それは違います。

Corona Enterprise という有償プログラムを購入することによって、ネイティブ iOS / Android の実装が可能になります。
広告会社が配布している iOS SDK / Android SDK を実装して、Corona SDK で広告を表示させることは可能です。

有償の壁と実装の辛み

ちょっとした無料のカジュアルゲームに日本の広告会社の広告を採用しようとした場合、
わざわざ、有償である Corona Enterprise を購入して・・・というのは、とても現実的ではありません。

それに加えて、Corona Enterprise はネイティブ iOS / Android の実装が可能にはなりますが、
当然、Xcode や Android Studio などの開発環境を、別途、構築する必要が出て来ます。

Corona SDK の最大の魅力は、好きなエディタで Lua という超軽量の言語を用いて、
簡単にサクサク実装が出来る!という点に尽きると思いますが、
ただ、広告を表示したいだけなのに、開発環境を構築したり、Obj-C を書いたり、Java を書いたり、
というのは、ちょっとやり過ぎ感が否めません・・・というかやり過ぎです。

簡単に広告を実装したい

前提条件はありますが、Corona Enterprise に頼らず、簡単に日本の広告会社の広告を実装する方法があります。
実は、既に、過去に記事を書いてくれている方がいます。

こちらの記事を参考にすれば、簡単にバナー広告を実装することが可能です。
前提条件は、「広告会社が js タグによる広告表示をサポートしていること」ですね。
実装方法は、WebView を利用して、js タグが埋め込まれた html を読み込ませる感じです。

こちらの記事では、ウォール広告の実装についても書かれています。
GAME FEAT のウォール広告は、Corona Enterprise を導入していないと難しそうだ、という記述があります。
そう、残念ながら GAME FEAT は SDK の提供のみで、js タグによる実装はサポートされていないんですよね。
しかし、実は、Corona Enterprise に頼らなくても、GAME FEAT のウォール広告を実装する方法があるんです。

GAME FEAT は、実は、Web サイト向けのアフィリエイトサービスもやっているんですよね。
Web サイト向けということもあって、こちらは js タグによる広告表示をサポートしています。
こちらのサービスでアカウントを作成してアプリ登録すれば、js タグを発行して広告を表示出来るようになります。

AppliPromotion on Corona SDK

GAME FEAT のウォール広告について書いておきながら、今回は、
私がよくお世話になっている AppliPromotion のウォール広告を Corona SDK で表示させてみることにしましょう。

AppliPromotion の公式ページ Web サイトへの導入手順 にて、js タグによる広告表示の実装方法が記載されています。
実装コードで必要となるのは、AppliPromotion で登録したアプリに割り当てられる アプリ識別ID だけです。

実装コード

AppliPromotion のウォール広告を表示させるための実装コードです。

appliPromotion.lua
local appliPromotion = {}

--- Public: show
function appliPromotion.show()
  if appliPromotion.isVisible then return end

  native.showWebPopup(0, 0, display.contentWidth, display.contentHeight, "appliPromotion.html", {
    baseUrl = system.ResourceDirectory,
    urlRequest = function(event)
      local shouldLoad = true

      if event.errorCode then
        shouldLoad = false
        appliPromotion.isVisible = false
      end

      if event.url:find("ad.applipromotion.com") then
        if event.url:find("wall") then
          if appliPromotion.isVisible then
            shouldLoad = false
            appliPromotion.isVisible = false
          else
            appliPromotion.isVisible = true
          end
        elseif event.url:find("open") then
          shouldLoad = false
          appliPromotion.isVisible = false
          system.openURL(event.url)
        end
      end

      return shouldLoad
    end,
  })
end

return appliPromotion

上記の実装コードにて、js タグが埋め込まれた html を WebView に読み込んでいます。

appliPromotion.html
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
    <script type="text/javascript">
      window.onload = function() {
        history.pushState(null, null, location.href);
        document.getElementById("appp").click();
      };
    </script>
  </head>
  <body style="margin:0; padding:0;">
    <a id="appp" ak="XXXXXXXXXXXXXXXX" href="#" apppdisp="same"></a>
    <script src="http://ad.applipromotion.com/v2h/wall.js" charset="UTF-8"></script>
  </body>
</html>

XXXXXXXXXXXXXXXX の部分は、割り当てられた アプリ識別ID と置き換えて下さい。

実際に読み込まれる html では、js を利用して、強制的に、
ウォール広告を表示させるためのリンクをクリックさせています。

これで AppliPromotion のウォール広告を表示させるための準備は整いました。
後は、任意のタイミングで実装コードを呼び出すだけです。

main.lua
local appliPromotion = require("appliPromotion")
appliPromotion.show()

簡単ですね!

注意事項

プリロールアド機能は使えません

AppliPromotion のウォール広告には、プリロールアドと呼ばれる機能が付随しています。
これは、ウォール広告を表示させる前に、フルページ広告を表示させるという仕組みになっているんですが、
残念ながら、js タグによるウォール広告の表示ではサポートされていません。
AppliPromotion さん、実装してくれないですかね?

Apple リジェクト対策

私の経験上、初回のリリース申請にて、ウォール広告を表示させている場合、
Apple の審査にてリジェクトされる可能性が極めて高いです。
そのため、審査中はウォール広告を非表示にする対応が必要となります。
AppliPromotion には、まさに、そのための機能が用意してあるんですが、
残念ながら、こちらも、js タグによるウォール広告の表示ではサポートされていません。
その為、別途、外部から広告の表示、非表示を制御するための仕掛けが必要になります。

私は、Parse を利用して、制御するための仕組みを導入しています。

Corona SDK の魅力を最大限に活かそう

ウォール広告に関しても、広告会社が js タグによる広告表示をサポートしてさえいれば、
今回と同様な実装コードで、バナー広告やウォール広告を表示することが可能です。
GAME FEAT も同様の実装でウォール広告を表示出来ることは、既に、確認済みです。

Corona Enterprise に頼らないことで、広告に関しては、
多少は妥協すべき点が出て来てしまいますが、それでも、
Corona SDK だけで一環して作業が完結する、ということは非常に魅力的ですね。

それでは、良い Corona Life を!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?