所以我正在学习如何使用相同的代码库来构建应用程序的免费版和PAID版的教程。
它展示了如何为“FREE”设置DEFINE,并且我已经完成了所有这些工作。似乎被掩盖的是如何处理这个类定义。对于免费应用程序,它需要是GADBannerViewDelegate,GADInterstitialDelegate的委托,而PAID版本则不是。
所以我希望建立这样的东西:
#if FREE
class GameViewController: UIViewController, GKGameCenterControllerDelegate, GADBannerViewDelegate, GADInterstitialDelegate {
#else
class GameViewController: UIViewController, GKGameCenterControllerDelegate{
#endif
但那是无效的,我在阅读完文档之后就明白了原因。我不明白的是,如何处理这个问题。作为一种解决方法,我认为我只是让PAID版本也有这些GoogleAd代表。但后来苹果公司拒绝了我的应用程序,因为包括这样看起来就像我的应用程序正在提供广告,当它不是,而且这违反了规则。
所以现在,每当我构建PAID vs FREE应用程序时,我只是手动编辑代码来更改声明。它有效,但是很愚蠢。必须有一种自动化方法,对吗?
答案 0 :(得分:4)
您可以使用extension
to implement protocols:
class GameViewController: UIViewController, GKGameCenterControllerDelegate {
#if FREE
var bannerView: GABannerView!
var interstitial: GADInterstitial!
#endif
override func viewDidLoad() {
super.viewDidLoad()
#if FREE
bannerView = GADBannerView(adSize:kGADAdSizeBanner)
bannerView.delegate = self
interstitial = GADInterstitial(adUnitID: "...")
interstitail.delegate = self
// ... other FREE stuff
#endif
// common stuff
}
}
#if FREE
extension GameViewController: GADBannerViewDelegate, GADInterstitialDelegate {
// Ad delegate methods
}
#endif