diff --git a/Veloria/AppDelegate/AppDelegate.swift b/Veloria/AppDelegate/AppDelegate.swift index e21db9d..7725595 100644 --- a/Veloria/AppDelegate/AppDelegate.swift +++ b/Veloria/AppDelegate/AppDelegate.swift @@ -24,7 +24,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { self.registThirdparty(application, didFinishLaunchingWithOptions: launchOptions) - self.requestAPNS() +// self.requestAPNS() return true diff --git a/Veloria/AppDelegate/SceneDelegate+APNS.swift b/Veloria/AppDelegate/SceneDelegate+APNS.swift index c1d72e0..be2d059 100644 --- a/Veloria/AppDelegate/SceneDelegate+APNS.swift +++ b/Veloria/AppDelegate/SceneDelegate+APNS.swift @@ -12,8 +12,13 @@ import FirebaseCore extension AppDelegate { ///是否展示过通知提示 static var haveBeenShownAPNS = false + ///是否请求过通知权限 + static var isRequestApnsAuthorization = false func requestAPNS() { + guard !Self.isRequestApnsAuthorization else { return } + Self.isRequestApnsAuthorization = true + FirebaseApp.configure() Messaging.messaging().delegate = self diff --git a/Veloria/AppDelegate/SceneDelegate.swift b/Veloria/AppDelegate/SceneDelegate.swift index 0dd5307..3ff94ed 100644 --- a/Veloria/AppDelegate/SceneDelegate.swift +++ b/Veloria/AppDelegate/SceneDelegate.swift @@ -128,11 +128,13 @@ extension SceneDelegate { } window?.rootViewController = guideVc window?.makeKeyAndVisible() + VPAppTool.appDelegate?.requestAPNS() } else if !self.isOpenApp, hasOpenApp == true, VPNetworkReachabilityManager.manager.isReachable == true, VPLoginManager.manager.userInfo?.user_level == .ad { let vc = VPAppOpenAdViewController() vc.didEndBlock = { [weak self] in self?.setTabBarController() + VPAppTool.appDelegate?.requestAPNS() self?.vp_retryHandleOpenAppMessage() } window?.rootViewController = vc @@ -140,6 +142,7 @@ extension SceneDelegate { } else { setTabBarController() + VPAppTool.appDelegate?.requestAPNS() } } diff --git a/Veloria/Base/Networking/API/VPAdAPI.swift b/Veloria/Base/Networking/API/VPAdAPI.swift index 0707914..21dcfc5 100644 --- a/Veloria/Base/Networking/API/VPAdAPI.swift +++ b/Veloria/Base/Networking/API/VPAdAPI.swift @@ -16,9 +16,7 @@ class VPAdAPI { VPNetwork.request(parameters: param) { (response: VPNetworkResponse) in if response.code != VPNetworkCodeSucceed || response.data?.ad?.platform_key == nil { - let adInfo = VPAdInfo() - adInfo.platform_key = .google - adInfo.ads_id = VPAdManager.google_rewardedAdUnitID + let adInfo = VPAdInfo.createNormalAdInfo() completer?(adInfo) } else { completer?(response.data?.ad) diff --git a/Veloria/Libs/AdManager/Rewarded/VPRewardedAdManager.swift b/Veloria/Libs/AdManager/Rewarded/VPRewardedAdManager.swift index 777081d..8eb35cd 100644 --- a/Veloria/Libs/AdManager/Rewarded/VPRewardedAdManager.swift +++ b/Veloria/Libs/AdManager/Rewarded/VPRewardedAdManager.swift @@ -100,13 +100,8 @@ class VPRewardedAdManager: NSObject { self.isLoadingAd = true - VPAdAPI.requestShowAdInfo { [weak self] adInfo in + self.getAdInfo { [weak self] adInfo in guard let self = self else { return } - guard let adInfo = adInfo else { - self.isLoadingAd = false - return - } - self.adInfo = adInfo switch adInfo.platform_key { case .google: @@ -124,6 +119,7 @@ class VPRewardedAdManager: NSObject { break } } + } func showAd(delegate: VPRewardedAdManagerDelegate? = nil) { @@ -146,7 +142,6 @@ class VPRewardedAdManager: NSObject { private func clean() { self.rewardedAd = nil - self.adInfo = nil self.statScene = nil self.videoInfo = nil self.delegate = nil @@ -271,6 +266,27 @@ extension VPRewardedAdManager { self.requestStatAd(type: "Interrupt", seconds: 0, errorMsg: nil) } + + + private func getAdInfo(completer: ((_ adInfo: VPAdInfo) -> Void)?) { + + if let adInfo = self.adInfo { + completer?(adInfo) + } + VPAdAPI.requestShowAdInfo { [weak self] adInfo in + guard let self = self else { return } + + if let adInfo = adInfo { + self.adInfo = adInfo + completer?(adInfo) + } else { + let adInfo = VPAdInfo.createNormalAdInfo() + self.adInfo = adInfo + completer?(adInfo) + } + + } + } } diff --git a/Veloria/Libs/AdManager/VPAdInfo.swift b/Veloria/Libs/AdManager/VPAdInfo.swift index 2441df1..c8094f9 100644 --- a/Veloria/Libs/AdManager/VPAdInfo.swift +++ b/Veloria/Libs/AdManager/VPAdInfo.swift @@ -26,4 +26,12 @@ class VPAdInfo: VPModel, SmartCodable { var status: String? var platform_key: VPAdPlatformKey? + + static func createNormalAdInfo() -> VPAdInfo { + let adInfo = VPAdInfo() + adInfo.platform_key = .applovin + adInfo.ads_id = VPAdManager.applovin_rewardedAdUnitID + return adInfo + } + } diff --git a/Veloria/Libs/AdManager/VPAdManager.swift b/Veloria/Libs/AdManager/VPAdManager.swift index 2ab0b37..fa124c7 100644 --- a/Veloria/Libs/AdManager/VPAdManager.swift +++ b/Veloria/Libs/AdManager/VPAdManager.swift @@ -82,6 +82,11 @@ extension VPAdManager { #endif } + ///激励广告的单元ID + static var applovin_rewardedAdUnitID: String { + return "39bf981e27728eae" + } + ///开屏广告的单元ID static var applovin_appOpenAdUnitID: String { return "d587df0fd75ff03b"