Music_Player3/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_AppLovinManager.swift
2024-10-08 17:34:04 +08:00

874 lines
36 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// MP_AppLovinManager.swift
// relax.offline.mp3.music
//
// Created by Mr.Zhou on 2024/9/18.
//
import UIKit
import AppLovinSDK
///AppLovin
class MP_AppLovinManager: NSObject {
static let shared = MP_AppLovinManager()
///广
private var openAdStatus:Bool = MP_ADSimpleManager.shared.openAdStatus
///使广
private var internalAdStatus:Bool = MP_ADSimpleManager.shared.internalAdStatus
//AppLovinSDk
private var SDKKey:String {
return "1z4AGzagANHydAtmbNQmAcrt1O5_HtPpt4iNTNW5Bb0RQhaXVByUEQTq5cMcR0l9NnfDtuobQqhSQE0kfEWwAC"
}
///广(50)
private let expirationTime:TimeInterval = 3000
//广
private func wasAdexpirationTime(_ date:Date?) -> Bool {
guard let loadTime = date else { return false }
// Check if ad was loaded more than four hours ago.
return Date().timeIntervalSince(loadTime) < expirationTime
}
//MARK: - 广
///广
private var interstitialSwitch:Bool = false{
didSet{
DispatchQueue.main.async {
[weak self] in
MPSideA_MediaCenterManager.shared.isAdLate = self?.interstitialSwitch
}
}
}
///广
var interstitialDate:Date?
///广(40)
private var interstitialDuration:TimeInterval{
get{
if let times = UserDefaults.standard.object(forKey: "InterstitialDuration") as? TimeInterval {
return times
}else {
return 40
}
}
}
///
private var intermediaryDuration:TimeInterval{
get{
if let times = UserDefaults.standard.object(forKey: "IntermediaryDuration") as? TimeInterval {
return times
}else {
return 40
}
}
}
///
func setInterstitialSwitch(_ status:Bool) {
interstitialSwitch = status
}
///
func getInterstitialSwitch() -> Bool {
return interstitialSwitch
}
///
private var intermediaryOpenShowTime:Date?
///
private var intermediaryInterstitialShowTime:Date?
///广
private func retrieveIntermediaryInterstitial() -> Bool {
//
guard let date = intermediaryInterstitialShowTime else {return true}
return Date().timeIntervalSince(date) > intermediaryDuration
}
///广
private func retrieveIntermediaryOpen() -> Bool {
//
guard let date = intermediaryOpenShowTime else {return true}
return Date().timeIntervalSince(date) > intermediaryDuration
}
///广
private func isShowInterstitialADAvailable(_ date:Date) -> Bool {
return Date().timeIntervalSince(date) > interstitialDuration
}
override init() {
super.init()
reloadAppLovinIDs()
//广
completeOpenAdBlock = {
[weak self] in
guard let self = self, interstitialSwitch == true else {return}
//广
appOpenAd = nil
isShowingOpenAd = false
loadOpenAdTime = nil
//广
interstitialSwitch = false
//广
intermediaryOpenShowTime = Date()
//广
DispatchQueue.main.asyncAfter(deadline: .now() + 4) {
[weak self] in
self?.loadOpenAd{ status in
if status == true {
print("新的开屏广告加载成功")
}else {
print("开屏广告加载失败了")
}
}
}
}
//广
completeSearchInterstitialAdBlock = {
[weak self] in
guard let self = self, interstitialSwitch == true else {return}
//广
searchInterstitialAd = nil
isShowingSearchInterstitialAd = false
loadSearchInterstitialAdTime = nil
//广
interstitialSwitch = false
//广
intermediaryInterstitialShowTime = Date()
//广
DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
[weak self] in
self?.loadSearchInterstitialAd { status in
if status {
print("成功加载搜索插页广告")
}else {
print("搜索插页广告加载失败")
}
}
}
}
//广
completePlayInterstitialAdBlock = {
[weak self] in
guard let self = self, interstitialSwitch == true else {return}
//广
playInterstitialAd = nil
isShowingPlayInterstitialAd = false
loadPlayInterstitialAdTime = nil
//广
interstitialSwitch = false
//广
intermediaryInterstitialShowTime = Date()
//广
DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
[weak self] in
self?.loadPlayInterstitialAd { status in
if status {
print("成功加载播放插页广告")
}else {
print("播放插页广告加载失败")
}
}
}
}
//广
completeLibraryInterstitialAdBlock = {
[weak self] in
guard let self = self, interstitialSwitch == true else {return}
//广
libraryInterstitialAd = nil
isShowingLibraryInterstitialAd = false
loadLibraryInterstitialAdTime = nil
//广
interstitialSwitch = false
//广
intermediaryInterstitialShowTime = Date()
//广
DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
[weak self] in
self?.loadLibraryInterstitialAd { status in
if status {
print("成功加载曲库插页广告")
}else {
print("曲库插页广告加载失败")
}
}
}
}
}
///
func startConfig() {
//AppLovin
let initConfig = ALSdkInitializationConfiguration(sdkKey: SDKKey) { builder in
builder.mediationProvider = ALMediationProviderMAX
}
// //
// ALSdk.shared().settings.isMuted = true
ALSdk.shared().settings.userIdentifier = app_UUID
//AppLovin
ALSdk.shared().initialize(with: initConfig)
}
///广ID
func reloadAppLovinIDs() {
//广
if let data = UserDefaults.standard.object(forKey: "Max_OpenICEIDs") as? Data, let array = jsonforCoreAdModel(data) {
print("成功提取ID")
OpenIDs = array.sorted(by: {$0.level > $1.level})
}
if let data = UserDefaults.standard.object(forKey: "Max_SearchINSERTIDs") as? Data, let array = jsonforCoreAdModel(data) {
SearchINSERTIDs = array.sorted(by: {$0.level > $1.level})
}
if let data = UserDefaults.standard.object(forKey: "Max_PlayerINSERTIDs") as? Data, let array = jsonforCoreAdModel(data) {
PlayerINSERTIDs = array.sorted(by: {$0.level > $1.level})
}
if let data = UserDefaults.standard.object(forKey: "Max_LibraryNATIVEIDs") as? Data, let array = jsonforCoreAdModel(data) {
LibraryINSERTIDs = array.sorted(by: {$0.level > $1.level})
}
}
///广
func loadMoreAds(){
loadPlayInterstitialAd{status in
if status {
print("成功加载播放插页广告")
}else {
print("播放插页广告加载失败")
}
}
loadSearchInterstitialAd { status in
if status {
print("成功加载搜索插页广告")
}else {
print("搜索插页广告加载失败")
}
}
loadLibraryInterstitialAd { status in
if status {
print("成功加载曲库插页广告")
}else {
print("曲库插页广告加载失败")
}
}
}
//MARK: - 广
///广ID
private var OpenIDs:[MPPositive_AdItemModel] = []
///广
var appOpenAd:MAInterstitialAd?
///广
private var isLoadingOpenAd:Bool = false
///广
var isShowingOpenAd:Bool = false
//广
private var loadOpenAdTime:Date?
//广
private var loadStatuOpenAdBlock:((Bool) -> Void)?
//广
var completeOpenAdBlock:(() -> Void)?
//IDLevel0
private var openLevel:Int = 0
//广(10)
private var openAppDuration:TimeInterval{
get{
if let times = UserDefaults.standard.object(forKey: "OpenAppDuration") as? TimeInterval {
return times
}else {
return 10
}
}
}
//广
func setOpenAppDuration(_ duration:TimeInterval) {
UserDefaults.standard.set(duration, forKey: "OpenAppDuration")
}
//广
func getOpenAppDuration() -> TimeInterval {
return self.openAppDuration
}
///广
func loadOpenAd(_ level:Int = 0, completion: @escaping (Bool) -> Void) {
guard openAdStatus, internalAdStatus else {return}
// 广广
if isLoadingOpenAd || isOpenAdAvailable() {
// 广广
completion(false)
return
}
//id
guard OpenIDs.isEmpty == false else {
//
MP_AnalyticsManager.shared.max_lunch_showFailureAction("No IDs")
//
reloadAppLovinIDs()
completion(false)
return
}
guard level < (OpenIDs.count) else {
print("开屏广告组已经全部加载失败,停止继续加载")
MP_AnalyticsManager.shared.max_lunch_loadFailureAction("No Ads Fill")
completion(false)
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
[weak self] in
self?.loadOpenAd( completion: { status in
if status {
print("重新加载启动广告成功")
}else {
print("重新加载启动广告失败")
}
})
}
return
}
let item = OpenIDs[level]
openLevel = level
//
loadStatuOpenAdBlock = completion
//ID广
appOpenAd = MAInterstitialAd(adUnitIdentifier: item.identifier)
appOpenAd?.delegate = self
//广
appOpenAd?.load()
}
///广
func showOpenAdIfAvailable(_ completion:((_ T:MAInterstitialAd) -> Void)?) {
guard openAdStatus, internalAdStatus else {return}
// 广广广
guard !interstitialSwitch, !isShowingOpenAd, retrieveIntermediaryInterstitial() else { return }
// 广广
if !isOpenAdAvailable() {
loadOpenAd{ [weak self] success in
guard let self = self else { return }
if success {
self.showOpenAdIfAvailable(completion)
}
}
return
}
MP_AnalyticsManager.shared.max_lunch_chanceAction()
if let ad = appOpenAd, ad.isReady {
//
if let block = completion {
block(ad)
}else {
isShowingOpenAd = true
interstitialSwitch = true
DispatchQueue.main.async {
[weak self] in
guard let self = self else {return}
//
ad.show()
}
}
}else {
print("开屏广告展示失败")
MP_AnalyticsManager.shared.max_lunch_showFailureAction("Ad loading failed")
}
}
///广
func isOpenAdAvailable() -> Bool {
return (appOpenAd != nil) && wasAdexpirationTime(loadOpenAdTime)
}
//MARK: -
///广ID
private var SearchINSERTIDs:[MPPositive_AdItemModel] = []
///广
private var searchInterstitialAd:MAInterstitialAd?
///广
private var isLoadingSearchInterstitialAd:Bool = false
///广
var isShowingSearchInterstitialAd:Bool = false
///
private var loadSearchInterstitialAdTime:Date?
///广
var completeSearchInterstitialAdBlock:(() -> Void)?
//广
private var loadStatuSearchAdBlock:((Bool) -> Void)?
//IDLevel0
private var searchLevel:Int = 0
//广
func loadSearchInterstitialAd(_ level:Int = 0, completion: @escaping (Bool) -> Void) {
guard openAdStatus, internalAdStatus else {return}
if isLoadingSearchInterstitialAd || isSearchInterstitialAdAvailable() {
// 广广
completion(false)
return
}
guard SearchINSERTIDs.isEmpty == false else {
MP_AnalyticsManager.shared.max_search_showFailureAction("No IDs")
//
reloadAppLovinIDs()
completion(false)
return
}
guard level < (SearchINSERTIDs.count) else {
print("搜索插页广告组已经全部加载失败,停止继续加载")
MP_AnalyticsManager.shared.max_search_loadFailureAction("No Ads Fill")
DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
[weak self] in
self?.loadSearchInterstitialAd { status in
if status {
print("重新加载搜索插页广告")
}else {
print("加载搜索插页广告失败")
}
}
}
return
}
isLoadingSearchInterstitialAd = true
searchLevel = level
//
loadStatuSearchAdBlock = completion
let item = SearchINSERTIDs[level]
//ID广
searchInterstitialAd = MAInterstitialAd(adUnitIdentifier: item.identifier)
searchInterstitialAd?.delegate = self
//广
searchInterstitialAd?.load()
}
///广
func showSearchInterstitialAdIfAvailable(_ completion:((MAInterstitialAd) -> Void)?) {
guard openAdStatus, internalAdStatus else {return}
// 广广广
guard !interstitialSwitch, !isShowingSearchInterstitialAd, retrieveIntermediaryOpen() else { return }
//
if let date = interstitialDate {
if isShowInterstitialADAvailable(date) == false {
//
print("距上一次展示插页广告时长未超过要求,此次插页广告展示滞后")
return
}
}
// 广广
if !isSearchInterstitialAdAvailable() {
loadSearchInterstitialAd { [weak self] success in
guard let self = self else { return }
if success {
self.showSearchInterstitialAdIfAvailable(completion)
}
}
return
}
MP_AnalyticsManager.shared.max_search_chanceAction()
//广
if let ad = searchInterstitialAd, ad.isReady {
//
if let block = completion {
block(ad)
}else {
isShowingSearchInterstitialAd = true
interstitialSwitch = true
DispatchQueue.main.async {
[weak self] in
guard let self = self else {return}
//
ad.show()
}
}
}else {
MP_AnalyticsManager.shared.max_search_showFailureAction("Ad loading failed")
}
}
//广
func isSearchInterstitialAdAvailable() -> Bool {
return searchInterstitialAd != nil && wasAdexpirationTime(loadSearchInterstitialAdTime)
}
//MARK: - /广
///广ID
private var PlayerINSERTIDs:[MPPositive_AdItemModel] = []
///广
var playInterstitialAd:MAInterstitialAd?
///广
private var isLoadingPlayInterstitialAd:Bool = false
///广
var isShowingPlayInterstitialAd:Bool = false
///
private var loadPlayInterstitialAdTime:Date?
///广
var completePlayInterstitialAdBlock:(() -> Void)?
//广
private var loadStatuPlayAdBlock:((Bool) -> Void)?
//IDLevel0
private var playLevel:Int = 0
//广
func loadPlayInterstitialAd(_ level:Int = 0, completion: @escaping (Bool) -> Void) {
guard openAdStatus, internalAdStatus else {
completion(false)
return
}
// 广广
if isLoadingPlayInterstitialAd || isPlayInterstitialAdAvailable() {
// 广广
completion(false)
return
}
guard PlayerINSERTIDs.isEmpty == false else {
MP_AnalyticsManager.shared.max_play_showFailureAction("No IDs")
//
reloadAppLovinIDs()
completion(false)
return
}
guard level < (PlayerINSERTIDs.count) else {
print("播放插页广告组已经全部加载失败,停止继续加载")
MP_AnalyticsManager.shared.max_play_loadFailureAction("No Ads Fill")
DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
[weak self] in
self?.loadPlayInterstitialAd { status in
if status {
print("重新加载播放插页广告")
}else {
print("加载播放插页广告失败")
}
}
}
return
}
isLoadingPlayInterstitialAd = true
playLevel = level
//
loadStatuPlayAdBlock = completion
let item = PlayerINSERTIDs[level]
//ID广
playInterstitialAd = MAInterstitialAd(adUnitIdentifier: item.identifier)
playInterstitialAd?.delegate = self
//广
playInterstitialAd?.load()
}
///广
func showPlayInterstitialAdIfAvailable(_ completion:((MAInterstitialAd?) -> Void)?) {
guard openAdStatus, internalAdStatus else {
completion?(nil)
return
}
guard MP_NetWorkManager.shared.netWorkStatu == .reachable else {
completion?(nil)
return
}
// 广广广
guard !interstitialSwitch, !isShowingPlayInterstitialAd, retrieveIntermediaryOpen() else {
completion?(nil)
return
}
//
if let date = interstitialDate {
if isShowInterstitialADAvailable(date) == false {
//
print("距上一次展示插页广告时长未超过要求,此次插页广告展示滞后")
completion?(nil)
return
}
}
// 广广
if !isPlayInterstitialAdAvailable() {
loadPlayInterstitialAd{ [weak self] success in
guard let self = self else { return }
if success {
print("播放广告已加载")
}
}
completion?(nil)
return
}
MP_AnalyticsManager.shared.max_play_chanceACtion()
//广
if let ad = playInterstitialAd, ad.isReady {
//
if let block = completion {
block(ad)
}else {
isShowingPlayInterstitialAd = true
interstitialSwitch = true
DispatchQueue.main.async {
[weak self] in
guard let self = self else {return}
//
ad.show()
}
}
}else {
MP_AnalyticsManager.shared.max_play_showFailureAction("Ad loading failed")
completion?(nil)
}
}
//广
func isPlayInterstitialAdAvailable() -> Bool {
return playInterstitialAd != nil && wasAdexpirationTime(loadPlayInterstitialAdTime)
}
//MARK: - /广
///ID
private var LibraryINSERTIDs:[MPPositive_AdItemModel] = []
///广
private var libraryInterstitialAd:MAInterstitialAd?
///广
private var isLoadingLibraryInterstitialAd:Bool = false
///广
var isShowingLibraryInterstitialAd:Bool = false
///
private var loadLibraryInterstitialAdTime:Date?
///广
var completeLibraryInterstitialAdBlock:(() -> Void)?
//广
private var loadStatuLibraryAdBlock:((Bool) -> Void)?
//IDLevel0
private var libraryLevel:Int = 0
//广
func loadLibraryInterstitialAd(_ level:Int = 0, completion: @escaping (Bool) -> Void) {
guard openAdStatus, internalAdStatus else {
completion(false)
return
}
// 广广
if isLoadingLibraryInterstitialAd || isLibraryInterstitialAdAvailable() {
// 广广
completion(false)
return
}
guard LibraryINSERTIDs.isEmpty == false else {
MP_AnalyticsManager.shared.max_library_showFailureAction("No IDs")
//
reloadAppLovinIDs()
completion(false)
return
}
guard level < (LibraryINSERTIDs.count) else {
print("曲库插页广告组已经全部加载失败,停止继续加载")
MP_AnalyticsManager.shared.max_library_loadFailureAction("No Ads Fill")
DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
[weak self] in
self?.loadLibraryInterstitialAd { status in
if status {
print("重新加载曲库插页广告")
}else {
print("加载曲库插页广告失败")
}
}
}
return
}
isLoadingLibraryInterstitialAd = true
libraryLevel = level
//
loadStatuLibraryAdBlock = completion
let item = LibraryINSERTIDs[level]
//ID广
libraryInterstitialAd = MAInterstitialAd(adUnitIdentifier: item.identifier)
libraryInterstitialAd?.delegate = self
//广
libraryInterstitialAd?.load()
}
///广
func showLibraryInterstitialAdIfAvailable(_ completion:((MAInterstitialAd) -> Void)?) {
// 广广广
guard !interstitialSwitch, !isShowingLibraryInterstitialAd, retrieveIntermediaryOpen() else { return }
//
if let date = interstitialDate {
if isShowInterstitialADAvailable(date) == false {
//
print("距上一次展示插页广告时长未超过要求,此次插页广告展示滞后")
return
}
}
// 广广
if !isLibraryInterstitialAdAvailable() {
loadLibraryInterstitialAd { [weak self] success in
guard let self = self else { return }
if success {
self.showLibraryInterstitialAdIfAvailable(completion)
}
}
return
}
MP_AnalyticsManager.shared.max_library_chanceAction()
//广
if let ad = libraryInterstitialAd, ad.isReady {
//
if let block = completion {
block(ad)
}else {
isShowingPlayInterstitialAd = true
interstitialSwitch = true
DispatchQueue.main.async {
[weak self] in
guard let self = self else {return}
//
ad.show()
}
}
}else {
MP_AnalyticsManager.shared.max_library_showFailureAction("Ad loading failed")
}
}
//广
func isLibraryInterstitialAdAvailable() -> Bool {
return libraryInterstitialAd != nil && wasAdexpirationTime(loadLibraryInterstitialAdTime)
}
}
//MARK: - 广
extension MP_AppLovinManager: MAAdDelegate {
//广
func didLoad(_ ad: MAAd) {
let adUnitIdentifier = ad.adUnitIdentifier
//广
if adUnitIdentifier == appOpenAd?.adUnitIdentifier {
//广
isLoadingOpenAd = false
//广
loadOpenAdTime = Date()
//广
if let block = loadStatuOpenAdBlock {
block(true)
}
}else if adUnitIdentifier == searchInterstitialAd?.adUnitIdentifier {
//广
isLoadingSearchInterstitialAd = false
//广
loadSearchInterstitialAdTime = Date()
//广
if let block = loadStatuSearchAdBlock {
block(true)
}
}else if adUnitIdentifier == playInterstitialAd?.adUnitIdentifier {
//广
isLoadingPlayInterstitialAd = false
//广
loadPlayInterstitialAdTime = Date()
//广
if let block = loadStatuPlayAdBlock {
block(true)
}
}else if adUnitIdentifier == libraryInterstitialAd?.adUnitIdentifier {
//广
isLoadingLibraryInterstitialAd = false
//广
loadLibraryInterstitialAdTime = Date()
//广
if let block = loadStatuLibraryAdBlock {
block(true)
}
}
}
//广
func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) {
//广
if adUnitIdentifier == appOpenAd?.adUnitIdentifier {
//广
isLoadingOpenAd = false
//广广
appOpenAd = nil
MP_AnalyticsManager.shared.max_lunch_loadFailureAction(error.message)
if let block = loadStatuOpenAdBlock {
//广
loadOpenAd(openLevel + 1, completion: block)
}
}else if adUnitIdentifier == searchInterstitialAd?.adUnitIdentifier {
//广
isLoadingSearchInterstitialAd = false
searchInterstitialAd = nil
MP_AnalyticsManager.shared.max_search_loadFailureAction(error.message)
if let block = loadStatuSearchAdBlock {
loadSearchInterstitialAd(searchLevel + 1, completion: block)
}
}else if adUnitIdentifier == playInterstitialAd?.adUnitIdentifier {
//广
isLoadingPlayInterstitialAd = false
playInterstitialAd = nil
MP_AnalyticsManager.shared.max_play_loadFailureAction(error.message)
if let block = loadStatuPlayAdBlock {
loadPlayInterstitialAd(playLevel + 1, completion: block)
}
}else if adUnitIdentifier == libraryInterstitialAd?.adUnitIdentifier {
//广
isLoadingLibraryInterstitialAd = false
libraryInterstitialAd = nil
MP_AnalyticsManager.shared.max_library_loadFailureAction(error.message)
if let block = loadStatuLibraryAdBlock {
loadLibraryInterstitialAd(libraryLevel + 1, completion: block)
}
}
}
//广
func didDisplay(_ ad: MAAd) {
let adUnitIdentifier = ad.adUnitIdentifier
//广
if adUnitIdentifier == appOpenAd?.adUnitIdentifier {
//广
print("当前展示的广告是开屏广告广告ID--\(ad.adUnitIdentifier)")
//广
}else if adUnitIdentifier == searchInterstitialAd?.adUnitIdentifier {
//广
print("当前展示的广告是搜索插页广告广告ID--\(ad.adUnitIdentifier)")
//广
}else if adUnitIdentifier == playInterstitialAd?.adUnitIdentifier {
//广
print("当前展示的广告是播放插页广告广告ID--\(ad.adUnitIdentifier)")
}else if adUnitIdentifier == libraryInterstitialAd?.adUnitIdentifier {
//广
print("当前展示的广告是曲库插页广告广告ID--\(ad.adUnitIdentifier)")
}
}
//广
func didHide(_ ad: MAAd) {
let adUnitIdentifier = ad.adUnitIdentifier
//广
interstitialDate = Date()
if adUnitIdentifier == appOpenAd?.adUnitIdentifier {
print("当前消失的广告是开屏广告广告ID--\(ad.adUnitIdentifier)")
if let block = completeOpenAdBlock {
block()
}
}else if adUnitIdentifier == searchInterstitialAd?.adUnitIdentifier {
//广
print("当前消失的广告是搜索插页广告广告ID--\(ad.adUnitIdentifier)")
if let block = completeSearchInterstitialAdBlock {
block()
}
}else if adUnitIdentifier == playInterstitialAd?.adUnitIdentifier {
//广
print("当前消失的广告是播放插页广告广告ID--\(ad.adUnitIdentifier)")
if let block = completePlayInterstitialAdBlock {
block()
}
}else if adUnitIdentifier == libraryInterstitialAd?.adUnitIdentifier {
//广
print("当前消失的广告是曲库插页广告广告ID--\(ad.adUnitIdentifier)")
if let block = completeLibraryInterstitialAdBlock {
block()
}
}
}
//广
func didClick(_ ad: MAAd) {
}
//广
func didFail(toDisplay ad: MAAd, withError error: MAError) {
let adUnitIdentifier = ad.adUnitIdentifier
//广
interstitialDate = Date()
if adUnitIdentifier == appOpenAd?.adUnitIdentifier {
print("开屏广告展示时出错广告ID--\(ad.adUnitIdentifier),具体错误原因:\(error.message)")
MP_AnalyticsManager.shared.max_lunch_showFailureAction(error.message)
if let block = completeOpenAdBlock {
block()
}
}else if adUnitIdentifier == searchInterstitialAd?.adUnitIdentifier {
//广
print("搜索插页广告展示时出错广告ID--\(ad.adUnitIdentifier),具体错误原因:\(error.message)")
MP_AnalyticsManager.shared.max_search_showFailureAction(error.message)
if let block = completeSearchInterstitialAdBlock {
block()
}
}else if adUnitIdentifier == playInterstitialAd?.adUnitIdentifier {
//广
print("播放插页广告展示时出错广告ID--\(ad.adUnitIdentifier),具体错误原因:\(error.message)")
MP_AnalyticsManager.shared.max_play_showFailureAction(error.message)
if let block = completePlayInterstitialAdBlock {
block()
}
}else if adUnitIdentifier == libraryInterstitialAd?.adUnitIdentifier {
//广
print("曲库插页广告展示时出错广告ID--\(ad.adUnitIdentifier),具体错误原因:\(error.message)")
MP_AnalyticsManager.shared.max_library_showFailureAction(error.message)
if let block = completeLibraryInterstitialAdBlock {
block()
}
}
}
}