├── Images ├── podspec_file_changes.png └── jenkins_ios_adapter_job.png ├── AppLovin MAX Demo App - ObjC ├── AppLovin MAX Demo App - ObjC │ ├── Supporting Files │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ ├── bug.imageset │ │ │ │ ├── bug.png │ │ │ │ └── Contents.json │ │ │ ├── mute.imageset │ │ │ │ ├── mute.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── 1024.png │ │ │ │ ├── 120.png │ │ │ │ ├── 152.png │ │ │ │ ├── 167.png │ │ │ │ ├── 180.png │ │ │ │ ├── 20.png │ │ │ │ ├── 29.png │ │ │ │ ├── 40-1.png │ │ │ │ ├── 40-2.png │ │ │ │ ├── 40.png │ │ │ │ ├── 58-1.png │ │ │ │ ├── 58.png │ │ │ │ ├── 60.png │ │ │ │ ├── 76.png │ │ │ │ ├── 80-1.png │ │ │ │ ├── 80.png │ │ │ │ ├── 87.png │ │ │ │ ├── 120-1.png │ │ │ │ └── Contents.json │ │ │ ├── unmute.imageset │ │ │ │ ├── unmute.png │ │ │ │ └── Contents.json │ │ │ └── logo.imageset │ │ │ │ ├── square_logo_nontransparent.png │ │ │ │ ├── square_logo_nontransparent@2x.png │ │ │ │ ├── square_logo_nontransparent@3x.png │ │ │ │ └── Contents.json │ │ ├── main.m │ │ └── Info.plist │ ├── Base Classes │ │ ├── ALHomeViewController.h │ │ ├── ALTextCollectionViewCell.m │ │ ├── ALTextCollectionViewCell.h │ │ ├── ALBaseAdViewController.h │ │ └── ALBaseAdViewController.m │ ├── ALAppDelegate.h │ ├── MAX │ │ ├── MRECs │ │ │ ├── ALMAXMRecTableViewController.h │ │ │ ├── ALMAXAutoLayoutMRecAdViewController.h │ │ │ ├── ALMAXFrameLayoutMRecAdViewController.h │ │ │ ├── ALMAXInterfaceBuilderMRecAdViewController.h │ │ │ ├── UI │ │ │ │ ├── ALMAXMRecTableViewCell.h │ │ │ │ └── ALMAXMRecTableViewCell.m │ │ │ ├── ALMAXInterfaceBuilderMRecAdViewController.m │ │ │ └── ALMAXFrameLayoutMRecAdViewController.m │ │ ├── Rewarded │ │ │ └── ALMAXRewardedAdViewController.h │ │ ├── App Open Ads │ │ │ ├── ALMAXAppOpenAdViewController.h │ │ │ └── ALMAXAppOpenAdViewController.m │ │ ├── Interstitials │ │ │ └── ALMAXInterstitialAdViewController.h │ │ ├── Native Ads │ │ │ ├── ALMAXAdPlacerTableViewController.h │ │ │ ├── ALMAXManualNativeAdViewController.h │ │ │ ├── ALMAXTemplateNativeAdViewController.h │ │ │ ├── ALMAXAdPlacerCollectionViewController.h │ │ │ ├── ALMAXManualNativeLateBindingAdViewController.h │ │ │ ├── ALMAXAdPlacerTableViewController.m │ │ │ └── ALMAXAdPlacerCollectionViewController.m │ │ └── Banners │ │ │ ├── ALMAXAutoLayoutBannerAdViewController.h │ │ │ ├── ALMAXFrameLayoutBannerAdViewController.h │ │ │ ├── ALMAXInterfaceBuilderBannerAdViewController.h │ │ │ ├── ALMAXInterfaceBuilderBannerAdViewController.m │ │ │ └── ALMAXFrameLayoutBannerAdViewController.m │ └── ALAppDelegate.m └── Podfile ├── AppLovin MAX Demo App - Swift ├── AppLovin MAX Demo App - Swift │ ├── Supporting Files │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ ├── bug.imageset │ │ │ │ ├── bug.png │ │ │ │ └── Contents.json │ │ │ ├── mute.imageset │ │ │ │ ├── mute.png │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── 20.png │ │ │ │ ├── 29.png │ │ │ │ ├── 40.png │ │ │ │ ├── 58.png │ │ │ │ ├── 60.png │ │ │ │ ├── 76.png │ │ │ │ ├── 80.png │ │ │ │ ├── 87.png │ │ │ │ ├── 1024.png │ │ │ │ ├── 120.png │ │ │ │ ├── 152.png │ │ │ │ ├── 167.png │ │ │ │ ├── 180.png │ │ │ │ ├── 40-1.png │ │ │ │ ├── 40-2.png │ │ │ │ ├── 58-1.png │ │ │ │ ├── 80-1.png │ │ │ │ ├── 120-1.png │ │ │ │ └── Contents.json │ │ │ ├── unmute.imageset │ │ │ │ ├── unmute.png │ │ │ │ └── Contents.json │ │ │ └── logo.imageset │ │ │ │ ├── square_logo_nontransparent.png │ │ │ │ ├── square_logo_nontransparent@2x.png │ │ │ │ ├── square_logo_nontransparent@3x.png │ │ │ │ └── Contents.json │ │ ├── main.swift │ │ └── Info.plist │ ├── Base Classes │ │ ├── ALTextCollectionViewCell.swift │ │ ├── ALBaseAdViewController.swift │ │ └── ALDemoAdViewSwiftUIViewModel.swift │ ├── MAX │ │ ├── MRECs │ │ │ ├── ALMAXSwiftUIMRecAdViewController.swift │ │ │ ├── UI │ │ │ │ └── ALMAXMRecTableViewCell.swift │ │ │ ├── ALMAXInterfaceBuilderMRecAdViewController.swift │ │ │ ├── ALMAXFrameLayoutMRecAdViewController.swift │ │ │ └── ALMAXAutoLayoutMRecAdViewController.swift │ │ ├── Banners │ │ │ ├── ALMAXSwiftUIBannerAdViewController.swift │ │ │ ├── ALMAXInterfaceBuilderBannerAdViewController.swift │ │ │ ├── ALMAXFrameLayoutBannerAdViewController.swift │ │ │ └── ALMAXAutoLayoutBannerAdViewController.swift │ │ ├── Native Ads │ │ │ ├── ALMAXSwiftUITemplateNativeAdViewController.swift │ │ │ ├── ALMAXAdPlacerTableViewController.swift │ │ │ └── ALMAXAdPlacerCollectionViewController.swift │ │ ├── App Open Ads │ │ │ └── ALMAXAppOpenAdViewController.swift │ │ └── Interstitials │ │ │ └── ALMAXInterstitialAdViewController.swift │ └── ALAppDelegate.swift ├── AppLovin MAX Demo App-Bridging-Header.h └── Podfile ├── Mintegral ├── MintegralAdapter │ └── ALMintegralMediationAdapter.h └── AppLovinMediationMintegralAdapter.podspec ├── LinkedIn ├── LinkedInAdapter │ └── ALLinkedInDSPAdapter.h ├── CHANGELOG.md └── AppLovinDSPLinkedInAdapter.podspec ├── BigoAds ├── BigoAdsAdapter │ └── ALBigoAdsMediationAdapter.h ├── CHANGELOG.md └── AppLovinMediationBigoAdsAdapter.podspec ├── Line ├── LineAdapter │ └── ALLineMediationAdapter.h └── AppLovinMediationLineAdapter.podspec ├── IronSource ├── IronSourceAdapter │ └── ALIronSourceMediationAdapter.h └── AppLovinMediationIronSourceAdapter.podspec ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── feature_request.yml │ ├── bug_report.yml │ └── crash_anr_report.yaml └── workflows │ └── issue_stale.yml ├── Verve ├── VerveAdapter │ └── ALVerveMediationAdapter.h └── AppLovinMediationVerveAdapter.podspec ├── Chartboost ├── ChartboostAdapter │ └── ALChartboostMediationAdapter.h └── AppLovinMediationChartboostAdapter.podspec ├── PubMatic ├── PubMaticAdapter │ └── ALPubMaticMediationAdapter.h ├── AppLovinMediationPubMaticAdapter.podspec └── CHANGELOG.md ├── YSONetwork ├── YSONetworkAdapter │ └── ALYSONetworkMediationAdapter.h ├── CHANGELOG.md └── AppLovinMediationYSONetworkAdapter.podspec ├── UnityAds ├── UnityAdsAdapter │ ├── ALUnityAdsMediationAdapter.h │ ├── Log+Extensions.swift │ ├── Error+Extensions.swift │ └── UnityAdsAdapter+AdView.swift └── AppLovinMediationUnityAdsAdapter.podspec ├── BidMachine ├── BidMachineAdapter │ └── ALBidMachineMediationAdapter.h └── AppLovinMediationBidMachineAdapter.podspec ├── Smaato ├── SmaatoAdapter │ └── ALSmaatoMediationAdapter.h ├── PrivacyInfo.xcprivacy └── AppLovinMediationSmaatoAdapter.podspec ├── Facebook ├── FacebookAdapter │ └── ALFacebookMediationAdapter.h └── AppLovinMediationFacebookAdapter.podspec ├── OguryPresage ├── OguryPresageAdapter │ └── ALOguryPresageMediationAdapter.h └── AppLovinMediationOguryPresageAdapter.podspec ├── ByteDance ├── ByteDanceAdapter │ └── ALByteDanceMediationAdapter.h └── AppLovinMediationByteDanceAdapter.podspec ├── AmazonAdMarketplace ├── AmazonAdMarketplaceAdapter │ └── ALAmazonAdMarketplaceMediationAdapter.h └── AppLovinMediationAmazonAdMarketplaceAdapter.podspec ├── Fyber ├── Fyber │ └── ALInneractiveMediationAdapter.h └── AppLovinMediationFyberAdapter.podspec ├── Yandex ├── YandexAdapter │ └── ALYandexMediationAdapter.h └── AppLovinMediationYandexAdapter.podspec ├── InMobi ├── InMobiAdapter │ └── ALInMobiMediationAdapter.h └── AppLovinMediationInMobiAdapter.podspec ├── MobileFuse ├── MobileFuseAdapter │ └── ALMobileFuseMediationAdapter.h ├── AppLovinMediationMobileFuseAdapter.podspec └── CHANGELOG.md ├── MyTarget ├── MyTargetAdapter │ ├── ALMyTargetMediationAdapter.h │ ├── Error+Extensions.swift │ └── Log+Extensions.swift └── AppLovinMediationMyTargetAdapter.podspec ├── Vungle ├── VungleAdapter │ └── ALVungleMediationAdapter.h └── AppLovinMediationVungleAdapter.podspec ├── LICENSE.md ├── Google ├── PrivacyInfo.xcprivacy ├── GoogleAdapter │ ├── ALGoogleAdViewDelegate.h │ ├── ALGoogleInterstitialDelegate.h │ ├── ALGoogleNativeAd.h │ ├── ALGoogleNativeAdDelegate.h │ ├── ALGoogleRewardedDelegate.h │ ├── ALGoogleMediationAdapter.h │ ├── ALGoogleNativeAdViewDelegate.h │ ├── ALGoogleAppOpenDelegate.h │ ├── ALGoogleAppOpenDelegate.m │ ├── ALGoogleInterstitialDelegate.m │ ├── ALGoogleRewardedDelegate.m │ └── ALGoogleAdViewDelegate.m └── AppLovinMediationGoogleAdapter.podspec ├── GoogleAdManager ├── PrivacyInfo.xcprivacy ├── GoogleAdManagerAdapter │ └── ALGoogleAdManagerMediationAdapter.h └── AppLovinMediationGoogleAdManagerAdapter.podspec ├── Moloco ├── MolocoAdapter │ ├── Log+Extensions.swift │ ├── Native+Utils.swift │ └── Error+Extensions.swift ├── AppLovinMediationMolocoAdapter.podspec └── CHANGELOG.md └── .gitignore /Images/podspec_file_changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/Images/podspec_file_changes.png -------------------------------------------------------------------------------- /Images/jenkins_ios_adapter_job.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/Images/jenkins_ios_adapter_job.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppLovin MAX Demo App-Bridging-Header.h 3 | // AppLovin MAX Demo App - Swift 4 | // 5 | // Created by Varsha Hanji on 4/1/20. 6 | // Copyright © 2020 AppLovin. All rights reserved. 7 | // 8 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/bug.imageset/bug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/bug.imageset/bug.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/mute.imageset/mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/mute.imageset/mute.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/bug.imageset/bug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/bug.imageset/bug.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/mute.imageset/mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/mute.imageset/mute.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/1024.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/120.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/152.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/167.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/180.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/20.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/29.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/40-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/40-1.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/40-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/40-2.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/40.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/58-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/58-1.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/58.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/60.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/76.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/80-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/80-1.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/80.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/87.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/unmute.imageset/unmute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/unmute.imageset/unmute.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/20.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/29.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/40.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/58.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/60.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/76.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/80.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/87.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/120-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/120-1.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/1024.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/120.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/152.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/167.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/180.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/40-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/40-1.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/40-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/40-2.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/58-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/58-1.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/80-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/80-1.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/unmute.imageset/unmute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/unmute.imageset/unmute.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | inhibit_all_warnings! 3 | platform :ios, '11.0' 4 | 5 | # Please use 'pod install --repo-update' to ensure you have the latest versions of our SDKs. 6 | 7 | target 'AppLovin MAX Demo App - ObjC' do 8 | pod 'AppLovinSDK' 9 | pod 'Adjust' 10 | end 11 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/120-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/120-1.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | inhibit_all_warnings! 3 | platform :ios, '11.0' 4 | 5 | # Please use 'pod install --repo-update' to ensure you have the latest versions of our SDKs. 6 | 7 | target 'AppLovin MAX Demo App - Swift' do 8 | pod 'AppLovinSDK' 9 | pod 'Adjust' 10 | end 11 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent@2x.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent@3x.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent@2x.png -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/AppLovin-MAX-SDK-iOS/master/AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/logo.imageset/square_logo_nontransparent@3x.png -------------------------------------------------------------------------------- /Mintegral/MintegralAdapter/ALMintegralMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMintegralMediationAdapter.h 3 | // sdk 4 | // 5 | 6 | #import 7 | 8 | @interface ALMintegralMediationAdapter : ALMediationAdapter 9 | 10 | @end 11 | -------------------------------------------------------------------------------- /LinkedIn/LinkedInAdapter/ALLinkedInDSPAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALLinkedInDSPAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Thomas So on 11/17/22. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface ALLinkedInDSPAdapter : ALMediationAdapter 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Base Classes/ALHomeViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALHomeViewController.h 3 | // DemoApp-ObjC 4 | // 5 | // Created by Thomas So on 9/4/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALHomeViewController : UITableViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/main.swift: -------------------------------------------------------------------------------- 1 | // 2 | // main.swift 3 | // DemoApp-Swift 4 | // 5 | // Created by Andrew Tian on 9/20/19. 6 | // Copyright © 2019 AppLovin. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | UIApplicationMain(CommandLine.argc, CommandLine.unsafeArgv, nil, NSStringFromClass(ALAppDelegate.self)) 13 | -------------------------------------------------------------------------------- /BigoAds/BigoAdsAdapter/ALBigoAdsMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // BigoAdsMediationAdapter.h 3 | // BigoAds 4 | // 5 | // Created by Avi Leung on 2/13/24. 6 | // 7 | 8 | #import 9 | 10 | @interface ALBigoAdsMediationAdapter : ALMediationAdapter 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Line/LineAdapter/ALLineMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALLineMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface ALLineMediationAdapter : ALMediationAdapter 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Base Classes/ALTextCollectionViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALTextCollectionViewCell.m 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Ritam Sarmah on 4/1/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALTextCollectionViewCell.h" 10 | 11 | @implementation ALTextCollectionViewCell 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /IronSource/IronSourceAdapter/ALIronSourceMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALIronSourceMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface ALIronSourceMediationAdapter : ALMediationAdapter 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Documentation 4 | url: https://developers.applovin.com/en/max/ios/overview/integration 5 | about: Documentation for the AppLovin MAX SDK for iOS 6 | - name: Support 7 | url: https://developers.applovin.com/en/max/faq/common-questions-from-publishers 8 | about: Answers to common questions and support for AppLovin MAX 9 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/ALAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALAppDelegate.h 3 | // DemoApp-ObjC 4 | // 5 | // Created by Thomas So on 9/4/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALAppDelegate : UIResponder 12 | 13 | @property (nonatomic, strong) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Verve/VerveAdapter/ALVerveMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALVerveMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Ashley on 7/30/21. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALVerveMediationAdapter : ALMediationAdapter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Chartboost/ChartboostAdapter/ALChartboostMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALChartboostMediationAdapter.h 3 | // Adapters 4 | // 5 | // Created by Thomas So on 1/8/19. 6 | // Copyright © 2019 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALChartboostMediationAdapter : ALMediationAdapter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /PubMatic/PubMaticAdapter/ALPubMaticMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALPubMaticMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Paul Hounshell on 6/26/24. 6 | // Copyright © 2024 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALPubMaticMediationAdapter : ALMediationAdapter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Base Classes/ALTextCollectionViewCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALTextCollectionViewCell.swift 3 | // AppLovin MAX Demo App - Swift 4 | // 5 | // Created by Ritam Sarmah on 4/1/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ALTextCollectionViewCell: UICollectionViewCell 12 | { 13 | @IBOutlet weak var textLabel: UILabel! 14 | } 15 | -------------------------------------------------------------------------------- /YSONetwork/YSONetworkAdapter/ALYSONetworkMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALYSONetworkMediationAdapter.h 3 | // Adapters 4 | // 5 | // Created by Kenny Bui on 6/26/24. 6 | // Copyright © 2024 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALYSONetworkMediationAdapter : ALMediationAdapter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /UnityAds/UnityAdsAdapter/ALUnityAdsMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MAUnityMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Santosh Bagadi on 9/2/18. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALUnityAdsMediationAdapter : ALMediationAdapter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BidMachine/BidMachineAdapter/ALBidMachineMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALBidMachineMediationAdapter.h 3 | // Adapters 4 | // 5 | // Created by Josh on 4/5/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALBidMachineMediationAdapter : ALMediationAdapter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Smaato/SmaatoAdapter/ALSmaatoMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALSmaatoMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Christopher Cong on 3/1/19. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALSmaatoMediationAdapter : ALMediationAdapter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Facebook/FacebookAdapter/ALFacebookMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MAFacebookMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Santosh Bagadi on 8/31/18. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALFacebookMediationAdapter : ALMediationAdapter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /OguryPresage/OguryPresageAdapter/ALOguryPresageMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALOguryPresageMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Ritam Sarmah on 1/14/21. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALOguryPresageMediationAdapter : ALMediationAdapter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ByteDance/ByteDanceAdapter/ALByteDanceMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALByteDanceMediationAdapter.h 3 | // Adapters 4 | // 5 | // Created by Thomas So on 12/25/18. 6 | // Copyright © 2018 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALByteDanceMediationAdapter : ALMediationAdapter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /AmazonAdMarketplace/AmazonAdMarketplaceAdapter/ALAmazonAdMarketplaceMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALAmazonAdMarketplaceMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Thomas So on 10/22/21. 6 | // Copyright © 2021 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ALAmazonAdMarketplaceMediationAdapter : ALMediationAdapter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/MRECs/ALMAXMRecTableViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXMRecTableViewController.h 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Alan Cao on 6/30/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXMRecTableViewController : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Rewarded/ALMAXRewardedAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXRewardedAdViewController.h 3 | // DemoApp-ObjC 4 | // 5 | // Created by Thomas So on 9/4/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXRewardedAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // DemoApp-ObjC 4 | // 5 | // Created by Thomas So on 9/4/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ALAppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([ALAppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/bug.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "bug.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Fyber/Fyber/ALInneractiveMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALInneractiveMediationAdapter.h 3 | // Adapters 4 | // 5 | // Created by Christopher Cong on 10/11/18. 6 | // Copyright © 2018 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALInneractiveMediationAdapter : ALMediationAdapter 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/mute.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mute.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/bug.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "bug.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/mute.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mute.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/App Open Ads/ALMAXAppOpenAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAppOpenAdViewController.h 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Avi Leung on 2/13/23. 6 | // Copyright © 2023 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXAppOpenAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Interstitials/ALMAXInterstitialAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXInterstitialAdViewController.h 3 | // DemoApp-ObjC 4 | // 5 | // Created by Thomas So on 9/4/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXInterstitialAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/MRECs/ALMAXAutoLayoutMRecAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAutoLayoutMRecAdViewController.h 3 | // DemoApp-ObjC 4 | // 5 | // Created by Andrew Tian on 1/14/20. 6 | // Copyright © 2020 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXAutoLayoutMRecAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/MRECs/ALMAXFrameLayoutMRecAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXFrameLayoutMRecAdViewController.h 3 | // DemoApp-ObjC 4 | // 5 | // Created by Andrew Tian on 1/23/20. 6 | // Copyright © 2020 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXFrameLayoutMRecAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Native Ads/ALMAXAdPlacerTableViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAdPlacerTableViewController.h 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Ritam Sarmah on 4/1/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXAdPlacerTableViewController : UITableViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/unmute.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "unmute.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/unmute.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "unmute.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Yandex/YandexAdapter/ALYandexMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALYandexMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Andrew Tian on 9/17/19. 6 | // Copyright © 2019 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALYandexMediationAdapter : ALMediationAdapter 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Banners/ALMAXAutoLayoutBannerAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAutoLayoutBannerAdViewController.h 3 | // DemoApp-ObjC 4 | // 5 | // Created by Thomas So on 9/4/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXAutoLayoutBannerAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Banners/ALMAXFrameLayoutBannerAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXFrameLayoutBannerAdViewController.h 3 | // DemoApp-ObjC 4 | // 5 | // Created by Andrew Tian on 9/10/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXFrameLayoutBannerAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Native Ads/ALMAXManualNativeAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXManualNativeAdViewController.h 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Billy Hu on 1/20/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXManualNativeAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /InMobi/InMobiAdapter/ALInMobiMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALInMobiMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Thomas So on 2/9/19. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALInMobiMediationAdapter : ALMediationAdapter 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /MobileFuse/MobileFuseAdapter/ALMobileFuseMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMobileFuseMediationAdapter.h 3 | // Adapters 4 | // 5 | // Created by Wootae on 9/30/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMobileFuseMediationAdapter : ALMediationAdapter 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/MRECs/ALMAXInterfaceBuilderMRecAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXInterfaceBuilderMRecAdViewController.h 3 | // DemoApp-ObjC 4 | // 5 | // Created by Andrew Tian on 1/23/20. 6 | // Copyright © 2020 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXInterfaceBuilderMRecAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Native Ads/ALMAXTemplateNativeAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXTemplateNativeAdViewController.h 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Billy Hu on 1/20/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXTemplateNativeAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Native Ads/ALMAXAdPlacerCollectionViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAdPlacerCollectionViewController.h 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Ritam Sarmah on 4/1/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXAdPlacerCollectionViewController : UICollectionViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Banners/ALMAXInterfaceBuilderBannerAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXInterfaceBuilderBannerAdViewController.h 3 | // DemoApp-ObjC 4 | // 5 | // Created by Andrew Tian on 9/10/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXInterfaceBuilderBannerAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /MyTarget/MyTargetAdapter/ALMyTargetMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMyTargetMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Lorenzo Gentile on 7/16/19. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMyTargetMediationAdapter : ALMediationAdapter 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Vungle/VungleAdapter/ALVungleMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALVungleMediationAdapter.h 3 | // Adapters 4 | // 5 | // Created by Christopher Cong on 10/19/18. 6 | // Copyright © 2018 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALVungleMediationAdapter : ALMediationAdapter 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Base Classes/ALTextCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALTextCollectionViewCell.h 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Ritam Sarmah on 4/1/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALTextCollectionViewCell : UICollectionViewCell 14 | 15 | @property (weak, nonatomic) IBOutlet UILabel *textLabel; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /MyTarget/MyTargetAdapter/Error+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error+Extensions.swift 3 | // MyTargetAdapter 4 | // 5 | // Created by Ritam Sarmah on 10/13/23. 6 | // Copyright © 2023 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | 11 | extension Error 12 | { 13 | var myTargetAdapterError: MAAdapterError 14 | { 15 | MAAdapterError(adapterError: .noFill, 16 | mediatedNetworkErrorCode: code, 17 | mediatedNetworkErrorMessage: localizedDescription) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Native Ads/ALMAXManualNativeLateBindingAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXManualNativeLateBindingAdViewController.h 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Billy Hu on 3/8/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALMAXManualNativeLateBindingAdViewController : ALBaseAdViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # AppLovin MAX Copyright ©2024 AppLovin 2 | 3 | This software is subject to, and made available under, the AppLovin Software Development Kit End User License Agreement (“SDK EULA”), see https://www.applovin.com/eula/. 4 | 5 | Your use of the software and accompanying services constitutes your acceptance of such terms. Unless expressly provided otherwise, the software under this license is made available strictly on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied. Please review the SDK EULA for details on these and other terms and conditions. 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: Feature Request 2 | description: Request an enhancement 3 | labels: [enhancement] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | *Before requesting, search our [existing issues](https://github.com/AppLovin/AppLovin-MAX-SDK-iOS/issues?q=is%3Aissue) and [changelog](https://github.com/AppLovin/AppLovin-MAX-SDK-iOS/releases) to see if the feature has already been addressed.* 9 | - type: textarea 10 | attributes: 11 | label: "Feature Description" 12 | validations: 13 | required: true 14 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/MRECs/UI/ALMAXMRecTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXMRecTableViewCell.h 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Alan Cao on 6/30/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface ALMAXMRecTableViewCell : UITableViewCell 15 | 16 | - (void)configureWithAdView:(MAAdView *)adView; 17 | - (void)stopAutoRefresh; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Google/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyCollectedDataTypes 6 | 7 | NSPrivacyAccessedAPITypes 8 | 9 | 10 | NSPrivacyAccessedAPIType 11 | NSPrivacyAccessedAPICategoryUserDefaults 12 | NSPrivacyAccessedAPITypeReasons 13 | 14 | CA92.1 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Smaato/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyCollectedDataTypes 6 | 7 | NSPrivacyAccessedAPITypes 8 | 9 | 10 | NSPrivacyAccessedAPIType 11 | NSPrivacyAccessedAPICategoryUserDefaults 12 | NSPrivacyAccessedAPITypeReasons 13 | 14 | CA92.1 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /GoogleAdManager/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyCollectedDataTypes 6 | 7 | NSPrivacyAccessedAPITypes 8 | 9 | 10 | NSPrivacyAccessedAPIType 11 | NSPrivacyAccessedAPICategoryUserDefaults 12 | NSPrivacyAccessedAPITypeReasons 13 | 14 | CA92.1 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "square_logo_nontransparent.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "square_logo_nontransparent@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "square_logo_nontransparent@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "square_logo_nontransparent.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "square_logo_nontransparent@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "square_logo_nontransparent@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Base Classes/ALBaseAdViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALBaseAdViewController.h 3 | // DemoApp-ObjC 4 | // 5 | // Created by Harry Arakkal on 10/9/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface ALBaseAdViewController : UIViewController 14 | @property (nonatomic, weak) IBOutlet UITableView *callbackTableView; 15 | /** 16 | * Used for logging ad callbacks in the callback table. 17 | */ 18 | - (void)logCallback:(const char *)name; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/MRECs/ALMAXSwiftUIMRecAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXSwiftUIMRecAdViewController.swift 3 | // AppLovin MAX Demo App - Swift 4 | // 5 | // Created by Wootae Jeon on 1/27/23. 6 | // Copyright © 2023 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import SwiftUI 11 | import UIKit 12 | 13 | @available(iOS 13.0, *) 14 | class ALMAXSwiftUIMRecAdViewController: UIHostingController 15 | { 16 | required init?(coder aDecoder: NSCoder) 17 | { 18 | super.init(coder: aDecoder, rootView: ALMAXSwiftUIMRecAdView()) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/Banners/ALMAXSwiftUIBannerAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXSwiftUIBannerAdViewController.swift 3 | // AppLovin MAX Demo App - Swift 4 | // 5 | // Created by Wootae Jeon on 1/26/23. 6 | // Copyright © 2023 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import SwiftUI 11 | import UIKit 12 | 13 | @available(iOS 13.0, *) 14 | class ALMAXSwiftUIBannerAdViewController: UIHostingController 15 | { 16 | required init?(coder aDecoder: NSCoder) 17 | { 18 | super.init(coder: aDecoder, rootView: ALMAXSwiftUIBannerAdView()) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MyTarget/MyTargetAdapter/Log+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Log+Extensions.swift 3 | // MyTargetAdapter 4 | // 5 | // Created by Ritam Sarmah on 10/13/23. 6 | // Copyright © 2023 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | 11 | extension LogEvent 12 | { 13 | enum MyTarget 14 | { 15 | case userLeftApplication 16 | } 17 | } 18 | 19 | extension AdapterDelegate 20 | { 21 | func log(customEvent: LogEvent.MyTarget) 22 | { 23 | switch customEvent 24 | { 25 | case .userLeftApplication: 26 | adapter.logInfo("\(adFormat) ad user left application (\(adIdentifier))") 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /LinkedIn/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 1.2.2.0 4 | * Certified with LinkedIn SDK 1.2.2. 5 | 6 | ## 1.2.1.0 7 | * Certified with LinkedIn SDK 1.2.1. 8 | 9 | ## 1.2.0.0 10 | * Certified with LinkedIn SDK 1.2.0. 11 | * Updated minimum iOS version to 11.0. 12 | 13 | ## 1.1.3.1 14 | * Updated minimum Xcode requirement to 14.1. 15 | * Collect SDK init error messages. 16 | 17 | ## 1.1.3.0 18 | * Certified with LinkedIn SDK 1.1.3. 19 | * Updated minimum Xcode requirement to 14.0. 20 | 21 | ## 1.1.1.1 22 | * Update deployment target to iOS 9 to be consistent with MAX SDK. 23 | 24 | ## 1.1.1.0 25 | * Certified with LinkedIn SDK 1.1.1. 26 | 27 | ## 1.1.0.0 28 | * Initial commit. 29 | -------------------------------------------------------------------------------- /UnityAds/UnityAdsAdapter/Log+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Log+Extensions.swift 3 | // UnityAdsAdapter 4 | // 5 | // Created by Vedant Mehta on 4/10/24. 6 | // Copyright © 2024 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | 11 | extension LogEvent 12 | { 13 | enum UnityAds 14 | { 15 | case userLeftApplication 16 | } 17 | } 18 | 19 | extension AdapterDelegate 20 | { 21 | func log(customEvent: LogEvent.UnityAds) 22 | { 23 | switch customEvent 24 | { 25 | case .userLeftApplication: 26 | adapter.logInfo("\(adFormat) ad placement \"\(adIdentifier)\" left application") 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /GoogleAdManager/GoogleAdManagerAdapter/ALGoogleAdManagerMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleAdManagerMediationAdapter.h 3 | // AppLovinSDK 4 | // 5 | // Created by Santosh Bagadi on 12/3/19. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import 12 | #import 13 | #import 14 | #import 15 | 16 | @interface ALGoogleAdManagerMediationAdapter : ALMediationAdapter 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/Native Ads/ALMAXSwiftUITemplateNativeAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXSwiftUITemplateNativeAdViewController.swift 3 | // AppLovin MAX Demo App - Swift 4 | // 5 | // Created by Matthew Nguyen on 8/1/23. 6 | // Copyright © 2023 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import SwiftUI 11 | import UIKit 12 | 13 | @available(iOS 14.0, *) 14 | class ALMAXSwiftUITemplateNativeAdViewController: UIHostingController 15 | { 16 | required init?(coder aDecoder: NSCoder) 17 | { 18 | super.init(coder: aDecoder, rootView: ALMAXSwiftUITemplateNativeAdView()) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Moloco/MolocoAdapter/Log+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Log+Extensions.swift 3 | // MolocoAdapter 4 | // 5 | // Created by Alan Cao on 7/1/24. 6 | // Copyright © 2024 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | 11 | extension LogEvent 12 | { 13 | enum Moloco 14 | { 15 | case unsupportedMinimumOS 16 | } 17 | } 18 | 19 | @available(iOS 13.0, *) 20 | extension MolocoAdapter 21 | { 22 | func log(customEvent: LogEvent.Moloco) 23 | { 24 | switch customEvent 25 | { 26 | case .unsupportedMinimumOS: 27 | logInfo("Current iOS version is: \(UIDevice.current.systemVersion), but Moloco requires minimum iOS 13.0") 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /YSONetwork/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 1.1.31.1 4 | * Add simulator slice to match YSO Network SDK. 5 | 6 | ## 1.1.31.0 7 | * Certified with YSONetwork SDK 1.1.31. 8 | * Removed redundant log output when initialization was already completed. 9 | 10 | ## 1.1.29.0 11 | * Certified with YSO Network SDK 1.1.29. 12 | 13 | ## 1.1.28.0 14 | * Certified with YSO Network SDK 1.1.28. 15 | 16 | ## 1.1.25.1 17 | * Add implementation for `ALYsoNetworkMediationAdapter` to support existing YSO Network integrations. 18 | 19 | ## 1.1.25.0 20 | * Certified with YSO Network SDK 1.1.25. 21 | 22 | ## 1.1.24.0 23 | * Initial commit. 24 | * Minimum AppLovin MAX SDK version 12.6.0. 25 | * Minimum iOS version is 12.0 to match YSONetwork. 26 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleAdViewDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleAdViewDelegate.h 3 | // AppLovin MAX Google AdMob Adapter 4 | // 5 | // Created by Thomas So on 7/21/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "ALGoogleMediationAdapter.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface ALGoogleAdViewDelegate : NSObject 16 | 17 | - (instancetype)initWithParentAdapter:(ALGoogleMediationAdapter *)parentAdapter 18 | adFormat:(MAAdFormat *)adFormat 19 | andNotify:(id)delegate; 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleInterstitialDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleInterstitialDelegate.h 3 | // AppLovin MAX Google AdMob Adapter 4 | // 5 | // Created by Thomas So on 7/21/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "ALGoogleMediationAdapter.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface ALGoogleInterstitialDelegate : NSObject 16 | 17 | - (instancetype)initWithParentAdapter:(ALGoogleMediationAdapter *)parentAdapter 18 | placementIdentifier:(NSString *)placementIdentifier 19 | andNotify:(id)delegate; 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleNativeAd.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleNativeAd.h 3 | // AppLovin MAX Google AdMob Adapter 4 | // 5 | // Created by Thomas So on 7/21/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ALGoogleMediationAdapter.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface ALGoogleNativeAd : MANativeAd 15 | 16 | - (instancetype)initWithParentAdapter:(ALGoogleMediationAdapter *)parentAdapter 17 | gadNativeAdViewTag:(NSInteger)gadNativeAdViewTag 18 | builderBlock:(NS_NOESCAPE MANativeAdBuilderBlock)builderBlock; 19 | - (instancetype)initWithFormat:(MAAdFormat *)format builderBlock:(NS_NOESCAPE MANativeAdBuilderBlock)builderBlock NS_UNAVAILABLE; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleNativeAdDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleNativeAdDelegate.h 3 | // AppLovin MAX Google AdMob Adapter 4 | // 5 | // Created by Thomas So on 7/21/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "ALGoogleMediationAdapter.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface ALGoogleNativeAdDelegate : NSObject 16 | 17 | - (instancetype)initWithParentAdapter:(ALGoogleMediationAdapter *)parentAdapter 18 | parameters:(id)parameters 19 | andNotify:(id)delegate; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /.github/workflows/issue_stale.yml: -------------------------------------------------------------------------------- 1 | name: Stale and close inactive issues 2 | on: 3 | schedule: 4 | - cron: "0 1 * * *" 5 | 6 | jobs: 7 | close-issues: 8 | runs-on: ubuntu-latest 9 | permissions: 10 | issues: write 11 | steps: 12 | - uses: actions/stale@v9 13 | with: 14 | operations-per-run: 250 15 | exempt-issue-labels: "in progress,enhancement" 16 | days-before-pr-stale: -1 17 | days-before-pr-close: -1 18 | days-before-issue-stale: 30 19 | days-before-issue-close: 5 20 | stale-issue-label: "stale" 21 | stale-issue-message: "This issue is stale because it has been open for 30 days with no activity." 22 | close-issue-message: "This issue was closed because it has been inactive for 5 days since being marked as stale." 23 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleRewardedDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleRewardedDelegate.h 3 | // AppLovin MAX Google AdMob Adapter 4 | // 5 | // Created by Thomas So on 7/21/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "ALGoogleMediationAdapter.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface ALGoogleRewardedDelegate : NSObject 16 | 17 | @property (nonatomic, assign, getter=hasGrantedReward) BOOL grantedReward; 18 | 19 | - (instancetype)initWithParentAdapter:(ALGoogleMediationAdapter *)parentAdapter 20 | placementIdentifier:(NSString *)placementIdentifier 21 | andNotify:(id)delegate; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleMediationAdapter.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleMediationAdapter.h 3 | // AppLovin MAX Google AdMob Adapter 4 | // 5 | // Created by Santosh Bagadi on 8/31/18. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import 12 | #import 13 | #import 14 | #import 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | @interface ALGoogleMediationAdapter : ALMediationAdapter 19 | 20 | /** 21 | * Maps the provided ad network's error to an instance of @c MAAdapterError. 22 | */ 23 | + (MAAdapterError *)toMaxError:(NSError *)googleAdsError; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleNativeAdViewDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleNativeAdViewDelegate.h 3 | // AppLovin MAX Google AdMob Adapter 4 | // 5 | // Created by Thomas So on 7/21/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "ALGoogleMediationAdapter.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface ALGoogleNativeAdViewDelegate : NSObject 16 | 17 | - (instancetype)initWithParentAdapter:(ALGoogleMediationAdapter *)parentAdapter 18 | adFormat:(MAAdFormat *)adFormat 19 | serverParameters:(NSDictionary *)serverParameters 20 | andNotify:(id)delegate; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /BigoAds/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 4.7.0.2 4 | * Removed requirement of the title asset for native banners and MRECs. 5 | 6 | ## 4.7.0.1 7 | * Add support for respecting mute state for native ads. 8 | 9 | ## 4.7.0.0 10 | * Certified with BigoAds SDK 4.7.0. 11 | 12 | ## 4.6.0.0 13 | * Certified with BigoAds SDK 4.6.0. 14 | * Removed redundant log output when initialization was already completed. 15 | 16 | ## 4.5.1.1 17 | * Add support for native ads in external plugins. Requires minimum React Native Plugin 8.0.4 or Flutter Plugin 4.0.2. 18 | * Explicitly fail ad load with code `-5202` if unable to map ad view ad format to that of the network's. 19 | 20 | ## 4.5.1.0 21 | * Certified with BigoAds SDK 4.5.1. 22 | * Updated the minimum required iOS version to 12.0 in Pod Spec to match BigoAds SDK. 23 | * Remove deprecated native API usages. 24 | 25 | ## 4.2.3.1 26 | * Fix native ad view ad not triggering callbacks. 27 | 28 | ## 4.2.3.0 29 | * Certified with BigoAds SDK 4.2.3. 30 | * Updated minimum Xcode requirement to 15.0. 31 | 32 | ## 4.2.2.0 33 | * Certified with BigoAds SDK 4.2.2. 34 | 35 | ## 4.2.1.0 36 | * Initial commit. 37 | * Minimum AppLovin MAX SDK version 12.4.1. 38 | -------------------------------------------------------------------------------- /Line/AppLovinMediationLineAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationLineAdapter' 5 | s.version = '2.9.20250512.0' 6 | s.platform = :ios, '13.0' 7 | s.summary = 'Line adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/line-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'FiveAd', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /Verve/AppLovinMediationVerveAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationVerveAdapter' 5 | s.version = '3.6.0.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Verve adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/verve-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'HyBid', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /Vungle/AppLovinMediationVungleAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationVungleAdapter' 5 | s.version = '7.5.1.2' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Vungle adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/vungle-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'VungleAds', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /Yandex/AppLovinMediationYandexAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationYandexAdapter' 5 | s.version = '7.13.0.0' 6 | s.platform = :ios, '13.0' 7 | s.summary = 'Yandex adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/yandex-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip', 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'YandexMobileAds', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK' 31 | s.swift_version = '5.9.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /BigoAds/AppLovinMediationBigoAdsAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationBigoAdsAdapter' 5 | s.version = '4.7.0.2' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Bigo Ads adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/bigoads-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'BigoADS', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 12.4.1' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /InMobi/AppLovinMediationInMobiAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationInMobiAdapter' 5 | s.version = '10.8.3.1' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'InMobi adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/inmobi-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'InMobiSDK', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /Fyber/AppLovinMediationFyberAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationFyberAdapter' 5 | s.version = '8.3.7.0' 6 | s.platform = :ios, '13.0' 7 | s.summary = 'Fyber adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/fyber-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'Fyber_Marketplace_SDK', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /Google/AppLovinMediationGoogleAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationGoogleAdapter' 5 | s.version = '12.5.0.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Google adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/google-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'Google-Mobile-Ads-SDK', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.3' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /PubMatic/AppLovinMediationPubMaticAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationPubMaticAdapter' 5 | s.version = '4.6.0.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'PubMatic adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/pubmatic-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'OpenWrapSDK', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /ByteDance/AppLovinMediationByteDanceAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationByteDanceAdapter' 5 | s.version = '7.1.1.1.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'ByteDance adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/bytedance-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'Ads-Global', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /Chartboost/AppLovinMediationChartboostAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationChartboostAdapter' 5 | s.version = '9.9.0.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Chartboost adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/chartboost-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'ChartboostSDK', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /IronSource/AppLovinMediationIronSourceAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationIronSourceAdapter' 5 | s.version = '8.9.0.0.0' 6 | s.platform = :ios, '13.0' 7 | s.summary = 'IronSource adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/ironsource-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'IronSourceSDK', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /MyTarget/AppLovinMediationMyTargetAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationMyTargetAdapter' 5 | s.version = '5.31.0.0' 6 | s.platform = :ios, '12.4' 7 | s.summary = 'MyTarget adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/mytarget-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'myTargetSDK', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | 32 | s.swift_version = '5.0' 33 | s.swift_versions = '5.0' 34 | 35 | s.description = <<-DESC 36 | 37 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 38 | 39 | DESC 40 | 41 | end 42 | -------------------------------------------------------------------------------- /GoogleAdManager/AppLovinMediationGoogleAdManagerAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationGoogleAdManagerAdapter' 5 | s.version = '12.5.0.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Google Ad Manager adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/googleadmanager-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'Google-Mobile-Ads-SDK', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.3' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 36 | 37 | DESC 38 | 39 | end 40 | -------------------------------------------------------------------------------- /Smaato/AppLovinMediationSmaatoAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationSmaatoAdapter' 5 | s.version = '22.9.3.1' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Smaato adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/smaato-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'smaato-ios-sdk', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'smaato-ios-sdk/InApp', '= {ADAPTER_SDK_VERSION}' 31 | s.dependency 'AppLovinSDK', '>= 13.0.0' 32 | s.swift_version = '5.0' 33 | 34 | s.description = <<-DESC 35 | 36 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 37 | 38 | DESC 39 | 40 | end 41 | -------------------------------------------------------------------------------- /Mintegral/AppLovinMediationMintegralAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationMintegralAdapter' 5 | s.version = '7.7.8.0.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Mintegral adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/mintegral-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'MintegralAdSDK', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'MintegralAdSDK/BidSplashAd', '= {ADAPTER_SDK_VERSION}' 31 | 32 | s.dependency 'AppLovinSDK', '>= 13.0.0' 33 | s.swift_version = '5.0' 34 | 35 | s.description = <<-DESC 36 | 37 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 38 | 39 | DESC 40 | 41 | end 42 | -------------------------------------------------------------------------------- /MobileFuse/AppLovinMediationMobileFuseAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationMobileFuseAdapter' 5 | s.version = '1.9.2.1' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'MobileFuse adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/mobilefuse-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'MobileFuseSDK', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.pod_target_xcconfig = 34 | { 35 | 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' 36 | } 37 | 38 | s.description = <<-DESC 39 | 40 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 41 | 42 | DESC 43 | 44 | end 45 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleAppOpenDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleAppOpenDelegate.h 3 | // GoogleAdapter 4 | // 5 | // Created by Vedant Mehta on 8/11/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "ALGoogleMediationAdapter.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | // TODO: Remove when SDK with App Open APIs is released 16 | @protocol MAAppOpenAdapterDelegateTemp 17 | - (void)didLoadAppOpenAd; 18 | - (void)didLoadAppOpenAdWithExtraInfo:(nullable NSDictionary *)extraInfo; 19 | - (void)didFailToLoadAppOpenAdWithError:(MAAdapterError *)adapterError; 20 | - (void)didDisplayAppOpenAd; 21 | - (void)didDisplayAppOpenAdWithExtraInfo:(nullable NSDictionary *)extraInfo; 22 | - (void)didClickAppOpenAd; 23 | - (void)didClickAppOpenAdWithExtraInfo:(nullable NSDictionary *)extraInfo; 24 | - (void)didHideAppOpenAd; 25 | - (void)didHideAppOpenAdWithExtraInfo:(nullable NSDictionary *)extraInfo; 26 | - (void)didFailToDisplayAppOpenAdWithError:(MAAdapterError *)adapterError; 27 | @end 28 | 29 | @interface ALGoogleAppOpenDelegate : NSObject 30 | 31 | - (instancetype)initWithParentAdapter:(ALGoogleMediationAdapter *)parentAdapter 32 | placementIdentifier:(NSString *)placementIdentifier 33 | andNotify:(id)delegate; 34 | 35 | @end 36 | 37 | NS_ASSUME_NONNULL_END 38 | -------------------------------------------------------------------------------- /LinkedIn/AppLovinDSPLinkedInAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinDSPLinkedInAdapter' 5 | s.version = '1.2.2.0' 6 | s.platform = :ios, '11.0' 7 | s.summary = 'Adapter used for LinkedIn demand with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2023 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/dsp/linkedin-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'LinkedinAudienceNetwork', '= 1.2.2' 30 | s.dependency 'AppLovinSDK' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin turns mobile into the medium of choice for advertisers. 36 | 37 | OUR MISSION 38 | 39 | Enable advertisers to make ROI-based marketing decisions and deliver relevant content on mobile. 40 | 41 | Our marketing platform reaches new users and matches them with relevant brands - ensuring you reach the users that are likely to engage. 42 | 43 | We deliver relevant content to over a billion mobile consumers every month. With AppLovin, advertisers attain their mobile marketing goals. 44 | 45 | DESC 46 | 47 | end 48 | -------------------------------------------------------------------------------- /UnityAds/AppLovinMediationUnityAdsAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationUnityAdsAdapter' 5 | s.version = '4.14.2.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Unity adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2022 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/unityads-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'UnityAds', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin turns mobile into the medium of choice for advertisers. 36 | 37 | OUR MISSION 38 | 39 | Enable advertisers to make ROI-based marketing decisions and deliver relevant content on mobile. 40 | 41 | Our marketing platform reaches new users and matches them with relevant brands - ensuring you reach the users that are likely to engage. 42 | 43 | We deliver relevant content to over a billion mobile consumers every month. With AppLovin, advertisers attain their mobile marketing goals. 44 | 45 | DESC 46 | 47 | end 48 | -------------------------------------------------------------------------------- /YSONetwork/AppLovinMediationYSONetworkAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationYSONetworkAdapter' 5 | s.version = '1.1.31.1' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'YSO Network adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2024 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/ysonetwork-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'YsoNetworkSDK', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin turns mobile into the medium of choice for advertisers. 36 | 37 | OUR MISSION 38 | 39 | Enable advertisers to make ROI-based marketing decisions and deliver relevant content on mobile. 40 | 41 | Our marketing platform reaches new users and matches them with relevant brands - ensuring you reach the users that are likely to engage. 42 | 43 | We deliver relevant content to over a billion mobile consumers every month. With AppLovin, advertisers attain their mobile marketing goals. 44 | 45 | DESC 46 | 47 | end 48 | -------------------------------------------------------------------------------- /Facebook/AppLovinMediationFacebookAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationFacebookAdapter' 5 | s.version = '6.17.1.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Facebook adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2022 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/facebook-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'FBAudienceNetwork', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin turns mobile into the medium of choice for advertisers. 36 | 37 | OUR MISSION 38 | 39 | Enable advertisers to make ROI-based marketing decisions and deliver relevant content on mobile. 40 | 41 | Our marketing platform reaches new users and matches them with relevant brands - ensuring you reach the users that are likely to engage. 42 | 43 | We deliver relevant content to over a billion mobile consumers every month. With AppLovin, advertisers attain their mobile marketing goals. 44 | 45 | DESC 46 | 47 | end 48 | -------------------------------------------------------------------------------- /OguryPresage/AppLovinMediationOguryPresageAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationOguryPresageAdapter' 5 | s.version = '5.0.2.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Ogury (Presage) adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2022 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/ogurypresage-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'OgurySdk', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin turns mobile into the medium of choice for advertisers. 36 | 37 | OUR MISSION 38 | 39 | Enable advertisers to make ROI-based marketing decisions and deliver relevant content on mobile. 40 | 41 | Our marketing platform reaches new users and matches them with relevant brands - ensuring you reach the users that are likely to engage. 42 | 43 | We deliver relevant content to over a billion mobile consumers every month. With AppLovin, advertisers attain their mobile marketing goals. 44 | 45 | DESC 46 | 47 | end 48 | -------------------------------------------------------------------------------- /BidMachine/AppLovinMediationBidMachineAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationBidMachineAdapter' 5 | s.version = '3.3.0.0.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'BidMachine adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2022 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/bidmachine-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'BidMachine', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.1' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin turns mobile into the medium of choice for advertisers. 36 | 37 | OUR MISSION 38 | 39 | Enable advertisers to make ROI-based marketing decisions and deliver relevant content on mobile. 40 | 41 | Our marketing platform reaches new users and matches them with relevant brands - ensuring you reach the users that are likely to engage. 42 | 43 | We deliver relevant content to over a billion mobile consumers every month. With AppLovin, advertisers attain their mobile marketing goals. 44 | 45 | DESC 46 | 47 | end 48 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/MRECs/UI/ALMAXMRecTableViewCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXMRecTableViewCell.swift 3 | // AppLovin MAX Demo App - Swift 4 | // 5 | // Created by Alan Cao on 6/27/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import UIKit 11 | 12 | class ALMAXMRecTableViewCell: UITableViewCell 13 | { 14 | private var adView: MAAdView! 15 | 16 | override func prepareForReuse() 17 | { 18 | super.prepareForReuse() 19 | 20 | adView?.removeFromSuperview() 21 | adView = nil 22 | } 23 | 24 | func configure(with adView: MAAdView) 25 | { 26 | self.adView = adView 27 | self.adView.backgroundColor = .black 28 | self.adView.translatesAutoresizingMaskIntoConstraints = false 29 | self.adView.startAutoRefresh() 30 | 31 | contentView.addSubview(self.adView) 32 | NSLayoutConstraint.activate([ 33 | self.adView.widthAnchor.constraint(equalToConstant: 300), 34 | self.adView.heightAnchor.constraint(equalToConstant: 250), 35 | self.adView.centerXAnchor.constraint(equalTo: contentView.centerXAnchor), 36 | self.adView.centerYAnchor.constraint(equalTo: contentView.centerYAnchor), 37 | self.adView.bottomAnchor.constraint(lessThanOrEqualTo: contentView.bottomAnchor) 38 | ]) 39 | } 40 | 41 | func stopAutoRefresh() 42 | { 43 | adView?.setExtraParameterForKey("allow_pause_auto_refresh_immediately", value: "true") 44 | adView?.stopAutoRefresh() 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Moloco/AppLovinMediationMolocoAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationMolocoAdapter' 5 | s.version = '3.9.1.1' 6 | s.platform = :ios, '12.0' # Note: Minimum iOS version set to 12.0 to allow publishers to integrate without increasing their minimum version requirement. Ads will serve on iOS 13.0+. 7 | s.summary = 'Moloco adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2025 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/moloco-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | s.dependency 'MolocoSDKiOS', '= {ADAPTER_SDK_VERSION}' 30 | s.dependency 'AppLovinSDK', '>= 13.0.0' 31 | s.swift_version = '5.0' 32 | 33 | s.pod_target_xcconfig = 34 | { 35 | 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' 36 | } 37 | 38 | s.description = <<-DESC 39 | 40 | AppLovin makes technologies that help businesses of every size connect to their ideal customers. The company provides end-to-end software and AI solutions for businesses to reach, monetize, and grow their global audiences. For more information about AppLovin, visit: www.applovin.com. 41 | 42 | DESC 43 | 44 | end 45 | -------------------------------------------------------------------------------- /PubMatic/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 4.6.0.0 4 | * Certified with PubMatic SDK 4.6.0. 5 | 6 | ## 4.5.2.0 7 | * Certified with PubMatic SDK 4.5.2. 8 | 9 | ## 4.5.1.0 10 | * Certified with PubMatic SDK 4.5.1. 11 | 12 | ## 4.5.0.0 13 | * Certified with PubMatic SDK 4.5.0. 14 | * Removed deprecated code paths based on the minimum supported AppLovin MAX SDK version 13.0.0. 15 | 16 | ## 4.4.0.1 17 | * Updated to support gpid (Global Placement ID). 18 | 19 | ## 4.4.0.0 20 | * Certified with PubMatic SDK 4.4.0. 21 | 22 | ## 4.3.0.0 23 | * Certified with PubMatic SDK 4.3.0. 24 | 25 | ## 4.2.0.1 26 | * Updated to use bidding specific APIs. 27 | 28 | ## 4.2.0.0 29 | * Certified with PubMatic SDK 4.2.0. 30 | * Removed redundant log output when initialization was already completed. 31 | 32 | ## 4.1.0.0 33 | * Certified with PubMatic SDK 4.1.0. 34 | * Removed exception throwing if unable to map ad format to that of the network's. 35 | 36 | ## 4.0.1.0 37 | * Certified with PubMatic SDK 4.0.1. 38 | 39 | ## 4.0.0.0 40 | * Certified with PubMatic SDK 4.0.0. 41 | 42 | ## 3.9.0.3 43 | * Unity only: Fix an issue with OpenWrapSDK PodSpec being incorrectly marked as static. 44 | 45 | ## 3.9.0.2 46 | * Requires minimum AppLovin MAX SDK version be 13.0.0. 47 | * Removed COPPA support. 48 | 49 | ## 3.9.0.1 50 | * Add support for COPPA. 51 | 52 | ## 3.9.0.0 53 | * Certified with PubMatic SDK 3.9.0. 54 | 55 | ## 3.8.0.0 56 | * Certified with PubMatic SDK 3.8.0. 57 | * Changed event mapping for rewarded ad impressions to match other ad types. 58 | * Update ad display failed error code. 59 | 60 | ## 3.7.0.0 61 | * Initial commit. 62 | * Minimum AppLovin MAX SDK version 12.6.0. 63 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Base Classes/ALBaseAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALBaseAdViewController.swift 3 | // DemoApp-Swift 4 | // 5 | // Created by Harry Arakkal on 10/7/19. 6 | // Copyright © 2019 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import UIKit 11 | 12 | class ALBaseAdViewController: UIViewController 13 | { 14 | @IBOutlet weak var callbackTableView: UITableView! 15 | 16 | private var callbacks: [String] = [] 17 | 18 | override func viewDidAppear(_ animated: Bool) 19 | { 20 | super.viewDidAppear(animated) 21 | navigationController?.setToolbarHidden(hidesBottomBarWhenPushed, animated: true) 22 | } 23 | 24 | override func viewWillDisappear(_ animated: Bool) 25 | { 26 | navigationController?.setToolbarHidden(true, animated: false) 27 | super.viewWillDisappear(animated) 28 | } 29 | 30 | func logCallback(functionName: String = #function) 31 | { 32 | callbacks.append(functionName) 33 | callbackTableView.insertRows(at: [IndexPath(row: callbacks.count - 1, section: 0)], with: .automatic) 34 | } 35 | } 36 | 37 | extension ALBaseAdViewController: UITableViewDataSource 38 | { 39 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 40 | { 41 | let cell = tableView.dequeueReusableCell(withIdentifier: "callbackCell", for: indexPath) 42 | cell.textLabel?.text = callbacks[indexPath.row] 43 | 44 | return cell 45 | } 46 | 47 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 48 | { 49 | callbacks.count 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /AmazonAdMarketplace/AppLovinMediationAmazonAdMarketplaceAdapter.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.authors = 'AppLovin Corporation' 4 | s.name = 'AppLovinMediationAmazonAdMarketplaceAdapter' 5 | s.version = '5.2.0.0' 6 | s.platform = :ios, '12.0' 7 | s.summary = 'Amazon Publisher Services adapter used for mediation with the AppLovin MAX SDK' 8 | s.homepage = "https://github.com/CocoaPods/Specs/search?o=desc&q=#{s.name}&s=indexed" 9 | s.license = 10 | { 11 | :type => 'Commercial License', 12 | :text => <<-LICENSE 13 | 14 | Copyright 2022 AppLovin Corp. All rights reserved. 15 | 16 | The AppLovin MAX SDK is available under a commercial license (https://www.applovin.com/eula). 17 | 18 | LICENSE 19 | } 20 | 21 | s.source = 22 | { 23 | :http => "https://artifacts.applovin.com/ios/com/applovin/mediation/amazonadmarketplace-adapter/#{s.name}-#{s.version}.zip", 24 | :type => 'zip' 25 | } 26 | 27 | s.vendored_frameworks = "#{s.name}-#{s.version}/#{s.name}.xcframework" 28 | 29 | # NOTE: Amazon requested us to not add them to the list of transitive dependencies. External pubs have to manually integrate their SDK. 30 | s.dependency 'AppLovinSDK' 31 | s.swift_version = '5.0' 32 | 33 | s.description = <<-DESC 34 | 35 | AppLovin turns mobile into the medium of choice for advertisers. 36 | 37 | OUR MISSION 38 | 39 | Enable advertisers to make ROI-based marketing decisions and deliver relevant content on mobile. 40 | 41 | Our marketing platform reaches new users and matches them with relevant brands - ensuring you reach the users that are likely to engage. 42 | 43 | We deliver relevant content to over a billion mobile consumers every month. With AppLovin, advertisers attain their mobile marketing goals. 44 | 45 | DESC 46 | 47 | end 48 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/MRECs/UI/ALMAXMRecTableViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXMRecTableViewCell.m 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Alan Cao on 6/30/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALMAXMRecTableViewCell.h" 10 | #import 11 | 12 | @interface ALMAXMRecTableViewCell() 13 | 14 | @property (nonatomic, strong, nullable) MAAdView *adView; 15 | 16 | @end 17 | 18 | @implementation ALMAXMRecTableViewCell 19 | 20 | - (void)prepareForReuse 21 | { 22 | [super prepareForReuse]; 23 | 24 | [self.adView removeFromSuperview]; 25 | self.adView = nil; 26 | } 27 | 28 | - (void)configureWithAdView:(MAAdView *)adView 29 | { 30 | self.adView = adView; 31 | self.adView.backgroundColor = [UIColor blackColor]; 32 | self.adView.translatesAutoresizingMaskIntoConstraints = false; 33 | [self.adView startAutoRefresh]; 34 | 35 | [self.contentView addSubview: self.adView]; 36 | [NSLayoutConstraint activateConstraints: @[ 37 | [self.adView.widthAnchor constraintEqualToConstant: 300], 38 | [self.adView.heightAnchor constraintEqualToConstant: 250], 39 | [self.adView.centerXAnchor constraintEqualToAnchor: self.contentView.centerXAnchor], 40 | [self.adView.centerYAnchor constraintEqualToAnchor: self.contentView.centerYAnchor], 41 | [self.adView.bottomAnchor constraintLessThanOrEqualToAnchor: self.contentView.bottomAnchor] 42 | ]]; 43 | } 44 | 45 | - (void)stopAutoRefresh 46 | { 47 | [self.adView setExtraParameterForKey: @"allow_pause_auto_refresh_immediately" value: @"true"]; 48 | [self.adView stopAutoRefresh]; 49 | } 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | xcworkspace/ 20 | *.xcworkspacedata 21 | *IDEWorkspaceChecks.plist 22 | 23 | ## Other 24 | *.moved-aside 25 | *.xcuserstate 26 | *.xcuserdatad 27 | *.xcbkptlist 28 | *.xcscheme 29 | 30 | 31 | ## Obj-C/Swift specific 32 | *.hmap 33 | *.ipa 34 | *.dSYM.zip 35 | *.dSYM 36 | *.a 37 | 38 | # CocoaPods 39 | # 40 | # We recommend against adding the Pods directory to your .gitignore. However 41 | # you should judge for yourself, the pros and cons are mentioned at: 42 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 43 | 44 | Pods/ 45 | 46 | # Carthage 47 | # 48 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 49 | # Carthage/Checkouts 50 | 51 | Carthage/Build 52 | 53 | # fastlane 54 | # 55 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 56 | # screenshots whenever they are needed. 57 | # For more information about the recommended setup visit: 58 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md 59 | 60 | fastlane/report.xml 61 | fastlane/Preview.html 62 | fastlane/screenshots 63 | fastlane/test_output 64 | 65 | # Code Injection 66 | # 67 | # After new code Injection tools there's a generated folder /iOSInjectionProject 68 | # https://github.com/johnno1962/injectionforxcode 69 | 70 | iOSInjectionProject/ 71 | 72 | # Idea 73 | .idea 74 | 75 | # MacOS 76 | 77 | .DS_Store 78 | *.lock 79 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleVersion 20 | 1000000 21 | LSRequiresIPhoneOS 22 | 23 | SKAdNetworkItems 24 | 25 | 26 | SKAdNetworkIdentifier 27 | ludvb6z3bs.skadnetwork 28 | 29 | 30 | UILaunchStoryboardName 31 | LaunchScreen 32 | UIMainStoryboardFile 33 | Main 34 | UIRequiredDeviceCapabilities 35 | 36 | armv7 37 | 38 | UISupportedInterfaceOrientations 39 | 40 | UIInterfaceOrientationPortrait 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | UISupportedInterfaceOrientations~ipad 45 | 46 | UIInterfaceOrientationPortrait 47 | UIInterfaceOrientationPortraitUpsideDown 48 | UIInterfaceOrientationLandscapeLeft 49 | UIInterfaceOrientationLandscapeRight 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Base Classes/ALBaseAdViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALBaseAdViewController.m 3 | // DemoApp-ObjC 4 | // 5 | // Created by Harry Arakkal on 10/9/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALBaseAdViewController.h" 10 | 11 | @interface ALBaseAdViewController () 12 | @property (nonatomic, strong) NSMutableArray *callbacks; 13 | 14 | @end 15 | 16 | @implementation ALBaseAdViewController 17 | 18 | - (void)viewDidLoad 19 | { 20 | [super viewDidLoad]; 21 | self.callbacks = [NSMutableArray array]; 22 | } 23 | 24 | - (void)viewDidAppear:(BOOL)animated 25 | { 26 | [super viewDidAppear: animated]; 27 | [self.navigationController setToolbarHidden: self.hidesBottomBarWhenPushed animated: YES]; 28 | } 29 | 30 | - (void)viewWillDisappear:(BOOL)animated 31 | { 32 | [self.navigationController setToolbarHidden: YES]; 33 | [super viewWillDisappear: animated]; 34 | } 35 | 36 | - (void)logCallback:(const char *)name 37 | { 38 | [self.callbacks addObject: [NSString stringWithCString: name encoding: NSUTF8StringEncoding]]; 39 | 40 | NSArray *lastIndexPath = @[[NSIndexPath indexPathForRow: self.callbacks.count - 1 inSection: 0]]; 41 | [self.callbackTableView insertRowsAtIndexPaths: lastIndexPath withRowAnimation: UITableViewRowAnimationAutomatic]; 42 | } 43 | 44 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 45 | { 46 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: @"callbackCell" forIndexPath: indexPath]; 47 | cell.textLabel.text = self.callbacks[indexPath.row]; 48 | 49 | return cell; 50 | } 51 | 52 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 53 | { 54 | return self.callbacks.count; 55 | } 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | $(PRODUCT_NAME) 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleVersion 22 | 1000000 23 | LSRequiresIPhoneOS 24 | 25 | SKAdNetworkItems 26 | 27 | 28 | SKAdNetworkIdentifier 29 | ludvb6z3bs.skadnetwork 30 | 31 | 32 | UILaunchStoryboardName 33 | LaunchScreen 34 | UIMainStoryboardFile 35 | Main 36 | UIRequiredDeviceCapabilities 37 | 38 | armv7 39 | 40 | UISupportedInterfaceOrientations 41 | 42 | UIInterfaceOrientationPortrait 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | UISupportedInterfaceOrientations~ipad 47 | 48 | UIInterfaceOrientationPortrait 49 | UIInterfaceOrientationPortraitUpsideDown 50 | UIInterfaceOrientationLandscapeLeft 51 | UIInterfaceOrientationLandscapeRight 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /Moloco/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 3.9.1.1 4 | * Removed requirement of the title asset for native banners and MRECs. 5 | 6 | ## 3.9.1.0 7 | * Certified with Moloco SDK 3.9.1. 8 | 9 | ## 3.9.0.0 10 | * Certified with Moloco SDK 3.9.0. 11 | * Updated minimum Xcode requirement to 16.0. 12 | 13 | ## 3.8.0.2 14 | * Replaced availability checks with `ALUtils.isInclusiveVersion(_:forMinVersion:maxVersion:)` to suppress version warnings. 15 | 16 | ## 3.8.0.1 17 | * Added a guard to only allow signal collection starting from minimum iOS 13. 18 | 19 | ## 3.8.0.0 20 | * Certified with Moloco SDK 3.8.0. 21 | 22 | ## 3.7.2.0 23 | * Certified with Moloco SDK 3.7.2. 24 | 25 | ## 3.7.1.0 26 | * Certified with Moloco SDK 3.7.1. 27 | 28 | ## 3.7.0.0 29 | * Certified with Moloco SDK 3.7.0. 30 | 31 | ## 3.6.0.1 32 | * Updated minimum iOS version to iOS 12.0. 33 | 34 | ## 3.6.0.0 35 | * Certified with Moloco SDK 3.6.0. 36 | * Added support for native and native ad view ads. 37 | * Updated minimum iOS version to iOS 13.0. 38 | 39 | ## 3.4.0.0 40 | * Certified with Moloco SDK 3.4.0. 41 | * Removed redundant log output when initialization was already completed. 42 | 43 | ## 3.3.1.0 44 | * Certified with Moloco SDK 3.3.1. 45 | 46 | ## 3.3.0.0 47 | * Certified with Moloco SDK 3.3.0. 48 | 49 | ## 3.2.0.0 50 | * Certified with Moloco SDK 3.2.0. 51 | 52 | ## 3.1.3.1 53 | * Requires minimum AppLovin MAX SDK version be 13.0.0. 54 | * Removed COPPA support. 55 | 56 | ## 3.1.3.0 57 | * Certified with Moloco SDK 3.1.3. 58 | 59 | ## 3.1.2.0 60 | * Certified with Moloco SDK 3.1.2. 61 | 62 | ## 3.1.1.0 63 | * Certified with Moloco SDK 3.1.1. 64 | 65 | ## 3.0.0.1 66 | * Updated minimum iOS version to iOS 12.0. 67 | 68 | ## 3.0.0.0 69 | * Certified with Moloco SDK 3.0.0. 70 | 71 | ## 2.2.1.0 72 | * Certified with Moloco SDK 2.2.1. 73 | * Updated minimum Xcode requirement to 15.0. 74 | 75 | ## 2.1.1.1 76 | * Add support for leaders. 77 | 78 | ## 2.1.1.0 79 | * Initial commit. 80 | * Minimum AppLovin MAX SDK version 12.3.0. 81 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/Native Ads/ALMAXAdPlacerTableViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAdPlacerTableViewController.swift 3 | // AppLovin MAX Demo App - Swift 4 | // 5 | // Created by Ritam Sarmah on 4/1/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import UIKit 11 | 12 | class ALMAXAdPlacerTableViewController: UITableViewController 13 | { 14 | private let data = UIFont.familyNames.sorted() 15 | 16 | private var adPlacer: MATableViewAdPlacer! 17 | 18 | override func viewDidLoad() 19 | { 20 | super.viewDidLoad() 21 | 22 | let settings = MAAdPlacerSettings(adUnitIdentifier: "YOUR_AD_UNIT_ID") 23 | settings.addFixedPosition(IndexPath(row: 2, section: 0)) 24 | settings.addFixedPosition(IndexPath(row: 8, section: 0)) 25 | settings.repeatingInterval = 10 26 | 27 | // If using custom views, you must also set the `nativeAdViewNib` and `nativeAdViewBinder` properties on the ad placer 28 | 29 | adPlacer = MATableViewAdPlacer(tableView: tableView, settings: settings) 30 | adPlacer.delegate = self 31 | adPlacer.loadAds() 32 | } 33 | 34 | // MARK: - UITableViewDataSource 35 | 36 | override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 37 | { 38 | data.count 39 | } 40 | 41 | override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 42 | { 43 | let cell = tableView.al_dequeueReusableCell(withIdentifier: "ALMAXAdPlacerTableViewCell", for: indexPath) 44 | cell.textLabel!.text = data[indexPath.row] 45 | return cell 46 | } 47 | } 48 | 49 | extension ALMAXAdPlacerTableViewController: MAAdPlacerDelegate 50 | { 51 | func didLoadAd(at indexPath: IndexPath) {} 52 | 53 | func didRemoveAds(at indexPaths: [IndexPath]) {} 54 | 55 | func didClick(_ ad: MAAd) {} 56 | 57 | func didPayRevenue(for ad: MAAd) {} 58 | } 59 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/Native Ads/ALMAXAdPlacerCollectionViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAdPlacerCollectionViewController.swift 3 | // AppLovin MAX Demo App - Swift 4 | // 5 | // Created by Ritam Sarmah on 4/1/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import UIKit 11 | 12 | class ALMAXAdPlacerCollectionViewController: UICollectionViewController 13 | { 14 | private let data = UIFont.familyNames.sorted() 15 | 16 | private var adPlacer: MACollectionViewAdPlacer! 17 | 18 | override func viewDidLoad() 19 | { 20 | super.viewDidLoad() 21 | 22 | let settings = MAAdPlacerSettings(adUnitIdentifier: "YOUR_AD_UNIT_ID") 23 | settings.addFixedPosition(IndexPath(item: 2, section: 0)) 24 | settings.addFixedPosition(IndexPath(item: 8, section: 0)) 25 | settings.repeatingInterval = 5 26 | 27 | // If using custom views, you must also set the `nativeAdViewNib` and `nativeAdViewBinder` properties on the ad placer 28 | 29 | adPlacer = MACollectionViewAdPlacer(collectionView: collectionView, settings: settings) 30 | adPlacer.delegate = self 31 | adPlacer.loadAds() 32 | } 33 | 34 | // MARK: - UICollectionViewDataSource 35 | 36 | override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 37 | { 38 | data.count 39 | } 40 | 41 | override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 42 | { 43 | let cell = collectionView.al_dequeueReusableCell(withReuseIdentifier: "ALMAXAdPlacerCollectionViewCell", for: indexPath) as! ALTextCollectionViewCell 44 | cell.textLabel.text = data[indexPath.row] 45 | return cell 46 | } 47 | } 48 | 49 | extension ALMAXAdPlacerCollectionViewController: MAAdPlacerDelegate 50 | { 51 | func didLoadAd(at indexPath: IndexPath) {} 52 | 53 | func didRemoveAds(at indexPaths: [IndexPath]) {} 54 | 55 | func didClick(_ ad: MAAd) {} 56 | 57 | func didPayRevenue(for ad: MAAd) {} 58 | } 59 | -------------------------------------------------------------------------------- /Moloco/MolocoAdapter/Native+Utils.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Native+Utils.swift 3 | // MolocoAdapter 4 | // 5 | // Created by Alan Cao on 3/1/24. 6 | // Copyright © 2024 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import MolocoSDK 11 | 12 | @available(iOS 13.0, *) 13 | final class MAMolocoNativeAd: MANativeAd 14 | { 15 | private unowned let adapter: MolocoAdapter 16 | private let adFormat: MAAdFormat 17 | 18 | private var clickGestures: [UIGestureRecognizer] = [] 19 | 20 | init(adapter: MolocoAdapter, adFormat: MAAdFormat, builder: (MANativeAdBuilder) -> ()) 21 | { 22 | self.adapter = adapter 23 | self.adFormat = adFormat 24 | super.init(format: adFormat, builderBlock: builder) 25 | } 26 | 27 | deinit 28 | { 29 | clickGestures.forEach { $0.view?.removeGestureRecognizer($0) } 30 | } 31 | 32 | @discardableResult 33 | override func prepare(forInteractionClickableViews clickableViews: [UIView], withContainer container: UIView) -> Bool 34 | { 35 | guard adapter.nativeAd != nil else 36 | { 37 | adapter.log(adEvent: .registerAdViewsFailed(description: "Native ad is nil"), adFormat: adFormat) 38 | return false 39 | } 40 | 41 | adapter.log(adEvent: .preparingViewsForInteraction(views: clickableViews, container: container), adFormat: adFormat) 42 | 43 | clickableViews.forEach { view in 44 | let clickGesture = UITapGestureRecognizer(target: self, action: #selector(clickNativeView)) 45 | view.addGestureRecognizer(clickGesture) 46 | clickGestures.append(clickGesture) 47 | } 48 | 49 | if adFormat == .native 50 | { 51 | adapter.nativeAd?.handleImpression() 52 | } 53 | 54 | return true 55 | } 56 | 57 | @objc 58 | private func clickNativeView() 59 | { 60 | adapter.nativeAd?.handleClick() 61 | } 62 | } 63 | 64 | extension MANativeAdView 65 | { 66 | var clickableViews: [UIView] 67 | { 68 | [titleLabel, 69 | advertiserLabel, 70 | bodyLabel, 71 | callToActionButton, 72 | iconImageView].compactMap { $0 } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Native Ads/ALMAXAdPlacerTableViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAdPlacerTableViewController.m 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Ritam Sarmah on 4/1/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALMAXAdPlacerTableViewController.h" 10 | #import 11 | 12 | @interface ALMAXAdPlacerTableViewController() 13 | 14 | @property (nonatomic, strong) MATableViewAdPlacer *adPlacer; 15 | @property (nonatomic, strong) NSArray *data; 16 | 17 | @end 18 | 19 | @implementation ALMAXAdPlacerTableViewController 20 | 21 | - (void)viewDidLoad 22 | { 23 | [super viewDidLoad]; 24 | 25 | self.data = [UIFont.familyNames sortedArrayUsingSelector: @selector(compare:)]; 26 | 27 | MAAdPlacerSettings *settings = [MAAdPlacerSettings settingsWithAdUnitIdentifier: @"YOUR_AD_UNIT_ID"]; 28 | [settings addFixedPosition: [NSIndexPath indexPathForRow: 2 inSection: 0]]; 29 | [settings addFixedPosition: [NSIndexPath indexPathForRow: 8 inSection: 0]]; 30 | settings.repeatingInterval = 10; 31 | 32 | // If using custom views, you must also set the `nativeAdViewNib` and `nativeAdViewBinder` properties on the ad placer 33 | 34 | self.adPlacer = [MATableViewAdPlacer placerWithTableView: self.tableView settings: settings]; 35 | self.adPlacer.delegate = self; 36 | [self.adPlacer loadAds]; 37 | } 38 | 39 | #pragma mark - UITableViewDataSource 40 | 41 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 42 | { 43 | return self.data.count; 44 | } 45 | 46 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 47 | { 48 | UITableViewCell *cell = [tableView al_dequeueReusableCellWithIdentifier: @"ALMAXAdPlacerTableViewCell" forIndexPath: indexPath]; 49 | cell.textLabel.text = self.data[indexPath.row]; 50 | return cell; 51 | } 52 | 53 | #pragma mark - MAAdPlacerDelegate 54 | 55 | - (void)didLoadAdAtIndexPath:(NSIndexPath *)indexPath {} 56 | - (void)didRemoveAdsAtIndexPaths:(NSArray *)indexPaths {} 57 | - (void)didClickAd:(MAAd *)ad {} 58 | - (void)didPayRevenueForAd:(MAAd *)ad {} 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/Banners/ALMAXInterfaceBuilderBannerAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXInterfaceBuilderBannerAdViewController.swift 3 | // DemoApp-Swift 4 | // 5 | // Created by Andrew Tian on 9/20/19. 6 | // Copyright © 2019 AppLovin. All rights reserved. 7 | // 8 | 9 | import AdjustSdk 10 | import AppLovinSDK 11 | import UIKit 12 | 13 | class ALMAXInterfaceBuilderBannerAdViewController: ALBaseAdViewController, MAAdViewAdDelegate, MAAdRevenueDelegate 14 | { 15 | @IBOutlet weak var adView: MAAdView! 16 | 17 | // MARK: View Lifecycle 18 | 19 | override func viewDidLoad() 20 | { 21 | super.viewDidLoad() 22 | 23 | // NOTE: Must set Storyboard "User Defined Runtime Attributes" for banner ad view 24 | // Key Path = ad_unit_id 25 | // Type = String 26 | // Value = YOUR_AD_UNIT_ID 27 | 28 | // Load the first ad 29 | adView.loadAd() 30 | } 31 | 32 | // MARK: MAAdDelegate Protocol 33 | 34 | func didLoad(_ ad: MAAd) { logCallback() } 35 | 36 | func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) { logCallback() } 37 | 38 | func didDisplay(_ ad: MAAd) { logCallback() } 39 | 40 | func didHide(_ ad: MAAd) { logCallback() } 41 | 42 | func didClick(_ ad: MAAd) { logCallback() } 43 | 44 | func didFail(toDisplay ad: MAAd, withError error: MAError) { logCallback() } 45 | 46 | // MARK: MAAdViewAdDelegate Protocol 47 | 48 | func didExpand(_ ad: MAAd) { logCallback() } 49 | 50 | func didCollapse(_ ad: MAAd) { logCallback() } 51 | 52 | // MARK: MAAdRevenueDelegate Protocol 53 | 54 | func didPayRevenue(for ad: MAAd) 55 | { 56 | logCallback() 57 | 58 | let adjustAdRevenue = ADJAdRevenue(source: "applovin_max_sdk")! 59 | adjustAdRevenue.setRevenue(ad.revenue, currency: "USD") 60 | adjustAdRevenue.setAdRevenueNetwork(ad.networkName) 61 | adjustAdRevenue.setAdRevenueUnit(ad.adUnitIdentifier) 62 | if let placement = ad.placement 63 | { 64 | adjustAdRevenue.setAdRevenuePlacement(placement) 65 | } 66 | 67 | Adjust.trackAdRevenue(adjustAdRevenue) 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/MRECs/ALMAXInterfaceBuilderMRecAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXInterfaceBuilderMRecAdViewController.swift 3 | // DemoApp-Swift 4 | // 5 | // Created by Andrew Tian on 1/23/20. 6 | // Copyright © 2020 AppLovin. All rights reserved. 7 | // 8 | 9 | import AdjustSdk 10 | import AppLovinSDK 11 | import UIKit 12 | 13 | class ALMAXInterfaceBuilderMRecAdViewController: ALBaseAdViewController, MAAdViewAdDelegate, MAAdRevenueDelegate 14 | { 15 | @IBOutlet weak var adView: MAAdView! 16 | 17 | // MARK: View Lifecycle 18 | 19 | override func viewDidLoad() 20 | { 21 | super.viewDidLoad() 22 | 23 | // NOTE: Must set Storyboard "User Defined Runtime Attributes" for MREC ad view 24 | // Key Path = ad_unit_id & ad_format 25 | // Type = String 26 | // Value = YOUR_AD_UNIT_ID & MREC 27 | 28 | // Load the first ad 29 | adView.loadAd() 30 | } 31 | 32 | // MARK: MAAdDelegate Protocol 33 | 34 | func didLoad(_ ad: MAAd) { logCallback() } 35 | 36 | func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) { logCallback() } 37 | 38 | func didDisplay(_ ad: MAAd) { logCallback() } 39 | 40 | func didHide(_ ad: MAAd) { logCallback() } 41 | 42 | func didClick(_ ad: MAAd) { logCallback() } 43 | 44 | func didFail(toDisplay ad: MAAd, withError error: MAError) { logCallback() } 45 | 46 | // MARK: MAAdViewAdDelegate Protocol 47 | 48 | func didExpand(_ ad: MAAd) { logCallback() } 49 | 50 | func didCollapse(_ ad: MAAd) { logCallback() } 51 | 52 | // MARK: MAAdRevenueDelegate Protocol 53 | 54 | func didPayRevenue(for ad: MAAd) 55 | { 56 | logCallback() 57 | 58 | let adjustAdRevenue = ADJAdRevenue(source: "applovin_max_sdk")! 59 | adjustAdRevenue.setRevenue(ad.revenue, currency: "USD") 60 | adjustAdRevenue.setAdRevenueNetwork(ad.networkName) 61 | adjustAdRevenue.setAdRevenueUnit(ad.adUnitIdentifier) 62 | if let placement = ad.placement 63 | { 64 | adjustAdRevenue.setAdRevenuePlacement(placement) 65 | } 66 | 67 | Adjust.trackAdRevenue(adjustAdRevenue) 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Native Ads/ALMAXAdPlacerCollectionViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAdPlacerCollectionViewController.m 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Ritam Sarmah on 4/1/22. 6 | // Copyright © 2022 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALMAXAdPlacerCollectionViewController.h" 10 | #import "ALTextCollectionViewCell.h" 11 | #import 12 | 13 | @interface ALMAXAdPlacerCollectionViewController() 14 | 15 | @property (nonatomic, strong) MACollectionViewAdPlacer *adPlacer; 16 | @property (nonatomic, strong) NSArray *data; 17 | 18 | @end 19 | 20 | @implementation ALMAXAdPlacerCollectionViewController 21 | 22 | - (void)viewDidLoad 23 | { 24 | [super viewDidLoad]; 25 | 26 | self.data = [UIFont.familyNames sortedArrayUsingSelector: @selector(compare:)]; 27 | 28 | MAAdPlacerSettings *settings = [MAAdPlacerSettings settingsWithAdUnitIdentifier: @"YOUR_AD_UNIT_ID"]; 29 | [settings addFixedPosition: [NSIndexPath indexPathForItem: 2 inSection: 0]]; 30 | [settings addFixedPosition: [NSIndexPath indexPathForItem: 8 inSection: 0]]; 31 | settings.repeatingInterval = 5; 32 | 33 | // If using custom views, you must also set the `nativeAdViewNib` and `nativeAdViewBinder` properties on the ad placer 34 | 35 | self.adPlacer = [MACollectionViewAdPlacer placerWithCollectionView: self.collectionView settings: settings]; 36 | self.adPlacer.delegate = self; 37 | [self.adPlacer loadAds]; 38 | } 39 | 40 | #pragma mark - UICollectionViewDataSource 41 | 42 | - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 43 | { 44 | return self.data.count; 45 | } 46 | 47 | - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 48 | { 49 | ALTextCollectionViewCell *cell = (ALTextCollectionViewCell *)[collectionView al_dequeueReusableCellWithReuseIdentifier: @"ALMAXAdPlacerCollectionViewCell" forIndexPath: indexPath]; 50 | cell.textLabel.text = self.data[indexPath.row]; 51 | return cell; 52 | } 53 | 54 | #pragma mark - MAAdPlacerDelegate 55 | 56 | - (void)didLoadAdAtIndexPath:(NSIndexPath *)indexPath {} 57 | - (void)didRemoveAdsAtIndexPaths:(NSArray *)indexPaths {} 58 | - (void)didClickAd:(MAAd *)ad {} 59 | - (void)didPayRevenueForAd:(MAAd *)ad {} 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleAppOpenDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleAppOpenDelegate.m 3 | // GoogleAdapter 4 | // 5 | // Created by Vedant Mehta on 8/11/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import "ALGoogleAppOpenDelegate.h" 10 | 11 | @interface ALGoogleAppOpenDelegate () 12 | @property (nonatomic, weak) ALGoogleMediationAdapter *parentAdapter; 13 | @property (nonatomic, copy) NSString *placementIdentifier; 14 | @property (nonatomic, strong) id delegate; 15 | @end 16 | 17 | @implementation ALGoogleAppOpenDelegate 18 | 19 | - (instancetype)initWithParentAdapter:(ALGoogleMediationAdapter *)parentAdapter 20 | placementIdentifier:(NSString *)placementIdentifier 21 | andNotify:(id)delegate 22 | { 23 | self = [super init]; 24 | if ( self ) 25 | { 26 | self.parentAdapter = parentAdapter; 27 | self.placementIdentifier = placementIdentifier; 28 | self.delegate = delegate; 29 | } 30 | return self; 31 | } 32 | 33 | - (void)adWillPresentFullScreenContent:(id)ad 34 | { 35 | [self.parentAdapter log: @"App open ad shown: %@", self.placementIdentifier]; 36 | } 37 | 38 | - (void)ad:(id)ad didFailToPresentFullScreenContentWithError:(NSError *)error 39 | { 40 | MAAdapterError *adapterError = [MAAdapterError errorWithAdapterError: MAAdapterError.adDisplayFailedError 41 | mediatedNetworkErrorCode: error.code 42 | mediatedNetworkErrorMessage: error.localizedDescription]; 43 | [self.parentAdapter log: @"App open ad (%@) failed to show with error: %@", self.placementIdentifier, adapterError]; 44 | [self.delegate didFailToDisplayAppOpenAdWithError: adapterError]; 45 | } 46 | 47 | - (void)adDidRecordImpression:(id)ad 48 | { 49 | [self.parentAdapter log: @"App open ad impression recorded: %@", self.placementIdentifier]; 50 | [self.delegate didDisplayAppOpenAd]; 51 | } 52 | 53 | - (void)adDidRecordClick:(id)ad 54 | { 55 | [self.parentAdapter log: @"App open ad click recorded: %@", self.placementIdentifier]; 56 | [self.delegate didClickAppOpenAd]; 57 | } 58 | 59 | - (void)adDidDismissFullScreenContent:(id)ad 60 | { 61 | [self.parentAdapter log: @"App open ad hidden: %@", self.placementIdentifier]; 62 | [self.delegate didHideAppOpenAd]; 63 | } 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /Moloco/MolocoAdapter/Error+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error+Extensions.swift 3 | // MolocoAdapter 4 | // 5 | // Created by Alan Cao on 9/11/23. 6 | // Copyright © 2023 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import MolocoSDK 11 | 12 | extension Error 13 | { 14 | var molocoAdapterError: MAAdapterError 15 | { 16 | guard let molocoError = self as? MolocoError else 17 | { 18 | return .init(adapterError: .unspecified, mediatedNetworkErrorCode: code, mediatedNetworkErrorMessage: localizedDescription) 19 | } 20 | 21 | let adapterError: MAAdapterError 22 | switch molocoError 23 | { 24 | case .unknown: 25 | adapterError = .unspecified 26 | case .adLoadFailedSDKNotInit, .sdkInit: 27 | adapterError = .notInitialized 28 | case .sdkInvalidConfiguration: 29 | adapterError = .invalidConfiguration 30 | case .adLoadFailed: 31 | adapterError = .noFill 32 | case .adLoadTimeoutError: 33 | adapterError = .timeout 34 | case .adShowFailed, .adShowFailedAlreadyDisplaying: 35 | adapterError = .adDisplayFailedError 36 | case .adShowFailedNotLoaded: 37 | adapterError = .adNotReady 38 | case .adBidParseFailed: 39 | adapterError = .invalidLoadState 40 | case .adSignalCollectionFailed: 41 | adapterError = .signalCollectionTimeout 42 | @unknown default: 43 | adapterError = .unspecified 44 | } 45 | 46 | return .init(adapterError: adapterError, 47 | mediatedNetworkErrorCode: code, 48 | mediatedNetworkErrorMessage: localizedDescription) 49 | } 50 | 51 | var molocoNativeAdapterError: MAAdapterError 52 | { 53 | guard let molocoNativeAdError = self as? MolocoNativeAdError else 54 | { 55 | return .init(adapterError: .unspecified, mediatedNetworkErrorCode: code, mediatedNetworkErrorMessage: localizedDescription) 56 | } 57 | 58 | let adapterError: MAAdapterError 59 | switch molocoNativeAdError 60 | { 61 | case .placementNeedsCustomLayout: 62 | adapterError = .invalidConfiguration 63 | @unknown default: 64 | adapterError = .unspecified 65 | } 66 | 67 | return .init(adapterError: adapterError, 68 | mediatedNetworkErrorCode: code, 69 | mediatedNetworkErrorMessage: localizedDescription) 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleInterstitialDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleInterstitialDelegate.m 3 | // AppLovin MAX Google AdMob Adapter 4 | // 5 | // Created by Thomas So on 7/21/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import "ALGoogleInterstitialDelegate.h" 10 | 11 | @interface ALGoogleInterstitialDelegate () 12 | @property (nonatomic, weak) ALGoogleMediationAdapter *parentAdapter; 13 | @property (nonatomic, copy) NSString *placementIdentifier; 14 | @property (nonatomic, strong) id delegate; 15 | @end 16 | 17 | @implementation ALGoogleInterstitialDelegate 18 | 19 | - (instancetype)initWithParentAdapter:(ALGoogleMediationAdapter *)parentAdapter 20 | placementIdentifier:(NSString *)placementIdentifier 21 | andNotify:(id)delegate 22 | { 23 | self = [super init]; 24 | if ( self ) 25 | { 26 | self.parentAdapter = parentAdapter; 27 | self.placementIdentifier = placementIdentifier; 28 | self.delegate = delegate; 29 | } 30 | return self; 31 | } 32 | 33 | - (void)adWillPresentFullScreenContent:(id)ad 34 | { 35 | [self.parentAdapter log: @"Interstitial ad shown: %@", self.placementIdentifier]; 36 | } 37 | 38 | - (void)ad:(id)ad didFailToPresentFullScreenContentWithError:(NSError *)error 39 | { 40 | MAAdapterError *adapterError = [MAAdapterError errorWithAdapterError: MAAdapterError.adDisplayFailedError 41 | mediatedNetworkErrorCode: error.code 42 | mediatedNetworkErrorMessage: error.localizedDescription]; 43 | [self.parentAdapter log: @"Interstitial ad (%@) failed to show with error: %@", self.placementIdentifier, adapterError]; 44 | [self.delegate didFailToDisplayInterstitialAdWithError: adapterError]; 45 | } 46 | 47 | - (void)adDidRecordImpression:(id)ad 48 | { 49 | [self.parentAdapter log: @"Interstitial ad impression recorded: %@", self.placementIdentifier]; 50 | [self.delegate didDisplayInterstitialAd]; 51 | } 52 | 53 | - (void)adDidRecordClick:(id)ad 54 | { 55 | [self.parentAdapter log: @"Interstitial ad click recorded: %@", self.placementIdentifier]; 56 | [self.delegate didClickInterstitialAd]; 57 | } 58 | 59 | - (void)adDidDismissFullScreenContent:(id)ad 60 | { 61 | [self.parentAdapter log: @"Interstitial ad hidden: %@", self.placementIdentifier]; 62 | [self.delegate didHideInterstitialAd]; 63 | } 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/MRECs/ALMAXInterfaceBuilderMRecAdViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXInterfaceBuilderMRecAdViewController.m 3 | // DemoApp-ObjC 4 | // 5 | // Created by Andrew Tian on 1/23/20. 6 | // Copyright © 2020 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALMAXInterfaceBuilderMRecAdViewController.h" 10 | #import 11 | #import 12 | 13 | @interface ALMAXInterfaceBuilderMRecAdViewController() 14 | @property (nonatomic, strong) IBOutlet MAAdView *adView; 15 | @end 16 | 17 | @implementation ALMAXInterfaceBuilderMRecAdViewController 18 | 19 | #pragma mark - View Lifecycle 20 | 21 | - (void)viewDidLoad 22 | { 23 | [super viewDidLoad]; 24 | 25 | // NOTE: Must set Storyboard "User Defined Runtime Attributes" for MREC ad view 26 | // Key Path = ad_unit_id 27 | // Type = String 28 | // Value = YOUR_AD_UNIT_ID 29 | 30 | // Load the first ad 31 | [self.adView loadAd]; 32 | } 33 | 34 | #pragma mark - MAAdDelegate Protocol 35 | 36 | - (void)didLoadAd:(MAAd *)ad 37 | { 38 | [self logCallback: __PRETTY_FUNCTION__]; 39 | } 40 | 41 | - (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error 42 | { 43 | [self logCallback: __PRETTY_FUNCTION__]; 44 | } 45 | 46 | - (void)didDisplayAd:(MAAd *)ad 47 | { 48 | [self logCallback: __PRETTY_FUNCTION__]; 49 | } 50 | 51 | - (void)didHideAd:(MAAd *)ad 52 | { 53 | [self logCallback: __PRETTY_FUNCTION__]; 54 | } 55 | 56 | - (void)didClickAd:(MAAd *)ad 57 | { 58 | [self logCallback: __PRETTY_FUNCTION__]; 59 | } 60 | 61 | - (void)didFailToDisplayAd:(MAAd *)ad withError:(MAError *)error 62 | { 63 | [self logCallback: __PRETTY_FUNCTION__]; 64 | } 65 | 66 | #pragma mark - MAAdViewAdDelegate Protocol 67 | 68 | - (void)didExpandAd:(MAAd *)ad 69 | { 70 | [self logCallback: __PRETTY_FUNCTION__]; 71 | } 72 | 73 | - (void)didCollapseAd:(MAAd *)ad 74 | { 75 | [self logCallback: __PRETTY_FUNCTION__]; 76 | } 77 | 78 | #pragma mark - MAAdRevenueDelegate Protocol 79 | 80 | - (void)didPayRevenueForAd:(MAAd *)ad 81 | { 82 | [self logCallback: __PRETTY_FUNCTION__]; 83 | 84 | ADJAdRevenue *adjustAdRevenue = [[ADJAdRevenue alloc] initWithSource: @"applovin_max_sdk"]; 85 | [adjustAdRevenue setRevenue: ad.revenue currency: @"USD"]; 86 | [adjustAdRevenue setAdRevenueNetwork: ad.networkName]; 87 | [adjustAdRevenue setAdRevenueUnit: ad.adUnitIdentifier]; 88 | [adjustAdRevenue setAdRevenuePlacement: ad.placement]; 89 | 90 | [Adjust trackAdRevenue: adjustAdRevenue]; 91 | } 92 | 93 | @end 94 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Banners/ALMAXInterfaceBuilderBannerAdViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXInterfaceBuilderBannerAdViewController.m 3 | // DemoApp-ObjC 4 | // 5 | // Created by Andrew Tian on 9/10/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALMAXInterfaceBuilderBannerAdViewController.h" 10 | #import 11 | #import 12 | 13 | @interface ALMAXInterfaceBuilderBannerAdViewController() 14 | @property (nonatomic, strong) IBOutlet MAAdView *adView; 15 | @end 16 | 17 | @implementation ALMAXInterfaceBuilderBannerAdViewController 18 | 19 | #pragma mark - View Lifecycle 20 | 21 | - (void)viewDidLoad 22 | { 23 | [super viewDidLoad]; 24 | 25 | // NOTE: Must set Storyboard "User Defined Runtime Attributes" for banner ad view 26 | // Key Path = ad_unit_id 27 | // Type = String 28 | // Value = YOUR_AD_UNIT_ID 29 | 30 | // Load the first ad 31 | [self.adView loadAd]; 32 | } 33 | 34 | #pragma mark - MAAdDelegate Protocol 35 | 36 | - (void)didLoadAd:(MAAd *)ad 37 | { 38 | [self logCallback: __PRETTY_FUNCTION__]; 39 | } 40 | 41 | - (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error 42 | { 43 | [self logCallback: __PRETTY_FUNCTION__]; 44 | } 45 | 46 | - (void)didDisplayAd:(MAAd *)ad 47 | { 48 | [self logCallback: __PRETTY_FUNCTION__]; 49 | } 50 | 51 | - (void)didHideAd:(MAAd *)ad 52 | { 53 | [self logCallback: __PRETTY_FUNCTION__]; 54 | } 55 | 56 | - (void)didClickAd:(MAAd *)ad 57 | { 58 | [self logCallback: __PRETTY_FUNCTION__]; 59 | } 60 | 61 | - (void)didFailToDisplayAd:(MAAd *)ad withError:(MAError *)error 62 | { 63 | [self logCallback: __PRETTY_FUNCTION__]; 64 | } 65 | 66 | #pragma mark - MAAdViewAdDelegate Protocol 67 | 68 | - (void)didExpandAd:(MAAd *)ad 69 | { 70 | [self logCallback: __PRETTY_FUNCTION__]; 71 | } 72 | 73 | - (void)didCollapseAd:(MAAd *)ad 74 | { 75 | [self logCallback: __PRETTY_FUNCTION__]; 76 | } 77 | 78 | #pragma mark - MAAdRevenueDelegate Protocol 79 | 80 | - (void)didPayRevenueForAd:(MAAd *)ad 81 | { 82 | [self logCallback: __PRETTY_FUNCTION__]; 83 | 84 | ADJAdRevenue *adjustAdRevenue = [[ADJAdRevenue alloc] initWithSource: @"applovin_max_sdk"]; 85 | [adjustAdRevenue setRevenue: ad.revenue currency: @"USD"]; 86 | [adjustAdRevenue setAdRevenueNetwork: ad.networkName]; 87 | [adjustAdRevenue setAdRevenueUnit: ad.adUnitIdentifier]; 88 | [adjustAdRevenue setAdRevenuePlacement: ad.placement]; 89 | 90 | [Adjust trackAdRevenue: adjustAdRevenue]; 91 | } 92 | 93 | @end 94 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/MRECs/ALMAXFrameLayoutMRecAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXFrameLayoutMRecAdViewController.swift 3 | // DemoApp-Swift 4 | // 5 | // Created by Andrew Tian on 1/23/20. 6 | // Copyright © 2020 AppLovin. All rights reserved. 7 | // 8 | 9 | import AdjustSdk 10 | import AppLovinSDK 11 | import UIKit 12 | 13 | class ALMAXFrameLayoutMRecAdViewController: ALBaseAdViewController, MAAdViewAdDelegate, MAAdRevenueDelegate 14 | { 15 | private let adView = MAAdView(adUnitIdentifier: "YOUR_AD_UNIT_ID") 16 | 17 | // MARK: View Lifecycle 18 | 19 | override func viewDidLoad() 20 | { 21 | super.viewDidLoad() 22 | 23 | adView.delegate = self 24 | adView.revenueDelegate = self 25 | 26 | // Dimensions 27 | let width: CGFloat = 300 28 | let height: CGFloat = 250 29 | let x: CGFloat = 0 30 | let y: CGFloat = 0 31 | 32 | adView.frame = CGRect(x: x, y: y, width: width, height: height) 33 | adView.center.x = view.center.x 34 | 35 | // Set background or background color for MRECs to be fully functional 36 | adView.backgroundColor = .black 37 | 38 | view.addSubview(adView) 39 | 40 | // Load the first ad 41 | adView.loadAd() 42 | } 43 | 44 | // MARK: MAAdDelegate Protocol 45 | 46 | func didLoad(_ ad: MAAd) { logCallback() } 47 | 48 | func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) { logCallback() } 49 | 50 | func didDisplay(_ ad: MAAd) { logCallback() } 51 | 52 | func didHide(_ ad: MAAd) { logCallback() } 53 | 54 | func didClick(_ ad: MAAd) { logCallback() } 55 | 56 | func didFail(toDisplay ad: MAAd, withError error: MAError) { logCallback() } 57 | 58 | // MARK: MAAdViewAdDelegate Protocol 59 | 60 | func didExpand(_ ad: MAAd) { logCallback() } 61 | 62 | func didCollapse(_ ad: MAAd) { logCallback() } 63 | 64 | // MARK: MAAdRevenueDelegate Protocol 65 | 66 | func didPayRevenue(for ad: MAAd) 67 | { 68 | logCallback() 69 | 70 | let adjustAdRevenue = ADJAdRevenue(source: "applovin_max_sdk")! 71 | adjustAdRevenue.setRevenue(ad.revenue, currency: "USD") 72 | adjustAdRevenue.setAdRevenueNetwork(ad.networkName) 73 | adjustAdRevenue.setAdRevenueUnit(ad.adUnitIdentifier) 74 | if let placement = ad.placement 75 | { 76 | adjustAdRevenue.setAdRevenuePlacement(placement) 77 | } 78 | 79 | Adjust.trackAdRevenue(adjustAdRevenue) 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Base Classes/ALDemoAdViewSwiftUIViewModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALDemoAdViewSwiftUIViewModel.swift 3 | // AppLovin MAX Demo App - Swift 4 | // 5 | // Created by Matthew Nguyen on 8/8/23. 6 | // Copyright © 2023 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import SwiftUI 11 | 12 | @available(iOS 13.0, *) 13 | class ALDemoAdViewSwiftUIViewModel: NSObject, ObservableObject 14 | { 15 | @Published var callbacks: [CallbackTableItem] = [] 16 | @Published var shouldLoadAd: Bool = true 17 | @Published var adLoaded: Bool = false 18 | 19 | private func logCallback(functionName: String = #function) 20 | { 21 | DispatchQueue.main.async { 22 | withAnimation { 23 | self.callbacks.append(CallbackTableItem(callback: functionName)) 24 | } 25 | } 26 | } 27 | } 28 | 29 | @available(iOS 13.0, *) 30 | extension ALDemoAdViewSwiftUIViewModel: ALAdLoadDelegate 31 | { 32 | // MARK: ALAdLoadDelegate 33 | func adService(_ adService: ALAdService, didLoad ad: ALAd) 34 | { 35 | logCallback() 36 | 37 | adLoaded = true 38 | } 39 | 40 | // Look at ALErrorCodes.h for list of error codes 41 | func adService(_ adService: ALAdService, didFailToLoadAdWithError code: Int32) 42 | { 43 | logCallback() 44 | 45 | shouldLoadAd = false 46 | adLoaded = false 47 | } 48 | } 49 | 50 | @available(iOS 13.0, *) 51 | extension ALDemoAdViewSwiftUIViewModel: ALAdDisplayDelegate 52 | { 53 | // MARK: ALAdDisplayDelegate 54 | func ad(_ ad: ALAd, wasDisplayedIn view: UIView) 55 | { 56 | logCallback() 57 | 58 | shouldLoadAd = false 59 | adLoaded = false 60 | } 61 | 62 | func ad(_ ad: ALAd, wasHiddenIn view: UIView) { logCallback() } 63 | 64 | func ad(_ ad: ALAd, wasClickedIn view: UIView) { logCallback() } 65 | } 66 | 67 | @available(iOS 13.0, *) 68 | extension ALDemoAdViewSwiftUIViewModel: ALAdViewEventDelegate 69 | { 70 | // MARK: ALAdViewEventDelegate 71 | func ad(_ ad: ALAd, didPresentFullscreenFor adView: ALAdView) { logCallback() } 72 | 73 | func ad(_ ad: ALAd, willDismissFullscreenFor adView: ALAdView) { logCallback() } 74 | 75 | func ad(_ ad: ALAd, didDismissFullscreenFor adView: ALAdView) { logCallback() } 76 | 77 | func ad(_ ad: ALAd, willLeaveApplicationFor adView: ALAdView) { logCallback() } 78 | 79 | func ad(_ ad: ALAd, didReturnToApplicationFor adView: ALAdView) { logCallback() } 80 | 81 | func ad(_ ad: ALAd, didFailToDisplayIn adView: ALAdView, withError code: ALAdViewDisplayErrorCode) { logCallback() } 82 | } 83 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/App Open Ads/ALMAXAppOpenAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAppOpenAdViewController.swift 3 | // AppLovin MAX Demo App - Swift 4 | // 5 | // Created by Avi Leung on 2/13/23. 6 | // Copyright © 2023 AppLovin. All rights reserved. 7 | // 8 | 9 | import AdjustSdk 10 | import AppLovinSDK 11 | import UIKit 12 | 13 | class ALMAXAppOpenAdViewController: ALBaseAdViewController, MAAdViewAdDelegate, MAAdRevenueDelegate 14 | { 15 | private let appOpenAd = MAAppOpenAd(adUnitIdentifier: "YOUR_AD_UNIT_ID") 16 | 17 | // MARK: View Lifecycle 18 | 19 | override func viewDidLoad() 20 | { 21 | super.viewDidLoad() 22 | 23 | appOpenAd.delegate = self 24 | appOpenAd.revenueDelegate = self 25 | 26 | // Load the first ad 27 | appOpenAd.load() 28 | } 29 | 30 | // MARK: IB Actions 31 | 32 | @IBAction func showAd() 33 | { 34 | appOpenAd.show() 35 | } 36 | 37 | // MARK: MAAdDelegate Protocol 38 | 39 | func didLoad(_ ad: MAAd) 40 | { 41 | // App Open ad is ready to be shown. 'appOpenAd.isReady' will now return 'true' 42 | logCallback() 43 | } 44 | 45 | func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) 46 | { 47 | logCallback() 48 | } 49 | 50 | func didDisplay(_ ad: MAAd) { logCallback() } 51 | 52 | func didClick(_ ad: MAAd) { logCallback() } 53 | 54 | func didExpand(_ ad: MAAd) { logCallback() } 55 | 56 | func didCollapse(_ ad: MAAd) { logCallback() } 57 | 58 | func didHide(_ ad: MAAd) 59 | { 60 | logCallback() 61 | 62 | // App Open ad is hidden. Pre-load the next ad 63 | appOpenAd.load() 64 | } 65 | 66 | func didFail(toDisplay ad: MAAd, withError error: MAError) 67 | { 68 | logCallback() 69 | 70 | // App Open ad failed to display. We recommend loading the next ad 71 | appOpenAd.load() 72 | } 73 | 74 | // MARK: MAAdRevenueDelegate Protocol 75 | 76 | func didPayRevenue(for ad: MAAd) 77 | { 78 | logCallback() 79 | 80 | let adjustAdRevenue = ADJAdRevenue(source: "applovin_max_sdk")! 81 | adjustAdRevenue.setRevenue(ad.revenue, currency: "USD") 82 | adjustAdRevenue.setAdRevenueNetwork(ad.networkName) 83 | adjustAdRevenue.setAdRevenueUnit(ad.adUnitIdentifier) 84 | if let placement = ad.placement 85 | { 86 | adjustAdRevenue.setAdRevenuePlacement(placement) 87 | } 88 | 89 | Adjust.trackAdRevenue(adjustAdRevenue) 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /UnityAds/UnityAdsAdapter/Error+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error+Extensions.swift 3 | // UnityAdsAdapter 4 | // 5 | // Created by Vedant Mehta on 4/10/24. 6 | // Copyright © 2024 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import UnityAds 11 | 12 | extension UnityAdsLoadError 13 | { 14 | func unityAdsAdapterError(with message: String) -> MAAdapterError 15 | { 16 | let adapterError: MAAdapterError = switch self 17 | { 18 | case .initializeFailed: .notInitialized 19 | case .internal: .internalError 20 | case .invalidArgument: .invalidConfiguration 21 | case .noFill: .noFill 22 | case .timeout: .timeout 23 | @unknown default: .unspecified 24 | } 25 | 26 | return .init(adapterError: adapterError, 27 | mediatedNetworkErrorCode: rawValue, 28 | mediatedNetworkErrorMessage: message) 29 | } 30 | } 31 | 32 | extension UnityAdsShowError 33 | { 34 | func unityAdsAdapterError(with message: String) -> MAAdapterError 35 | { 36 | let adapterError: MAAdapterError = switch self 37 | { 38 | case .showErrorNotInitialized: .notInitialized 39 | case .showErrorNotReady: .adNotReady 40 | case .showErrorVideoPlayerError: .webViewError 41 | case .showErrorInvalidArgument: .invalidConfiguration 42 | case .showErrorNoConnection: .noConnection 43 | case .showErrorAlreadyShowing: .invalidLoadState 44 | case .showErrorInternalError: .internalError 45 | case .showErrorTimeout: .timeout 46 | @unknown default: .unspecified 47 | } 48 | 49 | return .init(adapterError: adapterError, 50 | mediatedNetworkErrorCode: rawValue, 51 | mediatedNetworkErrorMessage: message) 52 | } 53 | } 54 | 55 | extension UADSBannerError 56 | { 57 | var unityAdsAdapterError: MAAdapterError 58 | { 59 | let unityBannerErrorCode: UADSBannerErrorCode = .init(rawValue: code) ?? .codeUnknown 60 | 61 | let adapterError: MAAdapterError = switch unityBannerErrorCode 62 | { 63 | case .codeUnknown: .unspecified 64 | case .codeNativeError: .internalError 65 | case .codeWebViewError: .webViewError 66 | case .codeNoFillError: .noFill 67 | case .initializeFailed: .notInitialized 68 | case .invalidArgument: .invalidConfiguration 69 | @unknown default: .unspecified 70 | } 71 | 72 | return .init(adapterError: adapterError, 73 | mediatedNetworkErrorCode: code, 74 | mediatedNetworkErrorMessage: localizedDescription) 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: Report a problem 3 | labels: [bug] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | - To help us address issues efficiently, please provide clear and detailed bug reports. Reports lacking sufficient information may not be prioritized for review. 9 | - Before reporting, search our [existing issues](https://github.com/AppLovin/AppLovin-MAX-SDK-iOS/issues?q=is%3Aissue) and [changelog](https://github.com/AppLovin/AppLovin-MAX-SDK-iOS/releases) to see if the issue has already been addressed. 10 | - type: input 11 | attributes: 12 | label: "MAX SDK Version" 13 | placeholder: "e.g., 11.4.3" 14 | validations: 15 | required: true 16 | - type: input 17 | attributes: 18 | label: "Device/Platform Info" 19 | description: "Is the problem affecting any specific devices or platforms?" 20 | placeholder: "e.g., iOS 15, iPhone X, etc." 21 | validations: 22 | required: true 23 | - type: textarea 24 | attributes: 25 | label: "Current Behavior" 26 | description: "A concise description of what you're experiencing." 27 | validations: 28 | required: true 29 | - type: textarea 30 | attributes: 31 | label: "Expected Behavior" 32 | description: "A concise description of what you expected to happen." 33 | validations: 34 | required: false 35 | - type: textarea 36 | attributes: 37 | label: "How to Reproduce" 38 | description: "Step-by-step instructions, code snippets, or other details to reproduce the issue." 39 | validations: 40 | required: true 41 | - type: dropdown 42 | attributes: 43 | label: "Reproducible in the demo app?" 44 | description: Please try and reproduce the issue in the [demo app](https://github.com/AppLovin/AppLovin-MAX-SDK-iOS) 45 | options: 46 | - "Yes" 47 | - "No" 48 | - "Not Tested" 49 | default: 0 50 | validations: 51 | required: true 52 | - type: textarea 53 | attributes: 54 | label: "Additional Info" 55 | description: | 56 | - If applicable, include any info to provide further context, such as images, videos, or logs after [enabling verbose logging](https://developers.applovin.com/en/max/ios/overview/advanced-settings#enable-verbose-logging). 57 | - If you don't want to post media publicly, please submit your file(s) in a [support request](https://support.applovin.com/hc/en-us/requests/new) with subject 'Issue #: ' after filing this issue with a note saying you will do so here. 58 | placeholder: "Tip: Attach files by clicking this area and dragging files in" 59 | validations: 60 | required: false 61 | -------------------------------------------------------------------------------- /UnityAds/UnityAdsAdapter/UnityAdsAdapter+AdView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UnityAdsAdapter+AdView.swift 3 | // UnityAdsAdapter 4 | // 5 | // Created by Vedant Mehta on 4/10/24. 6 | // Copyright © 2024 AppLovin. All rights reserved. 7 | // 8 | 9 | import AppLovinSDK 10 | import UnityAds 11 | 12 | extension UnityAdsAdapter: MAAdViewAdapter 13 | { 14 | func loadAdViewAd(for parameters: MAAdapterResponseParameters, adFormat: MAAdFormat, andNotify delegate: MAAdViewAdapterDelegate) 15 | { 16 | let placementId = parameters.thirdPartyAdPlacementIdentifier 17 | log(adEvent: .loading(isBidding: parameters.isBidding), adFormat: adFormat) 18 | 19 | updatePrivacyConsent(for: parameters) 20 | 21 | // Every ad needs a random ID associated with each load and show 22 | biddingAdIdentifier = NSUUID().uuidString 23 | 24 | adViewDelegate = .init(adapter: self, delegate: delegate, adFormat: adFormat, parameters: parameters) 25 | bannerAdView = UADSBannerView(placementId: placementId, size: adFormat.unityAdSize) 26 | 27 | bannerAdView?.delegate = adViewDelegate 28 | bannerAdView?.load(with: parameters.unityAdLoadOptions(with: biddingAdIdentifier)) 29 | } 30 | } 31 | 32 | final class UnityAdsAdViewAdapterDelegate: AdViewAdapterDelegate, UADSBannerViewDelegate 33 | { 34 | func bannerViewDidLoad(_ bannerView: UADSBannerView!) 35 | { 36 | log(adEvent: .loaded) 37 | delegate?.didLoadAd(forAdView: bannerView) 38 | } 39 | 40 | func bannerViewDidError(_ bannerView: UADSBannerView!, error: UADSBannerError!) 41 | { 42 | log(adEvent: .loadFailed(error: error.unityAdsAdapterError)) 43 | delegate?.didFailToLoadAdViewAdWithError(error.unityAdsAdapterError) 44 | } 45 | 46 | func bannerViewDidShow(_ bannerView: UADSBannerView!) 47 | { 48 | log(adEvent: .displayed) 49 | delegate?.didDisplayAdViewAd() 50 | } 51 | 52 | func bannerViewDidClick(_ bannerView: UADSBannerView!) 53 | { 54 | log(adEvent: .clicked) 55 | delegate?.didClickAdViewAd() 56 | } 57 | 58 | func bannerViewDidLeaveApplication(_ bannerView: UADSBannerView!) 59 | { 60 | log(customEvent: .userLeftApplication) 61 | } 62 | } 63 | 64 | fileprivate extension MAAdFormat 65 | { 66 | var unityAdSize: CGSize 67 | { 68 | switch self 69 | { 70 | case .banner: 71 | return CGSize(width: 320, height: 50) 72 | case .mrec: 73 | return CGSize(width: 300, height: 250) 74 | case .leader: 75 | return CGSize(width: 728, height: 90) 76 | default: 77 | assertionFailure("Unsupported ad format: \(self)") 78 | return CGSize(width: 320, height: 50) 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "40-1.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "60.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "58.png", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "87.png", 25 | "scale" : "3x" 26 | }, 27 | { 28 | "size" : "40x40", 29 | "idiom" : "iphone", 30 | "filename" : "80.png", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "120.png", 37 | "scale" : "3x" 38 | }, 39 | { 40 | "size" : "60x60", 41 | "idiom" : "iphone", 42 | "filename" : "120-1.png", 43 | "scale" : "2x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "180.png", 49 | "scale" : "3x" 50 | }, 51 | { 52 | "size" : "20x20", 53 | "idiom" : "ipad", 54 | "filename" : "20.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "40-2.png", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "size" : "29x29", 65 | "idiom" : "ipad", 66 | "filename" : "29.png", 67 | "scale" : "1x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "58-1.png", 73 | "scale" : "2x" 74 | }, 75 | { 76 | "size" : "40x40", 77 | "idiom" : "ipad", 78 | "filename" : "40.png", 79 | "scale" : "1x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "80-1.png", 85 | "scale" : "2x" 86 | }, 87 | { 88 | "size" : "76x76", 89 | "idiom" : "ipad", 90 | "filename" : "76.png", 91 | "scale" : "1x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "152.png", 97 | "scale" : "2x" 98 | }, 99 | { 100 | "size" : "83.5x83.5", 101 | "idiom" : "ipad", 102 | "filename" : "167.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "1024x1024", 107 | "idiom" : "ios-marketing", 108 | "filename" : "1024.png", 109 | "scale" : "1x" 110 | } 111 | ], 112 | "info" : { 113 | "version" : 1, 114 | "author" : "xcode" 115 | } 116 | } -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "40-1.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "60.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "58.png", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "87.png", 25 | "scale" : "3x" 26 | }, 27 | { 28 | "size" : "40x40", 29 | "idiom" : "iphone", 30 | "filename" : "80.png", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "120.png", 37 | "scale" : "3x" 38 | }, 39 | { 40 | "size" : "60x60", 41 | "idiom" : "iphone", 42 | "filename" : "120-1.png", 43 | "scale" : "2x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "180.png", 49 | "scale" : "3x" 50 | }, 51 | { 52 | "size" : "20x20", 53 | "idiom" : "ipad", 54 | "filename" : "20.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "40-2.png", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "size" : "29x29", 65 | "idiom" : "ipad", 66 | "filename" : "29.png", 67 | "scale" : "1x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "58-1.png", 73 | "scale" : "2x" 74 | }, 75 | { 76 | "size" : "40x40", 77 | "idiom" : "ipad", 78 | "filename" : "40.png", 79 | "scale" : "1x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "80-1.png", 85 | "scale" : "2x" 86 | }, 87 | { 88 | "size" : "76x76", 89 | "idiom" : "ipad", 90 | "filename" : "76.png", 91 | "scale" : "1x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "152.png", 97 | "scale" : "2x" 98 | }, 99 | { 100 | "size" : "83.5x83.5", 101 | "idiom" : "ipad", 102 | "filename" : "167.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "1024x1024", 107 | "idiom" : "ios-marketing", 108 | "filename" : "1024.png", 109 | "scale" : "1x" 110 | } 111 | ], 112 | "info" : { 113 | "version" : 1, 114 | "author" : "xcode" 115 | } 116 | } -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/Banners/ALMAXFrameLayoutBannerAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXFrameLayoutBannerAdViewController.swift 3 | // DemoApp-Swift 4 | // 5 | // Created by Andrew Tian on 9/20/19. 6 | // Copyright © 2019 AppLovin. All rights reserved. 7 | // 8 | 9 | import AdjustSdk 10 | import AppLovinSDK 11 | import UIKit 12 | 13 | class ALMAXFrameLayoutBannerAdViewController: ALBaseAdViewController, MAAdViewAdDelegate, MAAdRevenueDelegate 14 | { 15 | private let adView = MAAdView(adUnitIdentifier: "YOUR_AD_UNIT_ID") 16 | 17 | // MARK: View Lifecycle 18 | 19 | override func viewDidLoad() 20 | { 21 | super.viewDidLoad() 22 | 23 | adView.delegate = self 24 | adView.revenueDelegate = self 25 | 26 | // Calculate dimensions 27 | let width = view.bounds.width // Stretch to the width of the screen for banners to be fully functional 28 | let height: CGFloat = (UIDevice.current.userInterfaceIdiom == .pad) ? 90 : 50 // Banner height on iPhone and iPad is 50 and 90, respectively 29 | let x: CGFloat = 0 30 | let y: CGFloat = 0 31 | 32 | adView.frame = CGRect(x: x, y: y, width: width, height: height) 33 | 34 | // Set background or background color for banners to be fully functional 35 | adView.backgroundColor = .black 36 | 37 | view.addSubview(adView) 38 | 39 | // Load the first ad 40 | adView.loadAd() 41 | } 42 | 43 | // MARK: MAAdDelegate Protocol 44 | 45 | func didLoad(_ ad: MAAd) { logCallback() } 46 | 47 | func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) { logCallback() } 48 | 49 | func didDisplay(_ ad: MAAd) { logCallback() } 50 | 51 | func didHide(_ ad: MAAd) { logCallback() } 52 | 53 | func didClick(_ ad: MAAd) { logCallback() } 54 | 55 | func didFail(toDisplay ad: MAAd, withError error: MAError) { logCallback() } 56 | 57 | // MARK: MAAdViewAdDelegate Protocol 58 | 59 | func didExpand(_ ad: MAAd) { logCallback() } 60 | 61 | func didCollapse(_ ad: MAAd) { logCallback() } 62 | 63 | // MARK: MAAdRevenueDelegate Protocol 64 | 65 | func didPayRevenue(for ad: MAAd) 66 | { 67 | logCallback() 68 | 69 | let adjustAdRevenue = ADJAdRevenue(source: "applovin_max_sdk")! 70 | adjustAdRevenue.setRevenue(ad.revenue, currency: "USD") 71 | adjustAdRevenue.setAdRevenueNetwork(ad.networkName) 72 | adjustAdRevenue.setAdRevenueUnit(ad.adUnitIdentifier) 73 | if let placement = ad.placement 74 | { 75 | adjustAdRevenue.setAdRevenuePlacement(placement) 76 | } 77 | 78 | Adjust.trackAdRevenue(adjustAdRevenue) 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleRewardedDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleRewardedDelegate.m 3 | // AppLovin MAX Google AdMob Adapter 4 | // 5 | // Created by Thomas So on 7/21/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import "ALGoogleRewardedDelegate.h" 10 | 11 | @interface ALGoogleRewardedDelegate () 12 | @property (nonatomic, weak) ALGoogleMediationAdapter *parentAdapter; 13 | @property (nonatomic, strong) NSString *placementIdentifier; 14 | @property (nonatomic, strong) id delegate; 15 | @end 16 | 17 | @implementation ALGoogleRewardedDelegate 18 | 19 | - (instancetype)initWithParentAdapter:(ALGoogleMediationAdapter *)parentAdapter 20 | placementIdentifier:(NSString *)placementIdentifier 21 | andNotify:(id)delegate 22 | { 23 | self = [super init]; 24 | if ( self ) 25 | { 26 | self.parentAdapter = parentAdapter; 27 | self.placementIdentifier = placementIdentifier; 28 | self.delegate = delegate; 29 | } 30 | return self; 31 | } 32 | 33 | - (void)adWillPresentFullScreenContent:(id)ad 34 | { 35 | [self.parentAdapter log: @"Rewarded ad shown: %@", self.placementIdentifier]; 36 | } 37 | 38 | - (void)ad:(id)ad didFailToPresentFullScreenContentWithError:(NSError *)error 39 | { 40 | MAAdapterError *adapterError = [MAAdapterError errorWithAdapterError: MAAdapterError.adDisplayFailedError 41 | mediatedNetworkErrorCode: error.code 42 | mediatedNetworkErrorMessage: error.localizedDescription]; 43 | [self.parentAdapter log: @"Rewarded ad (%@) failed to show: %@", self.placementIdentifier, adapterError]; 44 | [self.delegate didFailToDisplayRewardedAdWithError: adapterError]; 45 | } 46 | 47 | - (void)adDidRecordImpression:(id)ad 48 | { 49 | [self.parentAdapter log: @"Rewarded ad impression recorded: %@", self.placementIdentifier]; 50 | [self.delegate didDisplayRewardedAd]; 51 | } 52 | 53 | - (void)adDidRecordClick:(id)ad 54 | { 55 | [self.parentAdapter log: @"Rewarded ad click recorded: %@", self.placementIdentifier]; 56 | [self.delegate didClickRewardedAd]; 57 | } 58 | 59 | - (void)adDidDismissFullScreenContent:(id)ad 60 | { 61 | if ( [self hasGrantedReward] || [self.parentAdapter shouldAlwaysRewardUser] ) 62 | { 63 | MAReward *reward = [self.parentAdapter reward]; 64 | [self.parentAdapter log: @"Rewarded user with reward: %@", reward]; 65 | [self.delegate didRewardUserWithReward: reward]; 66 | } 67 | 68 | [self.parentAdapter log: @"Rewarded ad hidden: %@", self.placementIdentifier]; 69 | [self.delegate didHideRewardedAd]; 70 | } 71 | 72 | @end 73 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/MRECs/ALMAXAutoLayoutMRecAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAutoLayoutMRecAdViewController.swift 3 | // DemoApp-Swift 4 | // 5 | // Created by Andrew Tian on 1/13/20. 6 | // Copyright © 2020 AppLovin. All rights reserved. 7 | // 8 | 9 | import AdjustSdk 10 | import AppLovinSDK 11 | import UIKit 12 | 13 | class ALMAXAutoLayoutMRecAdViewController: ALBaseAdViewController, MAAdViewAdDelegate, MAAdRevenueDelegate 14 | { 15 | private let adView = MAAdView(adUnitIdentifier: "YOUR_AD_UNIT_ID", adFormat: MAAdFormat.mrec) 16 | 17 | // MARK: View Lifecycle 18 | 19 | override func viewDidLoad() 20 | { 21 | super.viewDidLoad() 22 | 23 | adView.delegate = self 24 | adView.revenueDelegate = self 25 | 26 | adView.translatesAutoresizingMaskIntoConstraints = false 27 | 28 | // Set background or background color for MRECs to be fully functional 29 | adView.backgroundColor = .black 30 | 31 | view.addSubview(adView) 32 | 33 | // Center the MREC and anchor it to the top of the screen. 34 | adView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true 35 | adView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true 36 | 37 | adView.widthAnchor.constraint(equalToConstant: 300).isActive = true 38 | adView.heightAnchor.constraint(equalToConstant: 250).isActive = true 39 | 40 | // Load the first ad 41 | adView.loadAd() 42 | } 43 | 44 | // MARK: MAAdDelegate Protocol 45 | 46 | func didLoad(_ ad: MAAd) { logCallback() } 47 | 48 | func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) { logCallback() } 49 | 50 | func didDisplay(_ ad: MAAd) { logCallback() } 51 | 52 | func didHide(_ ad: MAAd) { logCallback() } 53 | 54 | func didClick(_ ad: MAAd) { logCallback() } 55 | 56 | func didFail(toDisplay ad: MAAd, withError error: MAError) { logCallback() } 57 | 58 | // MARK: MAAdViewAdDelegate Protocol 59 | 60 | func didExpand(_ ad: MAAd) { logCallback() } 61 | 62 | func didCollapse(_ ad: MAAd) { logCallback() } 63 | 64 | // MARK: MAAdRevenueDelegate Protocol 65 | 66 | func didPayRevenue(for ad: MAAd) 67 | { 68 | logCallback() 69 | 70 | let adjustAdRevenue = ADJAdRevenue(source: "applovin_max_sdk")! 71 | adjustAdRevenue.setRevenue(ad.revenue, currency: "USD") 72 | adjustAdRevenue.setAdRevenueNetwork(ad.networkName) 73 | adjustAdRevenue.setAdRevenueUnit(ad.adUnitIdentifier) 74 | if let placement = ad.placement 75 | { 76 | adjustAdRevenue.setAdRevenuePlacement(placement) 77 | } 78 | 79 | Adjust.trackAdRevenue(adjustAdRevenue) 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/ALAppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALAppDelegate.swift 3 | // DemoApp-Swift 4 | // 5 | // Created by Andrew Tian on 9/20/19. 6 | // Copyright © 2019 AppLovin. All rights reserved. 7 | // 8 | 9 | import AdjustSdk 10 | import AppLovinSDK 11 | import UIKit 12 | 13 | class ALAppDelegate: UIResponder, UIApplicationDelegate 14 | { 15 | // If you want to test your own AppLovin SDK key, change the value here and update the bundle identifier in the xcodeproj. 16 | let YOUR_SDK_KEY = "05TMDQ5tZabpXQ45_UTbmEGNUtVAzSTzT6KmWQc5_CuWdzccS4DCITZoL3yIWUG3bbq60QC_d4WF28tUC4gVTF" 17 | 18 | var window: UIWindow? 19 | 20 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 21 | { 22 | // Create the initialization configuration 23 | let initConfig = ALSdkInitializationConfiguration(sdkKey: YOUR_SDK_KEY) { builder in 24 | 25 | builder.mediationProvider = ALMediationProviderMAX 26 | 27 | // Enable test mode by default for the current device. 28 | if let currentIDFV = UIDevice.current.identifierForVendor?.uuidString 29 | { 30 | builder.testDeviceAdvertisingIdentifiers = [currentIDFV] 31 | } 32 | } 33 | 34 | // Initialize the SDK with the configuration 35 | ALSdk.shared().initialize(with: initConfig) { sdkConfig in 36 | // AppLovin SDK is initialized, start loading ads now or later if ad gate is reached 37 | 38 | // Initialize Adjust SDK 39 | let adjustConfig = ADJConfig(appToken: "{YourAppToken}", environment: ADJEnvironmentSandbox) 40 | Adjust.initSdk(adjustConfig) 41 | } 42 | 43 | let barTintColor = UIColor.init(red: 10 / 255.0, green: 131 / 255.0, blue: 170 / 255.0, alpha: 1.0) 44 | let navigationBarAppearance = UINavigationBar.appearance() 45 | if #available(iOS 15.0, *) 46 | { 47 | let appearance = UINavigationBarAppearance() 48 | appearance.configureWithOpaqueBackground() 49 | appearance.backgroundColor = barTintColor 50 | appearance.titleTextAttributes = [.foregroundColor: UIColor.white] 51 | navigationBarAppearance.standardAppearance = appearance 52 | navigationBarAppearance.scrollEdgeAppearance = appearance 53 | navigationBarAppearance.tintColor = .white 54 | } 55 | else 56 | { 57 | // Fallback on earlier versions 58 | navigationBarAppearance.isTranslucent = false 59 | navigationBarAppearance.barTintColor = barTintColor 60 | navigationBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.white] 61 | navigationBarAppearance.tintColor = .white 62 | } 63 | 64 | return true 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/App Open Ads/ALMAXAppOpenAdViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAppOpenAdViewController.m 3 | // AppLovin MAX Demo App - ObjC 4 | // 5 | // Created by Avi Leung on 2/13/23. 6 | // Copyright © 2023 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALMAXAppOpenAdViewController.h" 10 | #import "ALBaseAdViewController.h" 11 | #import 12 | #import 13 | 14 | @interface ALMAXAppOpenAdViewController () 15 | @property (nonatomic, strong) MAAppOpenAd *appOpenAd; 16 | @end 17 | 18 | @implementation ALMAXAppOpenAdViewController 19 | 20 | #pragma mark - View Lifecycle 21 | 22 | - (void)viewDidLoad 23 | { 24 | [super viewDidLoad]; 25 | 26 | self.appOpenAd = [[MAAppOpenAd alloc] initWithAdUnitIdentifier: @"YOUR_AD_UNIT_ID"]; 27 | 28 | self.appOpenAd.delegate = self; 29 | self.appOpenAd.revenueDelegate = self; 30 | 31 | // Load the first ad 32 | [self.appOpenAd loadAd]; 33 | } 34 | 35 | #pragma mark - IB Actions 36 | 37 | - (IBAction)showAd 38 | { 39 | if ( [self.appOpenAd isReady] ) 40 | { 41 | [self.appOpenAd showAd]; 42 | } 43 | } 44 | 45 | #pragma mark - MAAdDelegate Protocol 46 | 47 | - (void)didLoadAd:(MAAd *)ad 48 | { 49 | // App Open ad is ready to be shown. '[self.appOpenAd isReady]' will now return 'YES' 50 | [self logCallback: __PRETTY_FUNCTION__]; 51 | } 52 | 53 | - (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error 54 | { 55 | [self logCallback: __PRETTY_FUNCTION__]; 56 | } 57 | 58 | - (void)didDisplayAd:(MAAd *)ad 59 | { 60 | [self logCallback: __PRETTY_FUNCTION__]; 61 | } 62 | 63 | - (void)didClickAd:(MAAd *)ad 64 | { 65 | [self logCallback: __PRETTY_FUNCTION__]; 66 | } 67 | 68 | - (void)didHideAd:(MAAd *)ad 69 | { 70 | [self logCallback: __PRETTY_FUNCTION__]; 71 | 72 | // App Open ad is hidden. Pre-load the next ad 73 | [self.appOpenAd loadAd]; 74 | } 75 | 76 | - (void)didFailToDisplayAd:(MAAd *)ad withError:(MAError *)error 77 | { 78 | [self logCallback: __PRETTY_FUNCTION__]; 79 | 80 | // App Open ad failed to display. We recommend loading the next ad 81 | [self.appOpenAd loadAd]; 82 | } 83 | 84 | #pragma mark - MAAdRevenueDelegate Protocol 85 | 86 | - (void)didPayRevenueForAd:(MAAd *)ad 87 | { 88 | [self logCallback: __PRETTY_FUNCTION__]; 89 | 90 | ADJAdRevenue *adjustAdRevenue = [[ADJAdRevenue alloc] initWithSource: @"applovin_max_sdk"]; 91 | [adjustAdRevenue setRevenue: ad.revenue currency: @"USD"]; 92 | [adjustAdRevenue setAdRevenueNetwork: ad.networkName]; 93 | [adjustAdRevenue setAdRevenueUnit: ad.adUnitIdentifier]; 94 | [adjustAdRevenue setAdRevenuePlacement: ad.placement]; 95 | 96 | [Adjust trackAdRevenue: adjustAdRevenue]; 97 | } 98 | 99 | @end 100 | 101 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/ALAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALAppDelegate.m 3 | // DemoApp-ObjC 4 | // 5 | // Created by Thomas So on 9/4/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALAppDelegate.h" 10 | #import 11 | #import 12 | 13 | @implementation ALAppDelegate 14 | 15 | // If you want to test your own AppLovin SDK key, change the value here and update the bundle identifier in the xcodeproj. 16 | static NSString *const YOUR_SDK_KEY = @"05TMDQ5tZabpXQ45_UTbmEGNUtVAzSTzT6KmWQc5_CuWdzccS4DCITZoL3yIWUG3bbq60QC_d4WF28tUC4gVTF"; 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 19 | { 20 | // Create the initialization configuration 21 | ALSdkInitializationConfiguration *initConfig = [ALSdkInitializationConfiguration configurationWithSdkKey: YOUR_SDK_KEY builderBlock:^(ALSdkInitializationConfigurationBuilder *builder) { 22 | 23 | builder.mediationProvider = ALMediationProviderMAX; 24 | 25 | // Enable test mode by default for the current device. 26 | NSString *currentIDFV = UIDevice.currentDevice.identifierForVendor.UUIDString; 27 | if ( currentIDFV.length > 0 ) 28 | { 29 | builder.testDeviceAdvertisingIdentifiers = @[currentIDFV]; 30 | } 31 | }]; 32 | 33 | // Initialize the SDK with the configuration 34 | [[ALSdk shared] initializeWithConfiguration: initConfig completionHandler:^(ALSdkConfiguration *sdkConfig) { 35 | // AppLovin SDK is initialized, start loading ads now or later if ad gate is reached 36 | 37 | // Initialize Adjust SDK 38 | ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken: @"{YourAppToken}" environment: ADJEnvironmentSandbox]; 39 | [Adjust initSdk: adjustConfig]; 40 | }]; 41 | 42 | UIColor *barTintColor = [UIColor colorWithRed: 10/255.0 green: 131/255.0 blue: 170/255.0 alpha: 1.0]; 43 | if ( @available(iOS 15.0, *) ) 44 | { 45 | UINavigationBarAppearance *navigationBarAppearance = [[UINavigationBarAppearance alloc] init]; 46 | [navigationBarAppearance configureWithOpaqueBackground]; 47 | navigationBarAppearance.backgroundColor = barTintColor; 48 | navigationBarAppearance.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.whiteColor}; 49 | [UINavigationBar appearance].standardAppearance = navigationBarAppearance; 50 | [UINavigationBar appearance].scrollEdgeAppearance = navigationBarAppearance; 51 | [UINavigationBar appearance].tintColor = UIColor.whiteColor; 52 | } 53 | else 54 | { 55 | // Fallback on earlier versions 56 | [UINavigationBar appearance].barTintColor = barTintColor; 57 | [UINavigationBar appearance].titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.whiteColor}; 58 | [UINavigationBar appearance].tintColor = UIColor.whiteColor; 59 | } 60 | 61 | return YES; 62 | } 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/Banners/ALMAXAutoLayoutBannerAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXAutoLayoutBannerAdViewController.swift 3 | // DemoApp-Swift 4 | // 5 | // Created by Andrew Tian on 9/20/19. 6 | // Copyright © 2019 AppLovin. All rights reserved. 7 | // 8 | 9 | import AdjustSdk 10 | import AppLovinSDK 11 | import UIKit 12 | 13 | class ALMAXAutoLayoutBannerAdViewController: ALBaseAdViewController, MAAdViewAdDelegate, MAAdRevenueDelegate 14 | { 15 | private let adView = MAAdView(adUnitIdentifier: "YOUR_AD_UNIT_ID") 16 | 17 | // MARK: View Lifecycle 18 | 19 | override func viewDidLoad() 20 | { 21 | super.viewDidLoad() 22 | 23 | adView.delegate = self 24 | adView.revenueDelegate = self 25 | 26 | adView.translatesAutoresizingMaskIntoConstraints = false 27 | 28 | // Set background or background color for banners to be fully functional 29 | adView.backgroundColor = .black 30 | 31 | view.addSubview(adView) 32 | 33 | // Anchor the banner to the left, right, and top of the screen. 34 | adView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true 35 | adView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true 36 | adView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true 37 | 38 | adView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true 39 | adView.heightAnchor.constraint(equalToConstant: (UIDevice.current.userInterfaceIdiom == .pad) ? 90 : 50).isActive = true // Banner height on iPhone and iPad is 50 and 90, respectively 40 | 41 | // Load the first ad 42 | adView.loadAd() 43 | } 44 | 45 | // MARK: MAAdDelegate Protocol 46 | 47 | func didLoad(_ ad: MAAd) { logCallback() } 48 | 49 | func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) { logCallback() } 50 | 51 | func didDisplay(_ ad: MAAd) { logCallback() } 52 | 53 | func didHide(_ ad: MAAd) { logCallback() } 54 | 55 | func didClick(_ ad: MAAd) { logCallback() } 56 | 57 | func didFail(toDisplay ad: MAAd, withError error: MAError) { logCallback() } 58 | 59 | // MARK: MAAdViewAdDelegate Protocol 60 | 61 | func didExpand(_ ad: MAAd) { logCallback() } 62 | 63 | func didCollapse(_ ad: MAAd) { logCallback() } 64 | 65 | // MARK: MAAdRevenueDelegate Protocol 66 | 67 | func didPayRevenue(for ad: MAAd) 68 | { 69 | logCallback() 70 | 71 | let adjustAdRevenue = ADJAdRevenue(source: "applovin_max_sdk")! 72 | adjustAdRevenue.setRevenue(ad.revenue, currency: "USD") 73 | adjustAdRevenue.setAdRevenueNetwork(ad.networkName) 74 | adjustAdRevenue.setAdRevenueUnit(ad.adUnitIdentifier) 75 | if let placement = ad.placement 76 | { 77 | adjustAdRevenue.setAdRevenuePlacement(placement) 78 | } 79 | 80 | Adjust.trackAdRevenue(adjustAdRevenue) 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/crash_anr_report.yaml: -------------------------------------------------------------------------------- 1 | name: Crash Report 2 | description: Report a crash 3 | labels: [bug] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | - To help us address issues efficiently, please provide clear and detailed bug reports. Reports lacking sufficient information may not be prioritized for review. 9 | - Before reporting, search our [existing issues](https://github.com/AppLovin/AppLovin-MAX-SDK-iOS/issues?q=is%3Aissue) and [changelog](https://github.com/AppLovin/AppLovin-MAX-SDK-iOS/releases) to see if the issue has already been addressed. 10 | - type: input 11 | attributes: 12 | label: "MAX SDK Version" 13 | placeholder: "e.g., 11.4.3" 14 | validations: 15 | required: true 16 | - type: input 17 | attributes: 18 | label: "Device/Platform Info" 19 | description: "Is the problem affecting any specific devices or platforms?" 20 | placeholder: "e.g., iOS 15, iPhone X, etc." 21 | validations: 22 | required: true 23 | - type: input 24 | attributes: 25 | label: "Crashes per Day" 26 | description: "What is the number of crashes per day?" 27 | validations: 28 | required: true 29 | - type: input 30 | attributes: 31 | label: "Percentage of Users Affected" 32 | description: "What percentage of users are experiencing the crash?" 33 | validations: 34 | required: true 35 | - type: textarea 36 | attributes: 37 | label: "First Occurrence of Crash" 38 | description: "Did the crash start on a specific day, after updating from an older SDK version, or on a new integration?" 39 | validations: 40 | required: true 41 | - type: textarea 42 | attributes: 43 | label: "Exception and Stack Trace" 44 | validations: 45 | required: true 46 | - type: textarea 47 | attributes: 48 | label: "How to Reproduce" 49 | description: "Step-by-step instructions, code snippets, or other details to reproduce the issue." 50 | validations: 51 | required: true 52 | - type: dropdown 53 | attributes: 54 | label: "Reproducible in the demo app?" 55 | description: Please try and reproduce the issue in the [demo app](https://github.com/AppLovin/AppLovin-MAX-SDK-iOS) 56 | options: 57 | - "Yes" 58 | - "No" 59 | - "Not Tested" 60 | default: 0 61 | validations: 62 | required: true 63 | - type: textarea 64 | attributes: 65 | label: "Additional Info" 66 | description: | 67 | - If applicable, include any info to provide further context, such as images, videos, or logs after [enabling verbose logging](https://developers.applovin.com/en/max/ios/overview/advanced-settings#enable-verbose-logging). 68 | - If you don't want to post media publicly, please submit your file(s) in a [support request](https://support.applovin.com/hc/en-us/requests/new) with subject 'Issue #: ' after filing this issue with a note saying you will do so here. 69 | placeholder: "Tip: Attach files by clicking this area and dragging files in" 70 | validations: 71 | required: false 72 | -------------------------------------------------------------------------------- /Google/GoogleAdapter/ALGoogleAdViewDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALGoogleAdViewDelegate.m 3 | // AppLovin MAX Google AdMob Adapter 4 | // 5 | // Created by Thomas So on 7/21/22. 6 | // Copyright © 2022 AppLovin. All rights reserved. 7 | // 8 | 9 | #import "ALGoogleAdViewDelegate.h" 10 | 11 | @interface ALGoogleAdViewDelegate () 12 | @property (nonatomic, weak) ALGoogleMediationAdapter *parentAdapter; 13 | @property (nonatomic, weak) MAAdFormat *adFormat; 14 | @property (nonatomic, strong) id delegate; 15 | @end 16 | 17 | @implementation ALGoogleAdViewDelegate 18 | 19 | - (instancetype)initWithParentAdapter:(ALGoogleMediationAdapter *)parentAdapter 20 | adFormat:(MAAdFormat *)adFormat 21 | andNotify:(id)delegate 22 | { 23 | self = [super init]; 24 | if ( self ) 25 | { 26 | self.parentAdapter = parentAdapter; 27 | self.adFormat = adFormat; 28 | self.delegate = delegate; 29 | } 30 | return self; 31 | } 32 | 33 | - (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView 34 | { 35 | [self.parentAdapter log: @"%@ ad loaded: %@", self.adFormat.label, bannerView.adUnitID]; 36 | 37 | NSMutableDictionary *extraInfo = [NSMutableDictionary dictionaryWithCapacity: 3]; 38 | 39 | NSString *responseId = bannerView.responseInfo.responseIdentifier; 40 | if ( [responseId al_isValidString] ) 41 | { 42 | extraInfo[@"creative_id"] = responseId; 43 | } 44 | 45 | CGSize adSize = bannerView.adSize.size; 46 | if ( !CGSizeEqualToSize(CGSizeZero, adSize) ) 47 | { 48 | extraInfo[@"ad_width"] = @(adSize.width); 49 | extraInfo[@"ad_height"] = @(adSize.height); 50 | } 51 | 52 | [self.delegate didLoadAdForAdView: bannerView withExtraInfo: extraInfo]; 53 | } 54 | 55 | - (void)bannerView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(NSError *)error 56 | { 57 | MAAdapterError *adapterError = [ALGoogleMediationAdapter toMaxError: error]; 58 | [self.parentAdapter log: @"%@ ad (%@) failed to load with error: %@", self.adFormat.label, bannerView.adUnitID, adapterError]; 59 | [self.delegate didFailToLoadAdViewAdWithError: adapterError]; 60 | } 61 | 62 | - (void)bannerViewDidRecordImpression:(GADBannerView *)bannerView 63 | { 64 | [self.parentAdapter log: @"%@ ad shown: %@", self.adFormat.label, bannerView.adUnitID]; 65 | [self.delegate didDisplayAdViewAd]; 66 | } 67 | 68 | - (void)bannerViewDidRecordClick:(GADBannerView *)bannerView 69 | { 70 | [self.parentAdapter log: @"%@ ad clicked: %@", self.adFormat.label, bannerView.adUnitID]; 71 | [self.delegate didClickAdViewAd]; 72 | } 73 | 74 | - (void)bannerViewWillPresentScreen:(GADBannerView *)bannerView 75 | { 76 | [self.parentAdapter log: @"%@ ad will present: %@", self.adFormat.label, bannerView.adUnitID]; 77 | [self.delegate didExpandAdViewAd]; 78 | } 79 | 80 | - (void)bannerViewDidDismissScreen:(GADBannerView *)bannerView 81 | { 82 | [self.parentAdapter log: @"%@ ad collapsed: %@", self.adFormat.label, bannerView.adUnitID]; 83 | [self.delegate didCollapseAdViewAd]; 84 | } 85 | 86 | @end 87 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/MRECs/ALMAXFrameLayoutMRecAdViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXFrameLayoutMRecAdViewController.m 3 | // DemoApp-ObjC 4 | // 5 | // Created by Andrew Tian on 1/23/20. 6 | // Copyright © 2020 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALMAXFrameLayoutMRecAdViewController.h" 10 | #import 11 | #import 12 | 13 | @interface ALMAXFrameLayoutMRecAdViewController() 14 | @property (nonatomic, strong) MAAdView *adView; 15 | @end 16 | 17 | @implementation ALMAXFrameLayoutMRecAdViewController 18 | 19 | #pragma mark - View Lifecycle 20 | 21 | - (void)viewDidLoad 22 | { 23 | [super viewDidLoad]; 24 | 25 | self.adView = [[MAAdView alloc] initWithAdUnitIdentifier: @"YOUR_AD_UNIT_ID" adFormat: MAAdFormat.mrec]; 26 | 27 | self.adView.delegate = self; 28 | self.adView.revenueDelegate = self; 29 | 30 | // Dimensions 31 | CGFloat width = 300; 32 | CGFloat height = 250; 33 | CGFloat x = self.view.center.x - 150; 34 | CGFloat y = 0; 35 | 36 | self.adView.frame = CGRectMake(x, y, width, height); 37 | 38 | // Set background or background color for MRECs to be fully functional 39 | self.adView.backgroundColor = UIColor.blackColor; 40 | 41 | [self.view addSubview: self.adView]; 42 | 43 | // Load the first ad 44 | [self.adView loadAd]; 45 | } 46 | 47 | #pragma mark - MAAdDelegate Protocol 48 | 49 | - (void)didLoadAd:(MAAd *)ad 50 | { 51 | [self logCallback: __PRETTY_FUNCTION__]; 52 | } 53 | 54 | - (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error 55 | { 56 | [self logCallback: __PRETTY_FUNCTION__]; 57 | } 58 | 59 | - (void)didDisplayAd:(MAAd *)ad 60 | { 61 | [self logCallback: __PRETTY_FUNCTION__]; 62 | } 63 | 64 | - (void)didHideAd:(MAAd *)ad 65 | { 66 | [self logCallback: __PRETTY_FUNCTION__]; 67 | } 68 | 69 | - (void)didClickAd:(MAAd *)ad 70 | { 71 | [self logCallback: __PRETTY_FUNCTION__]; 72 | } 73 | 74 | - (void)didFailToDisplayAd:(MAAd *)ad withError:(MAError *)error 75 | { 76 | [self logCallback: __PRETTY_FUNCTION__]; 77 | } 78 | 79 | #pragma mark - MAAdViewAdDelegate Protocol 80 | 81 | - (void)didExpandAd:(MAAd *)ad 82 | { 83 | [self logCallback: __PRETTY_FUNCTION__]; 84 | } 85 | 86 | - (void)didCollapseAd:(MAAd *)ad 87 | { 88 | [self logCallback: __PRETTY_FUNCTION__]; 89 | } 90 | 91 | #pragma mark - MAAdRevenueDelegate Protocol 92 | 93 | - (void)didPayRevenueForAd:(MAAd *)ad 94 | { 95 | [self logCallback: __PRETTY_FUNCTION__]; 96 | 97 | ADJAdRevenue *adjustAdRevenue = [[ADJAdRevenue alloc] initWithSource: @"applovin_max_sdk"]; 98 | [adjustAdRevenue setRevenue: ad.revenue currency: @"USD"]; 99 | [adjustAdRevenue setAdRevenueNetwork: ad.networkName]; 100 | [adjustAdRevenue setAdRevenueUnit: ad.adUnitIdentifier]; 101 | [adjustAdRevenue setAdRevenuePlacement: ad.placement]; 102 | 103 | [Adjust trackAdRevenue: adjustAdRevenue]; 104 | } 105 | 106 | @end 107 | -------------------------------------------------------------------------------- /MobileFuse/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 1.9.2.1 4 | * Removed requirement of the title asset for native banners and MRECs. 5 | 6 | ## 1.9.2.0 7 | * Certified with MobileFuse SDK 1.9.2. 8 | 9 | ## 1.9.1.0 10 | * Certified with MobileFuse SDK 1.9.1. 11 | * Removed deprecated code paths based on the minimum supported AppLovin MAX SDK version 13.0.0. 12 | * Updated minimum iOS version to 12.0. 13 | 14 | ## 1.9.0.0 15 | * Certified with MobileFuse SDK 1.9.0. 16 | 17 | ## 1.8.2.0 18 | * Certified with MobileFuse SDK 1.8.2. 19 | 20 | ## 1.8.1.0 21 | * Certified with MobileFuse SDK 1.8.1. 22 | * Removed redundant log output when initialization was already completed. 23 | 24 | ## 1.8.0.1 25 | * Remove passing in of consent string as it has been deprecated. 26 | 27 | ## 1.8.0.0 28 | * Certified with MobileFuse SDK 1.8.0. 29 | 30 | ## 1.7.6.1 31 | * Requires minimum AppLovin MAX SDK version be 13.0.0. 32 | * Removed COPPA support. 33 | * Remove deprecated native API usages. 34 | 35 | ## 1.7.6.0 36 | * Certified with MobileFuse SDK 1.7.6. 37 | 38 | ## 1.7.5.0 39 | * Certified with MobileFuse SDK 1.7.5. 40 | * Updated minimum Xcode requirement to 15.0. 41 | 42 | ## 1.7.4.0 43 | * Certified with MobileFuse SDK 1.7.4. 44 | * Replace deprecated API `MFAd.isAdReady` with new API `MFAd.isLoaded`. 45 | 46 | ## 1.7.3.0 47 | * Certified with MobileFuse SDK 1.7.3. 48 | 49 | ## 1.7.2.0 50 | * Certified with MobileFuse SDK 1.7.2. 51 | 52 | ## 1.7.1.0 53 | * Certified with MobileFuse SDK 1.7.1. 54 | 55 | ## 1.7.0.0 56 | * Certified with MobileFuse SDK 1.7.0. 57 | * Updated minimum iOS version to 11.0. 58 | 59 | ## 1.6.5.0 60 | * Certified with MobileFuse SDK 1.6.5. 61 | 62 | ## 1.6.4.0 63 | * Certified with MobileFuse SDK 1.6.4. 64 | 65 | ## 1.6.3.0 66 | * Certified with MobileFuse SDK 1.6.3. 67 | 68 | ## 1.6.2.0 69 | * Certified with MobileFuse SDK 1.6.2. 70 | 71 | ## 1.6.1.0 72 | * Certified with MobileFuse SDK 1.6.1. 73 | 74 | ## 1.6.0.0 75 | * Certified with MobileFuse SDK 1.6.0. 76 | * Initialize MobileFuse SDK using new API with initialization callbacks. 77 | * Updated deprecated method `getTokenWithRequest:` to new `getTokenWithRequest:withCallback:`. 78 | * Collect MobileFuse SDK version on the main thread to fix runtime warning. 79 | * Updated minimum Xcode requirement to 14.1. 80 | * Fixed potential memory leaks by clearing delegates in `destroy:` method. 81 | 82 | ## 1.5.2.0 83 | * Certified with MobileFuse SDK 1.5.2. 84 | 85 | ## 1.5.1.0 86 | * Certified with MobileFuse SDK 1.5.1. 87 | 88 | ## 1.5.0.0 89 | * Certified with MobileFuse SDK 1.5.0. 90 | 91 | ## 1.4.5.0 92 | * Certified with MobileFuse SDK 1.4.5. 93 | 94 | ## 1.4.4.0 95 | * Certified with MobileFuse SDK 1.4.4. 96 | 97 | ## 1.4.0.2 98 | * Enable native ads for Mediation Debugger. 99 | 100 | ## 1.4.0.1 101 | * Add support for interstitial, rewarded, native and native ad view ads. 102 | 103 | ## 1.4.0.0 104 | * Certified with MobileFuse SDK 1.4.0. 105 | * Disable bitcode, as Apple deprecated it in Xcode 14 (https://developer.apple.com/documentation/xcode-release-notes/xcode-14-release-notes). 106 | 107 | ## 1.3.1.0 108 | * Certified with MobileFuse SDK 1.3.1. 109 | 110 | ## 1.3.0.0 111 | * Initial commit. 112 | * Minimum AppLovin MAX SDK version 11.5.2. 113 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - ObjC/AppLovin MAX Demo App - ObjC/MAX/Banners/ALMAXFrameLayoutBannerAdViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXFrameLayoutBannerAdViewController.m 3 | // DemoApp-ObjC 4 | // 5 | // Created by Andrew Tian on 9/10/19. 6 | // Copyright © 2019 AppLovin Corporation. All rights reserved. 7 | // 8 | 9 | #import "ALMAXFrameLayoutBannerAdViewController.h" 10 | #import 11 | #import 12 | 13 | @interface ALMAXFrameLayoutBannerAdViewController() 14 | @property (nonatomic, strong) MAAdView *adView; 15 | @end 16 | 17 | @implementation ALMAXFrameLayoutBannerAdViewController 18 | 19 | #pragma mark - View Lifecycle 20 | 21 | - (void)viewDidLoad 22 | { 23 | [super viewDidLoad]; 24 | 25 | self.adView = [[MAAdView alloc] initWithAdUnitIdentifier: @"YOUR_AD_UNIT_ID"]; 26 | 27 | self.adView.delegate = self; 28 | self.adView.revenueDelegate = self; 29 | 30 | // Calculate dimensions 31 | CGFloat width = CGRectGetWidth(self.view.bounds); // Stretch to the width of the screen for banners to be fully functional 32 | CGFloat height = (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad) ? 90 : 50; // Banner height on iPhone and iPad is 50 and 90, respectively 33 | CGFloat x = 0; 34 | CGFloat y = 0; 35 | 36 | self.adView.frame = CGRectMake(x, y, width, height); 37 | 38 | // Set background or background color for banners to be fully functional 39 | self.adView.backgroundColor = UIColor.blackColor; 40 | 41 | [self.view addSubview: self.adView]; 42 | 43 | // Load the first ad 44 | [self.adView loadAd]; 45 | } 46 | 47 | #pragma mark - MAAdDelegate Protocol 48 | 49 | - (void)didLoadAd:(MAAd *)ad 50 | { 51 | [self logCallback: __PRETTY_FUNCTION__]; 52 | } 53 | 54 | - (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error 55 | { 56 | [self logCallback: __PRETTY_FUNCTION__]; 57 | } 58 | 59 | - (void)didDisplayAd:(MAAd *)ad 60 | { 61 | [self logCallback: __PRETTY_FUNCTION__]; 62 | } 63 | 64 | - (void)didHideAd:(MAAd *)ad 65 | { 66 | [self logCallback: __PRETTY_FUNCTION__]; 67 | } 68 | 69 | - (void)didClickAd:(MAAd *)ad 70 | { 71 | [self logCallback: __PRETTY_FUNCTION__]; 72 | } 73 | 74 | - (void)didFailToDisplayAd:(MAAd *)ad withError:(MAError *)error 75 | { 76 | [self logCallback: __PRETTY_FUNCTION__]; 77 | } 78 | 79 | #pragma mark - MAAdViewAdDelegate Protocol 80 | 81 | - (void)didExpandAd:(MAAd *)ad 82 | { 83 | [self logCallback: __PRETTY_FUNCTION__]; 84 | } 85 | 86 | - (void)didCollapseAd:(MAAd *)ad 87 | { 88 | [self logCallback: __PRETTY_FUNCTION__]; 89 | } 90 | 91 | #pragma mark - MAAdRevenueDelegate Protocol 92 | 93 | - (void)didPayRevenueForAd:(MAAd *)ad 94 | { 95 | [self logCallback: __PRETTY_FUNCTION__]; 96 | 97 | ADJAdRevenue *adjustAdRevenue = [[ADJAdRevenue alloc] initWithSource: @"applovin_max_sdk"]; 98 | [adjustAdRevenue setRevenue: ad.revenue currency: @"USD"]; 99 | [adjustAdRevenue setAdRevenueNetwork: ad.networkName]; 100 | [adjustAdRevenue setAdRevenueUnit: ad.adUnitIdentifier]; 101 | [adjustAdRevenue setAdRevenuePlacement: ad.placement]; 102 | 103 | [Adjust trackAdRevenue: adjustAdRevenue]; 104 | } 105 | 106 | @end 107 | -------------------------------------------------------------------------------- /AppLovin MAX Demo App - Swift/AppLovin MAX Demo App - Swift/MAX/Interstitials/ALMAXInterstitialAdViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ALMAXInterstitialAdViewController.swift 3 | // DemoApp-Swift 4 | // 5 | // Created by Andrew Tian on 9/20/19. 6 | // Copyright © 2019 AppLovin. All rights reserved. 7 | // 8 | 9 | import AdjustSdk 10 | import AppLovinSDK 11 | import UIKit 12 | 13 | class ALMAXInterstitialAdViewController: ALBaseAdViewController, MAAdViewAdDelegate, MAAdRevenueDelegate 14 | { 15 | private let interstitialAd = MAInterstitialAd(adUnitIdentifier: "YOUR_AD_UNIT_ID") 16 | private var retryAttempt = 0.0 17 | 18 | // MARK: View Lifecycle 19 | 20 | override func viewDidLoad() 21 | { 22 | super.viewDidLoad() 23 | 24 | interstitialAd.delegate = self 25 | interstitialAd.revenueDelegate = self 26 | 27 | // Load the first ad 28 | interstitialAd.load() 29 | } 30 | 31 | // MARK: IB Actions 32 | 33 | @IBAction func showAd() 34 | { 35 | interstitialAd.show() 36 | } 37 | 38 | // MARK: MAAdDelegate Protocol 39 | 40 | func didLoad(_ ad: MAAd) 41 | { 42 | // Interstitial ad is ready to be shown. '[self.interstitialAd isReady]' will now return 'YES' 43 | logCallback() 44 | 45 | // Reset retry attempt 46 | retryAttempt = 0 47 | } 48 | 49 | func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) 50 | { 51 | logCallback() 52 | 53 | // Interstitial ad failed to load. We recommend retrying with exponentially higher delays up to a maximum delay (in this case 64 seconds). 54 | 55 | retryAttempt += 1 56 | let delaySec = pow(2.0, min(6.0, retryAttempt)) 57 | 58 | DispatchQueue.main.asyncAfter(deadline: .now() + delaySec) { 59 | self.interstitialAd.load() 60 | } 61 | } 62 | 63 | func didDisplay(_ ad: MAAd) { logCallback() } 64 | 65 | func didClick(_ ad: MAAd) { logCallback() } 66 | 67 | func didExpand(_ ad: MAAd) { logCallback() } 68 | 69 | func didCollapse(_ ad: MAAd) { logCallback() } 70 | 71 | func didHide(_ ad: MAAd) 72 | { 73 | logCallback() 74 | 75 | // Interstitial ad is hidden. Pre-load the next ad 76 | interstitialAd.load() 77 | } 78 | 79 | func didFail(toDisplay ad: MAAd, withError error: MAError) 80 | { 81 | logCallback() 82 | 83 | // Interstitial ad failed to display. We recommend loading the next ad 84 | interstitialAd.load() 85 | } 86 | 87 | // MARK: MAAdRevenueDelegate Protocol 88 | 89 | func didPayRevenue(for ad: MAAd) 90 | { 91 | logCallback() 92 | 93 | let adjustAdRevenue = ADJAdRevenue(source: "applovin_max_sdk")! 94 | adjustAdRevenue.setRevenue(ad.revenue, currency: "USD") 95 | adjustAdRevenue.setAdRevenueNetwork(ad.networkName) 96 | adjustAdRevenue.setAdRevenueUnit(ad.adUnitIdentifier) 97 | if let placement = ad.placement 98 | { 99 | adjustAdRevenue.setAdRevenuePlacement(placement) 100 | } 101 | 102 | Adjust.trackAdRevenue(adjustAdRevenue) 103 | } 104 | } 105 | --------------------------------------------------------------------------------