我有一个有两个版本的应用程序,一个免费,一个付费。我使用相同的代码和两个不同的目标,我有预处理器宏定义一个变量,这样我就可以知道何时加载广告。
到目前为止一直运作正常,直到今天Apple拒绝了我的付费版本,因为它有libGoogleAdMobAds.a使用的广告标识符
我包含了lib,但从未在付费版本上使用它,因为没有展示广告,但如果我不显示广告,他们就会拒绝该应用。
我遇到的问题是,当我将这个lib包含在我的免费应用程序的几个文件中时,我不知道如何在没有admob lib的情况下编译我的付费版本。
那么,我如何组织我的文件以包含admob文件并将它们包含在免费版本中,但是在编译付费版本时将它们从二进制文件中删除并能够编译我的应用程序?
由于
快速更新: 这是我如何获取代码的示例:
#import <UIKit/UIKit.h>
#import "GADBannerView.h"
#import "GADBannerViewDelegate.h"
<other imports here>
@interface testController : UITableViewController <GADBannerViewDelegate>{
GADBannerView *bannerView_;
}
我尝试了以下内容:
#import <UIKit/UIKit.h>
#ifdef FREE_VERSION
#import "GADBannerView.h"
#import "GADBannerViewDelegate.h"
#endif
<other imports here>
@interface testController : UITableViewController <GADBannerViewDelegate>{
GADBannerView *bannerView_;
}
所以,我不能在那里使用ifdef,因为如果我在导入上使用它,在&#34;接口&#34;我得到一个未定义的&#34; GADBannerViewDelegate&#34;
答案 0 :(得分:0)
假设您有两个不同的目标,一个用于免费,一个用于付费,只需从&#34;链接二进制库中删除libGoogleAdMobAds.a
&# 34;在&#34;构建阶段&#34; 支付目标的一部分。
如果您使用的是CocoaPods,则可以指定每个目标的依赖关系,并且只在免费目标中包含一个库,如下所示:
target :free do
pod 'Google-AdMob-Ads-SDK'
end
答案 1 :(得分:0)
你有两个版本,所以我猜你应该有2个不同的目标,1个用于免费应用,另一个用于付费版本,所以首先你应该只将admob lib添加到免费应用的目标。其次是使用下面的代码来显示只有免费版本的admob
#ifdef FREE_VERSION
// #import admob and show ad
#endif
此ifdef条件中的代码将不符合付费版本
[更新] 您可以使用以下代码进行委托
#ifdef FREE_VERSION
#import abmob
#define ARGS admobDelegate
#endif
@interface DetailViewController : UIViewController<ARGS>