Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languageswift
class TableViewInfiniteScrollViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    
    var tableView:UITableView!
    ...
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView = UITableView(frame: self.view.bounds, style: .plain)
        // Table view configurations.
        ...
        // Show the ads.
        let infiniteScrollConfigId = ConfigBuilder.companion.INFINITE_SCROLL_TEST_R89_CONFIG_ID
        RefineryAdFactoryR89AdFactory.shared.createInfiniteScroll(
          configurationID: infiniteScrollConfigId, 
          scrollView: tableView, 
          // Specify the item ad tag here as well
          scrollItemAdWrapperTag: "infiniteScroll_ad_wrapper_tag", 
          lifecycleCallbacks: nil
        )
    }
 ...
}

...

Code Block
languageswift
import UIKit
import R89SDK

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
 
    var collectionView: UICollectionView!
    ...
    override func viewDidLoad() {
        super.viewDidLoad()
        // Configure the collection view layout
        ...
        let infiniteScrollConfigId = ConfigBuilder.companion.INFINITE_SCROLL_TEST_R89_CONFIG_ID
        RefineryAdFactoryR89AdFactory.shared.createInfiniteScroll(
          configurationID: infiniteScrollConfigId,
          scrollView: self.collectionView,
          scrollItemAdWrapperTag: "infiniteScroll_ad_wrapper_tag",
          lifecycleCallbacks: nil)
    }
    ...
}

...

Code Block
languageswift
   let infiniteScrollConfigId = ConfigBuilder.companion.INFINITE_SCROLL_TEST_R89_CONFIG_ID
   let infiniteScrollId = RefineryAdFactoryR89AdFactory.shared.createManualInfiniteScroll(
        configurationID: infiniteScrollConfigId,
        lifecycleCallbacks: nil)

...

Code Block
languageswift
let cellPosition = manualInfScrollViewCell.getPosition() 
let adWrapper = manualInfScrollViewCell.adWrapper

RefineryAdFactoryR89AdFactory.shared.getInfiniteScrollAdForIndex(
  infiniteScrollId: infiniteScrollId,
  itemIndex: Int32(cellPosition),
  itemAdWrapper: adWrapper,
  childAdLifecycle: nil
)
Note

Careful on the implementation ofRefineryAdFactoryR89AdFactory.shared.getInfiniteScrollAdForIndex()method.

This needs to be implemented according to your implementation of the infinite scroll.
If you have paginated content this position needs to account for that

EX: 20 items per page so first 20 items go from 0 to 19 and the first item of the second page is not 0 is 20

formula beeing -> pageItemIndex + (pageSize*currentPage)

so first item position of first page is 0 + (20*0)

item 0 plus 20 multiplied by the current page index, so page 1 has index 0

and first item position of the second page is 0 + (20*1)

item 0 plus 20 multiplied by the current page index, so page 2 has index 1

second item first page would be 1 + (20*0) = 1

second item second page would be 1 + (20*1) = 21

and so on

...

Code Block
languageswift
import UIKit
import R89SDK

// 1. Extend from the InfiniteScrollEventListener
class InfiniteScrollLifecycleListener: InfiniteScrollEventListener {
    ...
    override func onAdItemLoaded(itemIdInData: Int32) {
        // Ad has been loaded for the position
    }
    ...
}

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
 
    var collectionView: UICollectionView!
    ...
    override func viewDidLoad() {
        super.viewDidLoad()
        // Configure the collection view layout
        ...
        let infiniteScrollConfigId = ConfigBuilder.companion.INFINITE_SCROLL_TEST_R89_CONFIG_ID
        RefineryAdFactoryR89AdFactory.shared.createInfiniteScroll(
          configurationID: infiniteScrollConfigId,
          scrollView: self.collectionView,
          scrollItemAdWrapperTag: "infiniteScroll_ad_wrapper_tag",
          // 2. Pass the InfiniteScrollLifecycleListener instance via lifecycleCallbacks
          lifecycleCallbacks: InfiniteScrollLifecycleListener())
    }
    ...
}

...

Code Block
languageswift
// 1. Extend from the BannerEventListener
private class BannerLifecycleListener : BannerEventListener {
    ...
    override func onLoaded() {
        // Ad has been loaded
    }
    ...
}

...
RefineryAdFactoryR89AdFactory.shared.getInfiniteScrollAdForIndex(
  infiniteScrollId: infiniteScrollId,
  itemIndex: Int32(cellPosition),
  itemAdWrapper: adWrapper,
  childAdLifecycle: BannerLifecycleListener()
)
...

...