(EN) iOS_Swift Rewarded Video - adxcorp/ADXLibrary_Integration GitHub Wiki

AdMob Rewarded Video Ad Integration

Loading Rewarded Video Ads take some time. It is recommended that you pre-load it before using it.

  1. Configure ADMobileAds using App ID
  2. Add GADRewardBasedVideoAd delegate
  3. Create GADRequest and add Vungle placements ID as extra if you have one
  4. Call GADRewardBasedVideoAd's loadRequest: withAdUnitID: to load ad
  5. rewardBasedVideoAdDidReceiveAd: gets called when ad has been loaded
  6. Check if ad is available by calling GADRewardBasedVideoAd's isReady then call presentFromRootViewController: to show rewarded video ad
  7. When rewarded video ad has finished playing, rewardBasedVideoAd: didRewardUserWithReward: gets called. Once the callback gets called, then you may proceed to reward the user.

AppDelegate

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        GADMobileAds.configure(withApplicationID: "<YOUR_APP_ID>")
        
        return true
    }

MyViewController.m

import GoogleMobileAds
import VungleAdapter

class ADXAdMobRewardViewController: UIViewController, GADRewardBasedVideoAdDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        GADRewardBasedVideoAd.sharedInstance().delegate = self
    }
    @IBAction func selectShowAd(_ sender: Any) {
        
        if(GADRewardBasedVideoAd.sharedInstance().isReady) {
            GADRewardBasedVideoAd.sharedInstance().present(fromRootViewController: self)
        } else {
            let request = GADRequest()
            let extras = VungleAdNetworkExtras.init()
            let placements = NSArray.init(objects: "<VUNGLE PLACEMENT ID>", "<VUNGLE PLACEMENT ID>")
            
            let placementsArray = placements as NSArray as! [String]
            extras.allPlacements = placementsArray
            
            request.register(extras)
            request.testDevices = ["e527e0336ebd9354411d932aa50910ca"]
            
            GADRewardBasedVideoAd.sharedInstance().load(request, withAdUnitID: "<YOUR_ADUNIT_ID_HERE>")
        }
    }
    
    // MARK: - GADRewardBasedVideoAdDelegate
    
    func rewardBasedVideoAdDidOpen(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
        print("rewardBasedVideoAdDidOpen")
    }
    
    func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
        print("rewardBasedVideoAdDidClose")
    }
    
    func rewardBasedVideoAdDidReceive(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
        print("rewardBasedVideoAdDidReceive")
    }
    
    func rewardBasedVideoAdDidStartPlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
        print("rewardBasedVideoAdDidStartPlaying")
    }
    
    func rewardBasedVideoAdWillLeaveApplication(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
        print("rewardBasedVideoAdWillLeaveApplication")
    }
    
    func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, didFailToLoadWithError error: Error) {
        print("rewardBasedVideoAd")
        print("error :", error)
    }
    
    func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, didRewardUserWith reward: GADAdReward) {
        print("rewardBasedVideoAd")
    }

MoPub Rewarded Video Ad Integration

Loading Rewarded Video Ads take some time. It is recommended that you pre-load it before using it.

  1. Add delegate
  2. Call MPRewardedVideo's loadAdWithAdUnitID: to load ad
  3. rewardedVideoAdDidLoadForAdUnitID: gets called when ad has been loaded
  4. Call MPRewardedVideo's hasAdAvailableForAdUnitID: to make sure there is an ad to display then call presentAdForAdUnitID: to show rewarded video ad
  5. When rewarded video ad has finished playing, rewardedVideoAdShouldRewardForAdUnitID:reward: gets called. Once the callback gets called, then you may proceed to reward the user.

MyViewController.m

import MoPub

class ADXRewardViewController: UIViewController, MPRewardedVideoDelegate {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        MoPub.sharedInstance().initializeRewardedVideo(withGlobalMediationSettings: nil, delegate: self)
        MPRewardedVideo.loadAd(withAdUnitID: <YOUR_ADUNIT_ID_HERE>, withMediationSettings: nil)
    }
    
    @IBAction func selectShowAd(_ sender: Any) {
        if (MPRewardedVideo.hasAdAvailable(forAdUnitID: <YOUR_ADUNIT_ID_HERE>) == true) {
            MPRewardedVideo.presentAd(forAdUnitID: <YOUR_ADUNIT_ID_HERE>, from: self, with: nil)
        } else {
            MPRewardedVideo.loadAd(withAdUnitID: <YOUR_ADUNIT_ID_HERE>, withMediationSettings: nil)
        }
    }
    
    // MARK: - MPRewardedVideoDelegate
    
    func rewardedVideoAdDidLoad(forAdUnitID adUnitID: String!) {
        print("rewardedVideoAdDidLoad :", adUnitID)
    }
    
    func rewardedVideoAdDidAppear(forAdUnitID adUnitID: String!) {
        print("rewardedVideoAdDidAppear :", adUnitID)
    }

    func rewardedVideoAdDidExpire(forAdUnitID adUnitID: String!) {
        print("rewardedVideoAdDidExpire :", adUnitID)
    }
    
    func rewardedVideoAdWillAppear(forAdUnitID adUnitID: String!) {
        print("rewardedVideoAdWillAppear :", adUnitID)
    }
    
    func rewardedVideoAdDidDisappear(forAdUnitID adUnitID: String!) {
        print("rewardedVideoAdDidDisappear :", adUnitID)
    }
    
    func rewardedVideoAdWillDisappear(forAdUnitID adUnitID: String!) {
        print("rewardedVideoAdWillDisappear :", adUnitID)
    }
    
    func rewardedVideoAdDidReceiveTapEvent(forAdUnitID adUnitID: String!) {
        print("rewardedVideoAdDidReceiveTapEvent :", adUnitID)
    }
    
    func rewardedVideoAdWillLeaveApplication(forAdUnitID adUnitID: String!) {
        print("rewardedVideoAdWillLeaveApplication :", adUnitID)
    }
    
    func rewardedVideoAdDidFailToLoad(forAdUnitID adUnitID: String!, error: Error!) {
        print("rewardedVideoAdDidFailToLoad :", adUnitID)
        print("error :", error)
    }
    
    func rewardedVideoAdDidFailToPlay(forAdUnitID adUnitID: String!, error: Error!) {
        print("rewardedVideoAdDidFailToPlay :", adUnitID)
        print("error :", error)
    }
    
    func rewardedVideoAdShouldReward(forAdUnitID adUnitID: String!, reward: MPRewardedVideoReward!) {
        print("rewardedVideoAdShouldReward :", adUnitID)
        print("reward :", reward.currencyType)
    }