リワード広告の導入
前回の続き。前回利用したadmobのcocos2d-xへの導入サイト(Google公式)には動画リワード広告の導入方法が無かったので、ググったところ非常に参考になるサイトを発見しました。
cocos2dxのプロジェクトで、iOS,Android両方でfirebaseAdmobのバナー、インタースティシャル、動画リワード広告を表示するサンプル
上記で紹介されている方法は、どちらかというとCocos2d-xへの導入ではなく、ネイティブ側(iOSはobjective-c / Androidはjava)で広告を実装し、その処理をCocos2d-xから実行している感じになります。
これだと広告処理をiOSとAndroidの個別に記述しなければならず手間なのですが、記事の後半で導入するConsentSDKはネイティブ側で設定しなければならないので逆に都合が良いでしょう(たぶん)。
ちょっと追記が必要
iOS側のソースには問題は無かったのですが、android側ではリワード広告を表示する処理がコメントアウトされていました。関数自体は存在するのですが、実行するとアプリはクラッシュします。なので、その関数showRewardedVideoを以下の様に書き換えました。
AppActivity.java
Githubの使い方が分からないので、ここにソースを書くことを許してください。
public void showRewardedVideo() { runOnUiThread(new Runnable() { @Override public void run() { if (mRewardedVideoAd.isLoaded()) { mRewardedVideoAd.show(); } } }); }
あと新しいadmobにはonRewardedVideoCompletedというライフサイクル関数が追加されているのでOverrideしておかないとエラーになります。
onRewardedがあれば必要なさそうなライフサイクルだけど何に使うんだろ?
@Override public void onRewardedVideoCompleted() { Log.d("AppActivity", "onRewardedVideoCompleted"); Toast.makeText(this, "onRewardedVideoCompleted", Toast.LENGTH_SHORT).show(); }
そんなこんなで無事導入できました。
Nexus7はターミナルからならキャプチャできた。
リワード広告はちょっと腑に落ちない点があり、まだまだ時間をかける必要がある…。 pic.twitter.com/jNHpWI03YV— 柳澤@アプリ作るよ (@designdrill) 2018年8月6日
ConsentSDKによるGDPRへの対応
Concent SDKはEU(EEA)で導入されたGDPRに対応するため、googleが用意した【広告に関するユーザー情報の扱いについての同意を得るための仕組み】を提供します。GDPRは広告以外にもユーザーに関する個人情報まわりすべてに関わるのですが、ConsentSDKのデフォルトの文言では広告にしか言及していません(後述のキャプチャ参照)。とはいえ表示するウインドウはhtmlで編集できる場所に納められており、開発者は自由に文言を変更できます。FirebaseのAnalyticsなども利用する場合は少し文言を足した方が良いのかもしれません。
→参考:google検索「gdpr アプリ 対応」
ボタンはデフォルトで3つですが必要に応じて非表示にできます。私の場合は最後の「有料版」への誘導は必要ないので右のように2つにしました。
上記画像でNoを選択すると「ユーザー情報を取得しないタイプの広告にするので同意してくれませんか?」的なウインドウに切り替わります(下画像左)。
ちなみに「How ~ uses your data」の部分をタップすると開発者が作成しなければならないプライバシーポリシーのサイトにリンクします。
あと上画像のテキスト部分「Learn how ~ and use data」をタップすると下画像右のように、データを利用する広告会社の名前が表示されます。
公式サイトの説明
公式サイトは英語のみです。次項で日本語で説明されたサイトを紹介しますが、序盤のsdkの導入については公式ページの方が詳しいので確認しておくと良いと思います。
![](https://developers.google.com/admob/images/updated_admob_icon_mark_only_RGB_sm_trans.png?hl=ja)
Requesting Consent from European Users.ConsentSDKをAndroidに導入するためのサイト(英語)。
。
![](https://developers.google.com/admob/images/updated_admob_icon_mark_only_RGB_sm_trans.png?hl=ja)
Requesting Consent from European Users.ConsentSDKをiOSに導入するためのサイト(英語)。
。
同意フォームはhtmlで用意されているのでコンテンツにあわせて変更することができます。
でもプロジェクトファイル内に見当たらないしネット上にあるような気もします。英文書けないので変更する予定はないから良いけど…。あと以下はAndroidでiOSはどういう風に組み込まれているのだろう?。html自体は同じだと思うけど。
![](http://jquerystudy.info/wordpress/wp-content/uploads/GitHub_Logo.png)
同意のフォームはhtmlで提供されているので開発者はコンテンツにあわせて変更することができます(Android)。
日本語での説明サイト – iOS
公式サイトも親切なのですがadmobの連携の具体的なサンプルソースはありません。そこでググったらステキなページがありました。
![](http://jquerystudy.info/wordpress/wp-content/uploads/dolice.png)
EU一般データ保護規則(GDPR)とはEU在住のユーザの情報を取得する場合に、ちゃんとユーザから同意を得ないといけないよ、というEUの法案
。
日本語での説明サイト – Android
Androidでは以下のサイトが詳しいです。
ページ内の最後の項にある「PersonalizedAdManager」のソースコードも導入する必要があります。
![](https://cdn.qiita.com/assets/qiita-fb-2887e7b4aad86fd8c25cea84846f2236.png)
EU一般データ保護規則(GDPR)とはEU在住のユーザの情報を取得する場合に、ちゃんとユーザから同意を得ないといけないよ、というEUの法案
。
AndroidのSDKバージョン
AndroidStudioでの導入作業は公式サイトなどを参考にしてもビルドが通らないことが多く大変でした。大抵はsdkのバージョンにあわせてgradleの設定を書き換えることで対処できました。バージョンを上げるとセキュリティが強化されるらしいのですが、それに合わせて色々と手続きが必要になるケースがでてくるらしいです。今回はadmobやconsentだけなのでトラブルは少なめでしたが…。
でも、きちんと対応すればgooglePlayでの検索や類似アプリでの紹介で優遇してくれそうな気がしなくもないので頑張りたいところです。
「minSdkVersionを14以上にしてください」など分かりやすいエラーメッセージの場合は対処が楽なのですが、以下リンクのように想像も付かないメッセージから対処するのは大変でした。
→参考:解决Android中Error:resource
Androidのsdkのバージョンは短期間で上がり、少し前までビルドが通っていたプロジェクトがエラーを吐くようになります。今回は久しぶりに開発環境を整えたので尚更…。あぁ、前回アプリ(脱出ゲーム:4Rooms)をリリースしてから1年が経つのか…。
twitterを本格的に初めてみた。ブログの更新記事をつぶやくのがメイン。あとCocos2dやUnity、その他アプリ開発に関連するツイッターの方をフォローして情報も集められたらなぁと思います。
— 柳澤@ゲーム作るよ (@designdrill) 2015, 12月 28