過去にObjective-Cで書いたアプリを久しぶりにメンテしようと思い、AdMobのSDKを最新の8.0.0に上げた。(注意:7.69.0でも同じ問題出てほっといたもの)
ところが起動してタイトル画面が出てすぐにスレッドエラーだかが出て止まってしまった。
公式のインストールガイドどおりにやってるのだがダメ。
公式のインストールガイドどおりにやってるのだがダメ。
インストールするFrameworkも少し増えてるし、公式ガイドでGoogleMobileAds.frameworkとなってるのがダウンロードしたフォルダではGoogleMobileAds.xcframeworkになっていて戸惑ったが、後者をそのままインストールしていいようだ。
クリーンビルドするまで何やっても動かなかったんで、これ重要!
んで、以下のように画面サイズに応じてバナーの横幅を指定してやるんだって。
//新しいアダプティブバナーのコードが以下(AdMob公式より)
CGRect frame = self.view.frame;
//iOS11.0以上の時の処理
if (@available(iOS 11.0, *)) {
frame = UIEdgeInsetsInsetRect(self.view.frame, self.view.safeAreaInsets);
}
CGFloat viewWidth = frame.size.width;
//バナーサイズ設定
adMobBanner = [[GADBannerView alloc]initWithAdSize:GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)];
GADBannerViewDelegateが変わってた
これまで
- (void)adViewDidReceiveAd:(GADBannerView *)bannerView
とやってたのが、
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView
になってる。(これが現在の正解ね)
細かく言うと、AdMobのリファレンスサイトでもサンプルコードが
- (void)adViewDidReceiveAd:(GADBannerView *)adView
などと書かれてたり、いろいろ混在している。
いつ頃変わったのかわかんないけど、こういうのもメンテナンスしてほしいよな。いい給料もらってる天才ばかり集まってるだろうに。
adViewDidReceiveAdでもエラーもWarningも出ないし、コード入力時のサジェストも出ないからわからんわ。
ということで、delegate関係は全部SDKのページ見て直したわ。
0 件のコメント:
コメントを投稿