cocos2d-xでnend広告の上下を片方ずつ表示する
cocos2d-xで作成したゲームにnendの広告を入れる際に、ステージ選択部では広告を下にしてゲームでは上にするなど広告を移動させることがあると思います。
その際、自分がやった方法を紹介します。
今回は、上用と下用にnendの広告枠を2つ取った場合の紹介です。
ゲームが起動したら最初のシーンで、以下のように上用と下用の広告を表示します。
topApiKey、topSpotIDとbottomApiKey、bottomSpotIDには前もってSportIDとApiKeyを入れておいてください。
NendModule::createNADViewTop(topApiKey, topSpotID,true); //上用の広告の生成 NendModule::createNADViewBottom(bottomApiKey, bottomSpotID,true); //下用の広告の作成
あとは、生成されたnend広告を表示と非表示をすることで上のみの表示や下のみ表示にします。
上のみ表示する場合は、以下のようにします。
NendModule::showNADView(topSpotID); //上用の広告を表示 NendModule::hideNADView(bottomSpotID); //下用の広告を非表示
showNADViewは*char型でspotIDを渡すことで、spotIDの広告のみに指示させます(spotID指定なしの場合は、全部の広告枠に対しての指示になるようです)。
すでに表示されている広告に対して、showNADViewをしても問題はないようです。
hideNADViewはshowNADViewの非表示版です。
下のみを表示にするときは、これを逆にすれば大丈夫です。
cocos2d-xでは、NendModuleは何かしらの指示を出さないとシーンを移動しても消えません。
そのためnendの広告枠は起動時に一度生成して、シーンの移動先などで表示したいようにshowNADViewやhideNADViewを使いましょう。
(おまけ)
最初hideNADViewによる非表示ではなく、releaseで広告を削除して遷移先のシーンでcreateNADViewTopなどをしていました。
そうすると、電波の都合などで広告が表示されていない状態でreleaseが呼ばれ広告がないためアプリが落ちるという状態になりました。
算数パズル クロスロードを作成中に起きたことでした。