Мне удалось настроить рабочее пространство с несколькими различными целями. Лишь немногие из них запускают рекламу. Используя Google AdMob, я хотел убедиться, что код AdMob присутствует только в тех целях, которые включают рекламу.
В Xcode 11, swift 5 - используя Cocoapods - я правильно настроил файл pod так, чтобы «Google-Mobile-Ads-SDK» включался только в правильные цели.
Моя реализация использовала в Настройках сборки> Пользовательский флаг компилятора Swift определение флага «-DADS_ON», а затем с активными условиями компиляции (#if ADS_ON) для включения кода показа рекламы. Например:
#if ADS_ON
@IBOutlet weak var bannerView: GADBannerView!
#else
@IBOutlet weak var bannerView: UIView!
#endif
и
#if ADS_ON
bannerView.isHidden = false
bannerView.adUnitID = AdMobBannerId
bannerView.rootViewController = self
bannerView.load(GADRequest())
#endif
Включая / исключая определенные файлы из разных целей, я смог убедиться, что это работает правильно для целей с или без SDK.
Я создал пустой GADBannerView
@objc(GADBannerView) class GADBannerView : UIView {
// no code here
}
, чтобы у целей без рекламы также могла быть та же раскадровка.
Мой вопрос: это кажется неуклюжим и хрупкимЕсть ли лучшие методы для исключения SDK-зависимого кода из цели?