Сбой AdMob с [GADObjectPrivate changeState:]: нераспознанный селектор

Я установил AdMob SDK 6.2.0 (Xcode 4.5 (4G182), и я тестирую на iPhone 4S и симуляторе). Я последовал этому уроку и хочу, чтобы AdMob показывал баннер один раз. Но он вылетает на последней строке:

self.bannerView = [[GADBannerView alloc]
               initWithFrame:CGRectMake(0.0,
                                        self.view.frame.size.height -
                                        GAD_SIZE_320x50.height,
                                        GAD_SIZE_320x50.width,
                                        GAD_SIZE_320x50.height)];

self.bannerView.delegate = self;
self.bannerView.adUnitID = @"xREMOVEDBYMEx";
self.bannerView.rootViewController = self;
[self.view addSubview:self.bannerView];
GADRequest * request = [GADRequest request];
request.testing = YES;
[self.bannerView loadRequest:request];

Авария

2012-09-28 09:03:58.268 NewProject[1467:c07] -[GADObjectPrivate changeState:]: нераспознанный селектор отправлен в экземпляр 0x95c17d0 2012-09-28 09: 03: 58.276 NewProject [1467: c07] * Завершение работы приложения из-за необработанное исключение 'NSInvalidArgumentException', причина: '-[GADObjectPrivate changeState:]: нераспознанный селектор, отправленный экземпляру 0x95c17d0'

Для меня это похоже на ошибку в библиотеке, но я думаю, что это очень маловероятно. Какие-нибудь мысли?

РЕДАКТИРОВАТЬ: точно такой же код работает в примерах проектов. Есть ли что-то, что я могу сделать неправильно с моим файлом проекта, что приведет к этой ошибке?

4 ответа

Решение

Вам нужно добавить -ObjC на другие флаги компоновщика настройки сборки цели вашего приложения:

  1. Нажмите синий значок проекта верхнего уровня в XCode
  2. Выберите цель и перейдите в Настройки сборки
  3. Под другими флагами компоновщика добавить -ObjC для выпуска и отладки

Источник: https://developers.google.com/mobile-ads-sdk/docs/admob/mediation

Также обязательно сделайте чистку и восстановите

Лучшее решение для меня - использовать флаг -force_load вместо -ObjCвведите описание изображения здесь

Если у вас все еще есть проблемы, убедитесь, что это -ObjC, а не -Objc. Боже, провел недели, пытаясь понять, почему.

Для тех из вас, кто пытался добавить флаг компоновщика Obj-c и все еще получал ту же ошибку "нераспознанный селектор отправлен в экземпляр" при попытке загрузить объявление, я нашел исправление. Это для новейшего XCode (версия 8.1).

Для справки:

  • Я добавил Google AdMob, используя cocoapods.
  • Я использовал раскадровку, чтобы установить выходное соединение с моим viewcontroller, и GADBannerView НЕ был доступен как класс, поэтому я написал его, как и большинство людей.
  • В одном из ответов на стеке потока, который я видел, для пользовательского класса для баннера было установлено значение GADBannerView, которое, как я предполагаю, произойдет автоматически, если это будет опция в раскрывающемся списке при добавлении выхода. Для меня это не было, так как я должен был напечатать это в себе.

Не указан пользовательский класс

Глядя на выпадающий список, я увидел, что GADBannerView был доступен в качестве опции, и выбрал его.

Доступен класс GADBannerView

После его выбора приложение работало без сбоев, не нужно добавлять флаг компоновщика (у меня по умолчанию ничего не было) или что-то еще.

Надеюсь, это поможет кому-то еще!

Другие вопросы по тегам