LARSAdController 3.0 是一个单例广告管理类,用于管理符合 LARSAdAdapter
协议的广告类。通过为每个广告网络使用单个实例,以最贴近最佳实践的方式管理广告,从而为广告商提供最佳发布平台,以最大程度地利用特定需求下的广告库存。目前有两个适配器可供使用(iAd 和 Google Ads)。适配器可以通过任何所需的广告框架进行扩展。
如果您只对 iAds 或 GoogleAds 感兴趣,而不是两者都感兴趣,则可以在您的 Podfile
中指定您只想使用一个而不是另一个。
platform :ios, '5.0'
pod 'LARSAdController/iAds', '~> 3.0'
pod 'LARSAdController/GoogleAds', '~> 3.0'
如果您只需要核心文件而无需任何广告适配器,则您的 Podfile
可能如下所示:
platform :ios, '5.0'
pod 'LARSAdController/Core', '~> 3.0'
根据您希望使用的组件,将包含适当的文件和框架。
恭喜!您现在可以忽略下一节中手动完成所有这些内容的说明。
如果您不使用 Cocoapods,则需要手动克隆此存储库,并将 Source/
目录添加到项目中。此外,您还需要手动添加所需的框架。
...就像一个原始人一样
您可以通过以下方式使用旧方法简单地克隆存储库,并将文件添加到项目中作为 git 子模块,如下所示:
git add submodule <third_party_folder> https://github.com/larsacus/LARSAdController.git --recursive
其中 <third_party_folder>
是您的项目文件结构中所有第三方代码所在的文件夹。
为了编译,您需要包含以下 Apple 框架:
iAd.framework
AdSupport.framework
(iOS 6 的弱连接)StoreKit.framework
AudioToolbox.framework
MessageUI.framework
SystemConfiguration.framework
CoreGraphics.framework
AdSupport.framework
(iOS 6 的弱连接)您还需要安装由 Google 提供的 Google AdMob SDK
。
这就完成了。技术上,这可以添加到任何足够大的并由视图控制器管理的 UIView
中。
Cocoapods 用户可以在这里继续阅读
在过去的日子里,LARSAdController
2.0 强迫你选择旋转处理。现在,由于广告管理类能够自动检测广告容器所处的视图控制器设置正确,因此不再需要这样做。
第一步是注册广告管理器将要使用的广告类。广告网络的优先级按照它们添加的顺序进行,因此首先注册的网络优先级最高,然后是次之,依此类推
在需要显示第一个横幅之前,在应用代理或其他方便的地方
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[[LARSAdController sharedManager] registerAdClass:[TOLAdAdapteriAds class]];
[[LARSAdController sharedManager] registerAdClass:[TOLAdAdapterGoogleAds class] withPublisherId:publisherId];
}
然后在您的视图控制器中只需要一行代码,就是要使用以下之一将容器添加到视图中
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[[LARSAdController sharedManager] addAdContainerToView:self.view withViewController:self];
}
或者简单的版本
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[[LARSAdController sharedManager] addAdContainerToViewInViewController:self];
}
一旦当前最高优先级的广告网络无法获取广告,它将等待下一个最高优先级的广告网络分配和发送请求,直到获取到广告。一旦优先级更高的广告网络再次获取到广告,它将隐藏较低优先级的广告横幅,清理它并显示较高优先级的网络横幅。
为了让你的生活更容易,你只需要将所有你想让你的视图控制器顶部或底部显示广告的视图控制器子类继承自 TOLAdViewController
。这样,当需要时,会自动将广告视图容器添加到视图控制器视图中。唯一的缺点是它在视图层次结构中的广告位置灵活性较差。
@interface MYBestViewController : TOLAdViewController
//BOOM - Ads
@end
如果你只想在特定条件下显示广告(比如当用户购买了某个内购升级时),那么只需要在 TOLAdViewController
子类中覆盖 -shouldDisplayAds
即可。如果 shouldDisplayAds
返回 NO
,则不会在 viewWillAppear:
上加载数据。
- (BOOL)shouldDisplayAds{
return ([self.purchaseTracker hasPurchasedUpgrade] == NO);
}
在过去,你只能将横幅视图添加到视图底部并从底部出现动画。现在,您不仅可以控制它位于视图的顶部或底部,还可以控制它是如何进入和退出屏幕的。
在 LARSAdController
上有两大新属性
@property (nonatomic) LARSAdControllerPresentationType presentationType;
@property (nonatomic) LARSAdControllerPinLocation pinningLocation;
以下为 presentationType
的选项。这些选项将根据枚举中指示的方向滑动广告横幅进入和退出
typedef NS_ENUM(NSInteger, LARSAdControllerPresentationType){
LARSAdControllerPresentationTypeBottom = 0,
LARSAdControllerPresentationTypeTop,
LARSAdControllerPresentationTypeLeft,
LARSAdControllerPresentationTypeRight
};
这些选项将广告视图容器固定在您指定的视图底部(默认)或顶部,并相应地布局横幅
typedef NS_ENUM(NSInteger, LARSAdControllerPinLocation){
LARSAdControllerPinLocationBottom = 0,
LARSAdControllerPinLocationTop
};
TOLAdAdapteriAds
TOLAdAdapterGoogleAds
为了为一个尚未创建的广告供应商创建新的广告适配器,只需创建一个新的符合 LARSAdAdapter
协议的 NSObject
子类。适配器需要一些必须存在的方法和属性才能正常工作,还有一些可选的属性,可以提供额外控制和横幅的功能。更详细的文档可以在 LARSAdAdapter.h
的头文件中找到。
一个好的开始是简单遵循 LARSAdAdapter
协议,编译并让所有的警告、错误和运行时断言帮助您完成实现。
@interface LARSAdControllerHouseAdsAdapter : NSObject <LARSAdAdapter>
//fill out the meaty part
@end
LARSAdController 3.0 的头文件使用 appledoc 完全文档化。要在 Xcode 中安装 docset,您需要安装 appledoc,然后在 LARSAdController
存储库的根目录中运行类似下面的命令来安装 docset。
appledoc -p "LARSAdController" -c "theonlylars" -d -n --company-id "com.theonlylars" --no-repeat-first-par -o ~/Docs Source
在上面的例子中,您需要在运行此命令之前在家目录中创建 Docs
目录。您同样可以将该路径改为任何方便的位置。appledoc 将在完成后将 docset 安装到 Xcode。
注意:如果您使用 cocoapods,文档将自动安装。
我喜欢在 GitHub 这里对页面进行引用和链接,但这不是必须的。
版权(c)2011 Lars Anderson,theonlylars
特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的个人免费使用本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、分包和/或销售软件复制品,并允许获得软件副本的个人执行上述操作,但有以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何形式的保证,无论明确还是隐含,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,不论源于合同、侵权或其他方式,是否因本软件、其使用或其他操作而产生的。
#ifdef DEBUG
)将提供测试广告。如果你的应用使用LARSAdController,并且想被包含在这个列表中,请在Twitter上告诉我,或者通过提交包含你的应用的pull request来实现。