iOS SDK Advanced Usage
TableViewAdPlacer
TableViewAdPlacer is used for displaying dynamic banner ads in UITableViews. Dynamic banner ads have their own predefined positions thus, they will not be loaded until the user scrolls to that specific position.
This comes with a few advantages:
- Loading banner ads not at the initial screen load, but rather on user scroll action increases load time performance of your screens.
- Loading banner ads only when they will be visible to the user, increases viewability metrics.
- Predefined positions can be updated without the need of sending a new app update, which gives the app owners ability to change the banner positions even when the app is live.
- As the banners are displayed dynamically, app owners can remove the banners from certain pages without the need of a new app update. Just like changing banner positions, this can also be done while the app is live.
Loading and displaying of banner ads are handled within TableViewAdPlacer which makes integration of banner ads quite easy.
Preconditions
With only a few lines of code you can start using TableViewAdPlacer on your projects. However, there is only one precondition for using it:
- If you are using
UITableView'sdequeueReusableCell(withIdentifier identifier: String, for indexPath: IndexPath)then you need to change it todequeueReusableCell(withIdentifier identifier: String). - If you are using
editingStyleForRowAtimplementation for row edit actions, then you need to change it toeditActionsForRowAt.
Integration
Step 1: After creating your UITableView and setting its delegate and dataSource properties create a TableViewAdPlacer object.
Step 2: Once the TableViewAdPlacer object is created, set its adCategories and pass your UITableView to the setTableView function.
Step 3: Finally change your myTableView.reloadData() calls with adPlacer.reloadWithAds().
Done: That's it! Now your app is ready to show dynamic banner ads.
Full Example
- Swift
- Objective-C
class MyViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {@IBOutlet weak var myTableView: UITableView!var adPlacer: TableViewAdPlacer!override func viewDidLoad() {super.viewDidLoad()// Register cells and configure myTableView etc.// ...myTableView.dataSource = selfmyTableView.delegate = selfadPlacer = TableViewAdPlacer()adPlacer.adCategories = adCategoriesadPlacer.setTableView(myTableView)}override func viewDidAppear(_ animated: Bool) {super.viewDidAppear(animated)adPlacer.tableViewIsVisible() // Enable auto refresh on loaded banner ads}override func viewDidDisappear(_ animated: Bool) {super.viewDidDisappear(animated)adPlacer.tableViewIsInvisible() // Disable auto refresh when user leaves screen}func loadPage() {// Create your data to be displayed// ...adPlacer.reloadWithAds() // myTableView.reloadData()}}