iOS SDK Advanced Usage
TableViewAdPlacer
TableViewAdPlacer
is used for displaying dynamic banner ads in UITableView
s. 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
editingStyleForRowAt
implementation 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()}}