iOS_Swift Rewarded Video - adxcorp/ADXLibrary_Integration GitHub Wiki
AdMob Rewarded Video Ad Integration
Rewarded Video load์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋, ๋ฏธ๋ฆฌ load ํด๋์ ๋ค์ ์ฌ์ฉํ์๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.
- App ID๋ฅผ ์ด์ฉํ์ฌ GADMobileAds configuration
- GADRewardBasedVideoAd delegate ์ถ๊ฐ
- GADRequest๋ฅผ ์์ฑํ์ฌ ๋ฐ๊ธ๋ฐ์ผ์ Vungle placements ID๊ฐ ์๋ ๊ฒฝ์ฐ extra ๋ฐ์ดํฐ๋ก ์ถ๊ฐ
- GADRewardBasedVideoAd ์
loadRequest: withAdUnitID:๋ก ๊ด๊ณ ๋ก๋ - ๊ด๊ณ ๋ก๋๊ฐ ์๋ฃ๋๋ฉด
rewardBasedVideoAdDidReceiveAd:ํธ์ถ - GADRewardBasedVideoAd ์
isReady๋ก ํ์ ํ ๊ด๊ณ ๊ฐ ์๋์ง ํ์ธ ํ,presentFromRootViewController:๋ก ๋ฆฌ์๋ ๋น๋์ค ๋ ธ์ถ - ๊ด๊ณ ์์ฒญ์ ๋ชจ๋ ์๋ฃํ๋ฉด
rewardBasedVideoAd: didRewardUserWithReward:๊ฐ ํธ์ถ ๋๋ฏ๋ก,rewardBasedVideoAd: didRewardUserWithReward:๊ฐ ํธ์ถ ๋ ๊ฒฝ์ฐ์ ๋ฆฌ์๋ ์ง๊ธ ์ฒ๋ฆฌ
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
Rewarded Video load์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋, ๋ฏธ๋ฆฌ load ํด๋์ ๋ค์ ์ฌ์ฉํ์๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.
- delegate ์ถ๊ฐ
- MPRewardedVideo ์
loadAdWithAdUnitID:๋ก ๊ด๊ณ ๋ก๋ - ๊ด๊ณ ๋ก๋๊ฐ ์๋ฃ๋๋ฉด
rewardedVideoAdDidLoadForAdUnitID:ํธ์ถ - MPRewardedVideo ์
hasAdAvailableForAdUnitID:๋ก ํ์ ํ ๊ด๊ณ ๊ฐ ์๋์ง ํ์ธ ํ,presentAdForAdUnitID:๋ก ๋ฆฌ์๋ ๋น๋์ค ๋ ธ์ถ - ๊ด๊ณ ์์ฒญ์ ๋ชจ๋ ์๋ฃํ๋ฉด
rewardedVideoAdShouldRewardForAdUnitID:reward:๊ฐ ํธ์ถ ๋๋ฏ๋ก,rewardedVideoAdShouldRewardForAdUnitID:reward:๊ฐ ํธ์ถ ๋ ๊ฒฝ์ฐ์ ๋ฆฌ์๋ ์ง๊ธ ์ฒ๋ฆฌ
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)
}