- Fixed loading indicator when language ban shown
- Updated ADs api, Changed the whole response. - Made changes on webseries for local ads and google ads, improvised the logic. - Added logic on theme 2 to show google ad - Karaoke updated for google ads and normal ads. - Audio Books updated for google ads and normal ads. - FM updated for google ads. - Karaoke Player updated for google ads. - Games WebView updated for google ads. - Games Details Interstitial AD updated for google ads. - Games List updated for google and local ads.
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
520CE6AF2C74999200974228 /* AppUpdateDM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520CE6AE2C74999200974228 /* AppUpdateDM.swift */; };
|
||||
520CE6B12C74BB9D00974228 /* AppUpdateVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 520CE6B02C74BB9D00974228 /* AppUpdateVC.swift */; };
|
||||
5219C2C22C086D9C00A1DF4D /* DataTypeConversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5219C2C12C086D9B00A1DF4D /* DataTypeConversion.swift */; };
|
||||
521E5A9D2CA1A5C800AEF131 /* GoogleInterstistialADSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 521E5A9C2CA1A5BE00AEF131 /* GoogleInterstistialADSetup.swift */; };
|
||||
522242662BFC74380085C632 /* MyListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242632BFC74380085C632 /* MyListVC.swift */; };
|
||||
522242682BFC74380085C632 /* TabBarVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242652BFC74380085C632 /* TabBarVC.swift */; };
|
||||
5222426A2BFC7AFC0085C632 /* SideMenuVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242692BFC7AFC0085C632 /* SideMenuVC.swift */; };
|
||||
@@ -424,6 +425,7 @@
|
||||
520CE6AE2C74999200974228 /* AppUpdateDM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppUpdateDM.swift; sourceTree = "<group>"; };
|
||||
520CE6B02C74BB9D00974228 /* AppUpdateVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppUpdateVC.swift; sourceTree = "<group>"; };
|
||||
5219C2C12C086D9B00A1DF4D /* DataTypeConversion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataTypeConversion.swift; sourceTree = "<group>"; };
|
||||
521E5A9C2CA1A5BE00AEF131 /* GoogleInterstistialADSetup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GoogleInterstistialADSetup.swift; sourceTree = "<group>"; };
|
||||
522242632BFC74380085C632 /* MyListVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyListVC.swift; sourceTree = "<group>"; };
|
||||
522242652BFC74380085C632 /* TabBarVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabBarVC.swift; sourceTree = "<group>"; };
|
||||
522242692BFC7AFC0085C632 /* SideMenuVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideMenuVC.swift; sourceTree = "<group>"; };
|
||||
@@ -1714,6 +1716,7 @@
|
||||
52FDBA792BFF26F9009D7AC7 /* AuthFunc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
521E5A9C2CA1A5BE00AEF131 /* GoogleInterstistialADSetup.swift */,
|
||||
9C27E1622BDB6F1900EC1DA9 /* AuthFunc.swift */,
|
||||
525327D82BFCDDF700F64283 /* AuthFuncStartupSoundHandling.swift */,
|
||||
52FDBA7A2BFF2712009D7AC7 /* AuthFuncTimeHandling.swift */,
|
||||
@@ -2533,6 +2536,7 @@
|
||||
525861D42C4FCCB500C33C79 /* CartPaymentOptionsVM.swift in Sources */,
|
||||
52A3F6AF2BECC0690000BB0B /* LinkedChildVM.swift in Sources */,
|
||||
9C85A9EC2C5CD5CD0031C365 /* MyListDataTemp.swift in Sources */,
|
||||
521E5A9D2CA1A5C800AEF131 /* GoogleInterstistialADSetup.swift in Sources */,
|
||||
52A6DCB02C4E621800F63C51 /* BadgedBarButtonItem.swift in Sources */,
|
||||
52C8EC7D2C3536E5002DC35C /* ContinueAudioCell.swift in Sources */,
|
||||
525954252BE8F01600191286 /* ValueWrapper.swift in Sources */,
|
||||
|
||||
@@ -76,7 +76,7 @@ class AudioBookHomeVC: UIViewController {
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let audioBooksAd = adsData.result?.filter({$0.forPage == AdsEnum.audioBooks.rawValue}).first, let adID = audioBooksAd.id{
|
||||
if let audioBooksAd = adsData.result?.filter({$0.slug == AdsEnum.audioBooks.rawValue}).first, let adID = audioBooksAd.advertisement?.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,impressions: 1)
|
||||
}
|
||||
}
|
||||
@@ -99,7 +99,7 @@ class AudioBookHomeVC: UIViewController {
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let audioBooksAd = adsData.result?.filter({$0.forPage == AdsEnum.audioBooks.rawValue}).first, let adLink = audioBooksAd.adLink, let adID = audioBooksAd.id{
|
||||
if let audioBooksAd = adsData.result?.filter({$0.slug == AdsEnum.audioBooks.rawValue}).first, let adLink = audioBooksAd.advertisement?.adLink, let adID = audioBooksAd.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID,clicks: 1)
|
||||
if let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
UIApplication.shared.open(url)
|
||||
@@ -221,7 +221,7 @@ extension AudioBookHomeVC : TableViewSRC{
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData, adsData.result?.filter({$0.forPage == AdsEnum.audioBooks.rawValue}).first != nil{
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let audioBooksAd = adsData.result?.filter({$0.slug == AdsEnum.audioBooks.rawValue}).first, (audioBooksAd.advertisement != nil || audioBooksAd.googleAd != nil){
|
||||
// check if ads data contains ad for webseries
|
||||
}else{
|
||||
/*
|
||||
@@ -274,7 +274,7 @@ extension AudioBookHomeVC : CollectionViewSRC{
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData, adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first != nil{
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let audioBooksAd = adsData.result?.filter({$0.slug == AdsEnum.audioBooks.rawValue}).first, (audioBooksAd.advertisement != nil || audioBooksAd.googleAd != nil){
|
||||
// check if ads data contains ad for webseries
|
||||
}else{
|
||||
/*
|
||||
|
||||
@@ -38,24 +38,17 @@ class AudioBookHomeVM{
|
||||
maxHeaderHeight = UIScreen.main.bounds.width * 0.55
|
||||
vc.headerHeight.constant = maxHeaderHeight
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
checkAds()
|
||||
})
|
||||
checkAds()
|
||||
}
|
||||
|
||||
func checkAds(){
|
||||
|
||||
/*
|
||||
This is test ad.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let audioBooksAd = adsData.result?.filter({$0.forPage == AdsEnum.audioBooks.rawValue}).first{
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let audioBooksAd = adsData.result?.filter({$0.slug == AdsEnum.audioBooks.rawValue}).first{
|
||||
// check if ads data contains ad for webseries
|
||||
if let bannerImage = audioBooksAd.bannerImage, let buttonImage = audioBooksAd.buttonImage{
|
||||
if let bannerImage = audioBooksAd.advertisement?.bannerImage, let buttonImage = audioBooksAd.advertisement?.buttonImage{
|
||||
vc.headerImage.imageURL(bannerImage, color: .white)
|
||||
vc.headerBtn.setTitle("", for: .normal)
|
||||
vc.headerTitleLabel.text = ""
|
||||
@@ -67,14 +60,17 @@ class AudioBookHomeVM{
|
||||
if let adID = audioBooksAd.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,clicks: 1)
|
||||
}
|
||||
if let adLink = audioBooksAd.adLink ,let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
if let adLink = audioBooksAd.advertisement?.adLink ,let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
UIApplication.shared.open(url)
|
||||
}
|
||||
}
|
||||
}else if audioBooksAd.googleAd != nil{
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: headerBannerView, in:vc.headerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: headerBannerBottomView, in: vc.listenView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc, height: 8, width: 15)
|
||||
})
|
||||
}
|
||||
}else{
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: headerBannerView, in:vc.headerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: headerBannerBottomView, in: vc.listenView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc, height: 8, width: 15)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,30 +189,39 @@ class AudioBookHomeVM{
|
||||
self.vc.tableHeight.constant = self.vc.audioListingTableView.contentSize.height + 100
|
||||
self.vc.audioListingTableView.layoutIfNeeded()
|
||||
self.vc.tableHeight.constant = self.vc.audioListingTableView.contentSize.height
|
||||
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let audioBooksAd = adsData.result?.filter({$0.forPage == AdsEnum.audioBooks.rawValue}).first, let bannerImage = audioBooksAd.bannerImage, let buttonImage = audioBooksAd.buttonImage{
|
||||
vc.headerImage.imageURL(bannerImage, color: .white)
|
||||
vc.headerBtn.setTitle("", for: .normal)
|
||||
vc.headerTitleLabel.text = ""
|
||||
vc.headerTitleHeight.constant = 10
|
||||
vc.headerBtn.backgroundColor = .clear
|
||||
vc.headerBtn.sd_setBackgroundImage(with: URL(string:buttonImage), for: .normal)
|
||||
if !isBtnClick{ // only load first time.
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let audioBooksAd = adsData.result?.filter({$0.slug == AdsEnum.audioBooks.rawValue}).first, (audioBooksAd.advertisement != nil || audioBooksAd.googleAd != nil){
|
||||
// this means ads are there
|
||||
}else{
|
||||
if !isBtnClick{
|
||||
self.headerData = self.audioListData.first
|
||||
self.setHeaderData()
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if !isBtnClick{
|
||||
self.headerData = self.audioListData.first
|
||||
self.headerData = data.first
|
||||
self.setHeaderData()
|
||||
}
|
||||
}
|
||||
// if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// // check if ads data contains ad for webseries
|
||||
// if let audioBooksAd = adsData.result?.filter({$0.slug == AdsEnum.audioBooks.rawValue}).first, let bannerImage = audioBooksAd.advertisement?.bannerImage, let buttonImage = audioBooksAd.advertisement?.buttonImage{
|
||||
// vc.headerImage.imageURL(bannerImage, color: .white)
|
||||
// vc.headerBtn.setTitle("", for: .normal)
|
||||
// vc.headerTitleLabel.text = ""
|
||||
// vc.headerTitleHeight.constant = 10
|
||||
// vc.headerBtn.backgroundColor = .clear
|
||||
// vc.headerBtn.sd_setBackgroundImage(with: URL(string:buttonImage), for: .normal)
|
||||
// }else{
|
||||
// if !isBtnClick{
|
||||
// self.headerData = self.audioListData.first
|
||||
// self.setHeaderData()
|
||||
// }
|
||||
// }
|
||||
// }else{
|
||||
// if !isBtnClick{
|
||||
// self.headerData = self.audioListData.first
|
||||
// self.setHeaderData()
|
||||
// }
|
||||
// }
|
||||
|
||||
self.stopShimmer()
|
||||
|
||||
|
||||
@@ -56,7 +56,9 @@ class AppUpdateVC: UIViewController {
|
||||
getUserData()
|
||||
}else{
|
||||
//check if the static url data is fetched
|
||||
UIApplication.setRootView(LoginNavVC.instantiate(from: .AuthenticationSB))
|
||||
// UIApplication.setRootView(LoginNavVC.instantiate(from: .AuthenticationSB))
|
||||
K.GVar.skippedUpdate = true
|
||||
UIApplication.setRootView(MainNavController.instantiate(from: .Main))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,5 +41,10 @@ extension K{
|
||||
*/
|
||||
static var adTimeStamp : Date? = nil
|
||||
|
||||
/*
|
||||
User Skipped update
|
||||
*/
|
||||
|
||||
static var skippedUpdate : Bool? = nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,16 +37,15 @@ class GamesDetailVC: UIViewController {
|
||||
var btnTapped : btnTappedBlock?
|
||||
var reloadType : FavCellCLick?
|
||||
|
||||
private var interstitial: GADInterstitialAd?
|
||||
private var rewardedAd: GADRewardedAd?
|
||||
// private var interstitial: GADInterstitialAd?
|
||||
// private var rewardedAd: GADRewardedAd?
|
||||
|
||||
let reachability = NetworkReachabilityManager()
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
initView()
|
||||
tapHandler()
|
||||
setupAds()
|
||||
GoogleInterstistialADSetup.shareInstance.interstitial?.fullScreenContentDelegate = self
|
||||
}
|
||||
|
||||
@objc func handleTap(_ gesture: UITapGestureRecognizer) {
|
||||
@@ -238,6 +237,19 @@ class GamesDetailVC: UIViewController {
|
||||
PersistentStorage.shared.addGamesCount(postID: postID)
|
||||
}
|
||||
|
||||
//If Google Interstitial is enable then only check for time and all, otherwise directly load GamesWebView
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let gamesInterstitialAd = adsData.result?.filter({$0.slug == AdsEnum.gameInterestial.rawValue}).first, gamesInterstitialAd.googleAd != nil{
|
||||
/*
|
||||
Show google ads with dispatch queue.
|
||||
*/
|
||||
checkAds()
|
||||
}else{
|
||||
K.GVar.adTimeStamp = nil
|
||||
navigateToGamesWebView()
|
||||
}
|
||||
}
|
||||
|
||||
func checkAds(){
|
||||
/*
|
||||
check ad timestamp from gvar
|
||||
show ads if the saved timestamp time and current time has diffrenece of 30 minutes
|
||||
@@ -256,7 +268,7 @@ class GamesDetailVC: UIViewController {
|
||||
//show ads & reset timestamp to current time
|
||||
K.GVar.adTimeStamp = Date()
|
||||
|
||||
guard let interstitial = interstitial else {
|
||||
guard let interstitial = GoogleInterstistialADSetup.shareInstance.interstitial else {
|
||||
// if ad doesnt loads make sure to make adtimestamp nil, and let user navigate to games
|
||||
K.GVar.adTimeStamp = nil
|
||||
navigateToGamesWebView()
|
||||
@@ -272,7 +284,7 @@ class GamesDetailVC: UIViewController {
|
||||
*/
|
||||
K.GVar.adTimeStamp = Date()
|
||||
|
||||
guard let interstitial = interstitial else {
|
||||
guard let interstitial = GoogleInterstistialADSetup.shareInstance.interstitial else {
|
||||
// if ad doesnt loads make sure to make adtimestamp nil, and let user navigate to games
|
||||
K.GVar.adTimeStamp = nil
|
||||
navigateToGamesWebView()
|
||||
@@ -283,43 +295,26 @@ class GamesDetailVC: UIViewController {
|
||||
interstitial.present(fromRootViewController: nil)
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private func setupAds(){
|
||||
GADInterstitialAd.load(withAdUnitID: K.GoogleAdIDs.gamesDetailsInterStial, request: GADRequest()) { [weak self] ad, error in
|
||||
if let error = error {
|
||||
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
|
||||
|
||||
// If internet is reachable, try to load the ad again
|
||||
if self?.reachability?.isReachable == true {
|
||||
self?.setupAds()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Successfully loaded the interstitial ad
|
||||
self?.interstitial = ad
|
||||
self?.interstitial?.fullScreenContentDelegate = self
|
||||
print("Interstitial ad loaded successfully.")
|
||||
}
|
||||
// Task {
|
||||
// do {
|
||||
// interstitial = try await GADInterstitialAd.load(
|
||||
// withAdUnitID: K.GoogleAdIDs.gamesDetailsInterStial, request: GADRequest())
|
||||
//
|
||||
// GADInterstitialAd.load(withAdUnitID: K.GoogleAdIDs.gamesDetailsInterStial, request: GADRequest()) { ad, error in
|
||||
//
|
||||
// }
|
||||
// interstitial?.fullScreenContentDelegate = self
|
||||
// } catch {
|
||||
// if reachability?.isReachable == true{
|
||||
// setupAds()
|
||||
// }
|
||||
// private func setupAds(){
|
||||
// GADInterstitialAd.load(withAdUnitID: K.GoogleAdIDs.gamesDetailsInterStial, request: GADRequest()) { [weak self] ad, error in
|
||||
// if let error = error {
|
||||
// print("Failed to load interstitial ad with error: \(error.localizedDescription)")
|
||||
//
|
||||
// // If internet is reachable, try to load the ad again
|
||||
// if self?.reachability?.isReachable == true {
|
||||
// self?.setupAds()
|
||||
// }
|
||||
// return
|
||||
// }
|
||||
//
|
||||
// // Successfully loaded the interstitial ad
|
||||
// self?.interstitial = ad
|
||||
// self?.interstitial?.fullScreenContentDelegate = self
|
||||
// print("Interstitial ad loaded successfully.")
|
||||
// }
|
||||
}
|
||||
// }
|
||||
|
||||
private func navigateToGamesWebView(){
|
||||
let sb = UIStoryboard(name: K.StoryBoard.Games, bundle: nil)
|
||||
@@ -361,6 +356,6 @@ extension GamesDetailVC : GADFullScreenContentDelegate{
|
||||
print("Ad did dismiss full screen content.")
|
||||
self.navigateToGamesWebView()
|
||||
//setup ads again and wait for the timestamp 30 minutes
|
||||
self.setupAds()
|
||||
GoogleInterstistialADSetup.shareInstance.setupGoogleIntersitialAD()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ class GamesListVC: UIViewController {
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let gamesAd = adsData.result?.filter({$0.forPage == AdsEnum.games.rawValue}).first, let adID = gamesAd.id{
|
||||
if let gamesAd = adsData.result?.filter({$0.slug == AdsEnum.games.rawValue}).first, let adID = gamesAd.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,impressions: 1)
|
||||
}
|
||||
}
|
||||
@@ -86,7 +86,7 @@ class GamesListVC: UIViewController {
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let gamesAd = adsData.result?.filter({$0.forPage == AdsEnum.games.rawValue}).first, let adLink = gamesAd.adLink, let adID = gamesAd.id{
|
||||
if let gamesAd = adsData.result?.filter({$0.slug == AdsEnum.games.rawValue}).first, let adLink = gamesAd.advertisement?.adLink, let adID = gamesAd.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID,clicks: 1)
|
||||
if let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
UIApplication.shared.open(url)
|
||||
@@ -163,7 +163,7 @@ extension GamesListVC : TableViewSRC{
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData, adsData.result?.filter({$0.forPage == AdsEnum.games.rawValue}).first != nil{
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let gamesAd = adsData.result?.filter({$0.slug == AdsEnum.games.rawValue}).first, (gamesAd.advertisement != nil || gamesAd.googleAd != nil){
|
||||
// check if ads data contains ad for webseries
|
||||
}else{
|
||||
vm.setHeaderData()
|
||||
@@ -190,6 +190,7 @@ extension GamesListVC : TableViewSRC{
|
||||
extension GamesListVC : ReloadSeriesFavLike{
|
||||
|
||||
func updateRows(index: Int, type: FavCellCLick, isFav: Bool?, isLike: Bool?, id: Int?) {
|
||||
|
||||
if let isFav{
|
||||
switch isFav{
|
||||
case true:
|
||||
|
||||
@@ -128,10 +128,16 @@ class GamesWebViewVC: UIViewController, WKNavigationDelegate,UIGestureRecognizer
|
||||
// MARK: - SetupAds
|
||||
|
||||
private func showAds(){
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: {[weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.bottomBannerView, in: adView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self)
|
||||
})
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let gamesWebViewAd = adsData.result?.filter({$0.slug == AdsEnum.gameWebView.rawValue}).first, gamesWebViewAd.googleAd != nil{
|
||||
/*
|
||||
Show google ads with dispatch queue.
|
||||
*/
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.8, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.bottomBannerView, in: adView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self)
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -32,11 +32,8 @@ class GamesListVM{
|
||||
//Set banner height
|
||||
maxHeaderHeight = UIScreen.main.bounds.width * 0.55
|
||||
vc.headerHeight.constant = maxHeaderHeight
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
checkAds()
|
||||
})
|
||||
|
||||
checkAds()
|
||||
}
|
||||
|
||||
func checkAds(){
|
||||
@@ -48,9 +45,9 @@ class GamesListVM{
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let gamesAd = adsData.result?.filter({$0.forPage == AdsEnum.games.rawValue}).first{
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let gamesAd = adsData.result?.filter({$0.slug == AdsEnum.games.rawValue}).first{
|
||||
// check if ads data contains ad for webseries
|
||||
if let bannerImage = gamesAd.bannerImage, let buttonImage = gamesAd.buttonImage{
|
||||
if let bannerImage = gamesAd.advertisement?.bannerImage, let buttonImage = gamesAd.advertisement?.buttonImage{
|
||||
vc.headerImage.imageURL(bannerImage, color: .white)
|
||||
vc.headerBtn.setTitle("", for: .normal)
|
||||
vc.headerTitleLabel.text = ""
|
||||
@@ -62,14 +59,17 @@ class GamesListVM{
|
||||
if let adID = gamesAd.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,clicks: 1)
|
||||
}
|
||||
if let adLink = gamesAd.adLink ,let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
if let adLink = gamesAd.advertisement?.adLink ,let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
UIApplication.shared.open(url)
|
||||
}
|
||||
}
|
||||
}else if gamesAd.googleAd != nil{
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: headerBannerView, in:vc.headerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: headerBannerBottomView, in: vc.gamesLoadingView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc, height: 8, width: 15)
|
||||
})
|
||||
}
|
||||
}else{
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: headerBannerView, in:vc.headerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: headerBannerBottomView, in: vc.gamesLoadingView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc, height: 8, width: 15)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ class GamesListVM{
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let gamesAd = adsData.result?.filter({$0.forPage == AdsEnum.games.rawValue}).first, let bannerImage = gamesAd.bannerImage, let buttonImage = gamesAd.buttonImage{
|
||||
if let gamesAd = adsData.result?.filter({$0.slug == AdsEnum.games.rawValue}).first, let bannerImage = gamesAd.advertisement?.bannerImage, let buttonImage = gamesAd.advertisement?.buttonImage{
|
||||
vc.headerImage.imageURL(bannerImage, color: .white)
|
||||
vc.headerBtn.setTitle("", for: .normal)
|
||||
vc.headerTitleLabel.text = ""
|
||||
|
||||
@@ -18,7 +18,14 @@ class HomeVC: UIViewController ,ChildViewControllerDelegate{
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
//setup google ads for fullscreen if its turned on.
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let gamesIntersitialAd = adsData.result?.filter({$0.slug == AdsEnum.gameInterestial.rawValue}).first, gamesIntersitialAd.googleAd != nil{
|
||||
/*
|
||||
setup google ads.
|
||||
*/
|
||||
GoogleInterstistialADSetup.shareInstance.setupGoogleIntersitialAD()
|
||||
}
|
||||
|
||||
switch AuthFunc.shareInstance.selectedTheme {
|
||||
case .theme1:
|
||||
let sb = UIStoryboard(name: K.StoryBoard.theme, bundle: nil)
|
||||
|
||||
@@ -52,7 +52,6 @@ class MyListVM{
|
||||
DispatchQueue.main.async {
|
||||
self.vc.shimmerView.forEach { shimmer in
|
||||
if load{
|
||||
shimmer.gradientColorOne = #colorLiteral(red: 0.1210066287, green: 0.8382952364, blue: 0.9853085876, alpha: 1)
|
||||
shimmer.startShimmer()
|
||||
}else{
|
||||
shimmer.stopShimmer()
|
||||
|
||||
@@ -79,7 +79,7 @@ class KaraokeListingVC: UIViewController {
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let karaokeAd = adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first, let adID = karaokeAd.id{
|
||||
if let karaokeAd = adsData.result?.filter({$0.slug == AdsEnum.karaoke.rawValue}).first, let adID = karaokeAd.advertisement?.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,impressions: 1)
|
||||
}
|
||||
}
|
||||
@@ -100,7 +100,7 @@ class KaraokeListingVC: UIViewController {
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let karaokeAd = adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first, let adLink = karaokeAd.adLink, let adID = karaokeAd.id{
|
||||
if let karaokeAd = adsData.result?.filter({$0.slug == AdsEnum.karaoke.rawValue}).first, let adLink = karaokeAd.advertisement?.adLink, let adID = karaokeAd.advertisement?.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,clicks: 1)
|
||||
|
||||
if let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
@@ -175,16 +175,16 @@ extension KaraokeListingVC : CollectionViewSRC{
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData, adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first != nil{
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let karaokeAd = adsData.result?.filter({$0.slug == AdsEnum.karaoke.rawValue}).first, (karaokeAd.advertisement != nil || karaokeAd.googleAd != nil){
|
||||
// check if ads data contains ad for webseries
|
||||
}else{
|
||||
/*
|
||||
Updated the top header data
|
||||
*/
|
||||
vm.headerData = data
|
||||
vm.setHeaderData()
|
||||
vm.updateHeaderData(data: data)
|
||||
}
|
||||
|
||||
|
||||
let sb = UIStoryboard(name: K.StoryBoard.Karaoke, bundle: nil)
|
||||
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Karaoke.karaokeDetailsVC) as! KaraokeDetailsVC
|
||||
vcPush.modalPresentationStyle = .overCurrentContext
|
||||
@@ -194,7 +194,6 @@ extension KaraokeListingVC : CollectionViewSRC{
|
||||
self.present(vcPush, animated: true)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Collection Flow Layout
|
||||
@@ -265,14 +264,13 @@ extension KaraokeListingVC : TableViewSRC{
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData, adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first != nil{
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let karaokeAd = adsData.result?.filter({$0.slug == AdsEnum.karaoke.rawValue}).first, (karaokeAd.advertisement != nil || karaokeAd.googleAd != nil){
|
||||
// check if ads data contains ad for webseries
|
||||
}else{
|
||||
/*
|
||||
Updated the top header data
|
||||
*/
|
||||
vm.headerData = data
|
||||
vm.setHeaderData()
|
||||
vm.updateHeaderData(data: data)
|
||||
}
|
||||
|
||||
let sb = UIStoryboard(name: K.StoryBoard.Karaoke, bundle: nil)
|
||||
|
||||
@@ -31,10 +31,15 @@ class JWKaraokePlayerVM{
|
||||
var headerBannerView = GADBannerView()
|
||||
|
||||
func initView(){
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.8, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerView, in: vc.adView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
})
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let karaokePlayerAd = adsData.result?.filter({$0.slug == AdsEnum.karaokePlayer.rawValue}).first, karaokePlayerAd.googleAd != nil{
|
||||
/*
|
||||
Show google ads with dispatch queue.
|
||||
*/
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.8, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerView, in: vc.adView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
})
|
||||
}
|
||||
|
||||
startTimeStamp = Date()
|
||||
vc.downloadRecordingBtn.isEnabled = false
|
||||
|
||||
@@ -38,10 +38,7 @@ class KaraokeListingVM{
|
||||
maxHeaderHeight = UIScreen.main.bounds.width * 0.55
|
||||
vc.headerHeight.constant = maxHeaderHeight
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
checkAds()
|
||||
})
|
||||
checkAds()
|
||||
}
|
||||
|
||||
func setupCell(){
|
||||
@@ -61,6 +58,7 @@ class KaraokeListingVM{
|
||||
}
|
||||
|
||||
func setHeaderData(){
|
||||
|
||||
guard let data = self.headerData else{return}
|
||||
|
||||
if let url = data.thumbnailPath{
|
||||
@@ -85,9 +83,9 @@ class KaraokeListingVM{
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let webSeriesAd = adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first{
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let karaokeAd = adsData.result?.filter({$0.slug == AdsEnum.karaoke.rawValue}).first{
|
||||
// check if ads data contains ad for webseries
|
||||
if let bannerImage = webSeriesAd.bannerImage, let buttonImage = webSeriesAd.buttonImage{
|
||||
if let bannerImage = karaokeAd.advertisement?.bannerImage, let buttonImage = karaokeAd.advertisement?.buttonImage{
|
||||
vc.headerImage.imageURL(bannerImage, color: .white)
|
||||
vc.headerBtn.setTitle("", for: .normal)
|
||||
vc.headerTitleLabel.text = ""
|
||||
@@ -96,20 +94,25 @@ class KaraokeListingVM{
|
||||
vc.headerBtn.sd_setBackgroundImage(with: URL(string:buttonImage), for: .normal)
|
||||
|
||||
vc.headerImage.addTapGesture {
|
||||
if let adID = webSeriesAd.id{
|
||||
if let adID = karaokeAd.advertisement?.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,clicks: 1)
|
||||
}
|
||||
if let adLink = webSeriesAd.adLink ,let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
if let adLink = karaokeAd.advertisement?.adLink ,let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
UIApplication.shared.open(url)
|
||||
}
|
||||
}
|
||||
}else if karaokeAd.googleAd != nil{
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerView, in: vc.headerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerBottomView, in: vc.selectedShowView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc, height: 8, width: 15)
|
||||
})
|
||||
}
|
||||
}else{
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerView, in: vc.headerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerBottomView, in: vc.selectedShowView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc, height: 8, width: 15)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// MARK: - GetKaraoke Listing
|
||||
|
||||
func getContinueWatching(){
|
||||
@@ -184,34 +187,18 @@ class KaraokeListingVM{
|
||||
self.vc.tableHeight.constant = self.vc.karaokeListingTableView.contentSize.height + 100
|
||||
self.vc.karaokeListingTableView.layoutIfNeeded()
|
||||
self.vc.tableHeight.constant = self.vc.karaokeListingTableView.contentSize.height + 10
|
||||
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
// if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// // check if ads data contains ad for webseries
|
||||
// if let karaokeAd = adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first, let bannerImage = karaokeAd.bannerImage, let buttonImage = karaokeAd.buttonImage{
|
||||
// vc.headerImage.imageURL(bannerImage, color: .white)
|
||||
// vc.headerBtn.setTitle("", for: .normal)
|
||||
// vc.headerTitleLabel.text = ""
|
||||
// vc.headerViewLabelHeight.constant = 10
|
||||
// vc.headerBtn.backgroundColor = .clear
|
||||
// vc.headerBtn.sd_setBackgroundImage(with: URL(string:buttonImage), for: .normal)
|
||||
// }else{
|
||||
// if !isBtnClick{
|
||||
// self.headerData = self.karaokeListData.first
|
||||
// setHeaderData()
|
||||
// }
|
||||
// }
|
||||
// }else{
|
||||
// if !isBtnClick{
|
||||
// self.headerData = self.karaokeListData.first
|
||||
// setHeaderData()
|
||||
// }
|
||||
// }
|
||||
|
||||
self.stopShimmer()
|
||||
|
||||
if !isBtnClick{ // only load first time.
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let karaokeAd = adsData.result?.filter({$0.slug == AdsEnum.karaoke.rawValue}).first, (karaokeAd.advertisement != nil || karaokeAd.googleAd != nil){
|
||||
// this means ads are there
|
||||
}else{
|
||||
self.headerData = data.first
|
||||
self.setHeaderData()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
self.vc.loadMoreActivityIndicator.stopAnimating()
|
||||
self.vc.loadMoreActivityIndicator.hidesWhenStopped = true
|
||||
|
||||
@@ -244,6 +231,11 @@ class KaraokeListingVM{
|
||||
self.vc.selectedShowView.stopShimmer()
|
||||
}
|
||||
|
||||
func updateHeaderData(data : KaraokeListingDM.KaraokeDatum){
|
||||
headerData = data
|
||||
setHeaderData()
|
||||
}
|
||||
|
||||
// MARK: - Update Fav Likes
|
||||
|
||||
func updateFavLikes(type : FavCellCLick, isFav : Bool? ,isLiked : Bool?, postID : Int , postType : Int){
|
||||
|
||||
@@ -9,7 +9,7 @@ import Foundation
|
||||
|
||||
// MARK: - AdsDM
|
||||
struct AdsDM: Codable {
|
||||
let result: [ResultData]?
|
||||
let result: [Result]?
|
||||
let totalRecords: Int?
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
@@ -18,20 +18,83 @@ struct AdsDM: Codable {
|
||||
}
|
||||
|
||||
// MARK: - Result
|
||||
struct ResultData: Codable {
|
||||
struct Result: Codable {
|
||||
let id: Int?
|
||||
let pageName, slug, isActive: String?
|
||||
let advertisement: Advertisement?
|
||||
let googleAd: GoogleAd?
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case id
|
||||
case pageName = "page_name"
|
||||
case slug
|
||||
case isActive = "is_active"
|
||||
case advertisement
|
||||
case googleAd = "google_ad"
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Advertisement
|
||||
struct Advertisement: Codable {
|
||||
let id, adPagesXid: Int?
|
||||
let title, adCompany: String?
|
||||
let bannerImage, buttonImage: String?
|
||||
let forPage: String?
|
||||
let adLink: String?
|
||||
let isActive: String?
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case id, title
|
||||
case id
|
||||
case adPagesXid = "ad_pages_xid"
|
||||
case title
|
||||
case adCompany = "ad_company"
|
||||
case bannerImage = "banner_image"
|
||||
case buttonImage = "button_image"
|
||||
case forPage = "for_page"
|
||||
case adLink = "ad_link"
|
||||
case isActive = "is_active"
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - GoogleAd
|
||||
struct GoogleAd: Codable {
|
||||
let id, adPagesXid: Int?
|
||||
let isActive: String?
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case id
|
||||
case adPagesXid = "ad_pages_xid"
|
||||
case isActive = "is_active"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//// MARK: - AdsDM
|
||||
//struct AdsDM: Codable {
|
||||
// let result: [ResultData]?
|
||||
// let totalRecords: Int?
|
||||
//
|
||||
// enum CodingKeys: String, CodingKey {
|
||||
// case result
|
||||
// case totalRecords = "total_records"
|
||||
// }
|
||||
//
|
||||
// // MARK: - Result
|
||||
// struct ResultData: Codable {
|
||||
// let id: Int?
|
||||
// let title, adCompany: String?
|
||||
// let bannerImage, buttonImage: String?
|
||||
// let forPage: String?
|
||||
// let adLink: String?
|
||||
//
|
||||
// enum CodingKeys: String, CodingKey {
|
||||
// case id, title
|
||||
// case adCompany = "ad_company"
|
||||
// case bannerImage = "banner_image"
|
||||
// case buttonImage = "button_image"
|
||||
// case forPage = "for_page"
|
||||
// case adLink = "ad_link"
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
@@ -22,8 +22,12 @@ enum AdsEnum : String{
|
||||
case shop_super_category = "shop-super-category"
|
||||
case web_series = "web-series"
|
||||
case karaoke = "karaoke"
|
||||
case karaokePlayer = "karaoke-player"
|
||||
case audioBooks = "audio-books"
|
||||
case games = "games"
|
||||
case gameWebView = "game-web-view"
|
||||
case gameInterestial = "game-interestial"
|
||||
case fm = "fm"
|
||||
}
|
||||
|
||||
class AuthFunc{
|
||||
@@ -231,7 +235,7 @@ class AuthFunc{
|
||||
|
||||
func getAds(onCompletion: ((Bool) -> Void)? = nil){
|
||||
let params : Parameters = ["start" : "0",
|
||||
"limit":"0"]
|
||||
"limit":"20"]
|
||||
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Analytics.get_ad_data, method: .get,parameters: params) { (result : Result<BaseResponseModel<AdsDM>, NetworkManager.APIError>) in
|
||||
switch result{
|
||||
case .success(let data):
|
||||
|
||||
36
WOKA/Main/AuthFunc/GoogleInterstistialADSetup.swift
Normal file
36
WOKA/Main/AuthFunc/GoogleInterstistialADSetup.swift
Normal file
@@ -0,0 +1,36 @@
|
||||
//
|
||||
// GoogleInterstistialADSetup.swift
|
||||
// WOKA
|
||||
//
|
||||
// Created by MacBook Pro on 23/09/24.
|
||||
//
|
||||
|
||||
import GoogleMobileAds
|
||||
import Alamofire
|
||||
|
||||
class GoogleInterstistialADSetup{
|
||||
|
||||
static let shareInstance = GoogleInterstistialADSetup()
|
||||
let reachability = NetworkReachabilityManager()
|
||||
|
||||
private init(){}
|
||||
var interstitial: GADInterstitialAd?
|
||||
|
||||
func setupGoogleIntersitialAD(){
|
||||
GADInterstitialAd.load(withAdUnitID: K.GoogleAdIDs.gamesDetailsInterStial, request: GADRequest()) { [weak self] ad, error in
|
||||
if let error = error {
|
||||
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
|
||||
|
||||
// If internet is reachable, try to load the ad again
|
||||
if self?.reachability?.isReachable == true {
|
||||
self?.setupGoogleIntersitialAD()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Successfully loaded the interstitial ad
|
||||
self?.interstitial = ad
|
||||
print("Interstitial ad loaded successfully.")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,6 +63,7 @@ enum AppStoryboard: String {
|
||||
case Main = "Main"
|
||||
case Home = "Home"
|
||||
case AuthenticationSB = "AuthenticationSB"
|
||||
|
||||
// Computed property that returns an instance of UIStoryboard for the given case.
|
||||
var instance: UIStoryboard {
|
||||
// Creates and returns a UIStoryboard instance with the name of the enum case and the main bundle.
|
||||
|
||||
@@ -156,7 +156,7 @@ struct APIEndPoints {
|
||||
struct Analytics{
|
||||
static let user_clicks = makeURL(path: "v2/user_clicks")
|
||||
static let user_video_view = makeURL(path: "user_video_view")
|
||||
static let get_ad_data = makeURL(path: "get_ad_data")
|
||||
static let get_ad_data = makeURL(path: "v2/get_ad_data")
|
||||
static let update_ad_count = makeURL(path: "update_ad_count")
|
||||
}
|
||||
|
||||
|
||||
@@ -33,19 +33,28 @@ class SplashVC: UIViewController {
|
||||
/*
|
||||
Show google ads with dispatch queue.
|
||||
*/
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
DispatchQueue.main.asyncAfter(deadline: .now(), execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: vm.banner1, in: adBanner1, adUnitID: K.GoogleAdIDs.splashBanner1, viewController: self)
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: vm.banner2, in: adBanner2, adUnitID: K.GoogleAdIDs.splashBanner2, viewController: self)
|
||||
vm.initView()
|
||||
|
||||
})
|
||||
|
||||
|
||||
self.navigationItem.backBarButtonItem = UIBarButtonItem(title:"", style:.plain, target:nil, action:nil)
|
||||
vm.vc = self
|
||||
print("OneSignalID:- ", OneSignal.User.pushSubscription.id ?? "NIL")
|
||||
|
||||
if K.GVar.skippedUpdate == true{
|
||||
K.GVar.skippedUpdate = nil
|
||||
self.languageBtnStack.isHidden = false
|
||||
self.wokaLogo.transform = CGAffineTransform(scaleX: 1.8, y: 1.8)
|
||||
return
|
||||
}
|
||||
|
||||
vm.playSplashSound()
|
||||
animateImageScale()
|
||||
self.navigationItem.backBarButtonItem = UIBarButtonItem(title:"", style:.plain, target:nil, action:nil)
|
||||
|
||||
print("OneSignalID:- ", OneSignal.User.pushSubscription.id ?? "NIL")
|
||||
}
|
||||
|
||||
@IBAction func languageBtnTapped(_ sender: UIButton) {
|
||||
@@ -138,6 +147,7 @@ class SplashVC: UIViewController {
|
||||
AuthFunc.shareInstance.getStaticURLs()
|
||||
}
|
||||
}
|
||||
|
||||
UIView.animate(withDuration: 0.5, animations: { [weak self] in
|
||||
guard let self else{return}
|
||||
// Update the constant value of the top constraint
|
||||
@@ -146,6 +156,7 @@ class SplashVC: UIViewController {
|
||||
self.view.layoutIfNeeded()
|
||||
}) { _ in
|
||||
if !AuthFunc.shareInstance.checkLogin(){
|
||||
self.vm.startStopIndicator(start: false,hide: true)
|
||||
UIView.animate(withDuration: 0.3, delay: 0,options : [.transitionCrossDissolve],animations: {
|
||||
// Set the isHidden property of the view
|
||||
self.languageBtnStack.isHidden = false
|
||||
@@ -158,7 +169,6 @@ class SplashVC: UIViewController {
|
||||
}
|
||||
|
||||
override func viewDidLayoutSubviews() {
|
||||
vm.initView()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -223,25 +223,8 @@ final class PersistentStorage
|
||||
debugPrint(error)
|
||||
}
|
||||
}
|
||||
|
||||
func getAllData() {
|
||||
//We need to create a context from this container
|
||||
let managedContext = PersistentStorage.shared.context
|
||||
let fetchRequest:NSFetchRequest<NSFetchRequestResult> = NSFetchRequest.init(entityName: "UserClicks")
|
||||
fetchRequest.fetchLimit = 10
|
||||
do {
|
||||
guard let result = try managedContext.fetch(fetchRequest) as? [UserClicks] else {return}
|
||||
result.forEach { clicks in
|
||||
// device type 1- android , 2 - iOS
|
||||
print("ID:-" , PostType(rawValue: Int(clicks.post_type))!, "CatID:- ", clicks.category_id, "PostID:- ", clicks.post_id , "Count:-", clicks.click_counts)
|
||||
}
|
||||
}
|
||||
catch let error
|
||||
{
|
||||
debugPrint(error)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Sending Clicks data to our server
|
||||
func sendDataToServer() {
|
||||
|
||||
//We need to create a context from this container
|
||||
@@ -254,14 +237,25 @@ final class PersistentStorage
|
||||
do {
|
||||
guard let result = try managedContext.fetch(fetchRequest) as? [UserClicks] else {return}
|
||||
var userClicks = [ClicksAnalytics]()
|
||||
|
||||
print("UserClicks Count from SendData to server :- ", result.count)
|
||||
|
||||
//if data is less , dont keep sending the data to server
|
||||
if result.count < 5 {
|
||||
print("Not Enough Data")
|
||||
return
|
||||
}
|
||||
|
||||
result.forEach { clicks in
|
||||
// device type 1- android , 2 - iOS
|
||||
userClicks.append(ClicksAnalytics(postID: Int(clicks.post_id), postType: Int(clicks.post_type), numberOfClicks: Int(clicks.click_counts), deviceType: 2, categoryID: Int(clicks.category_id)))
|
||||
|
||||
print("ID:-" , PostType(rawValue: Int(clicks.post_type))!, "CatID:- ", clicks.category_id, "PostID:- ", clicks.post_id , "Count:-", clicks.click_counts)
|
||||
}
|
||||
|
||||
// send data to server
|
||||
NetworkManager.shareInstance.nwCallRawJSON(clicksData: userClicks) { isDone in
|
||||
if isDone{
|
||||
if isDone{ // if data is send to server and we get success callback then delete that data from coredata entity.
|
||||
self.deleteData(result)
|
||||
}
|
||||
}
|
||||
@@ -272,6 +266,7 @@ final class PersistentStorage
|
||||
}
|
||||
}
|
||||
|
||||
//Delete data from CoreData
|
||||
func deleteData(_ data: [UserClicks]) {
|
||||
let managedContext = PersistentStorage.shared.context
|
||||
|
||||
@@ -281,6 +276,8 @@ final class PersistentStorage
|
||||
|
||||
do {
|
||||
try managedContext.save()
|
||||
|
||||
//after deleting check if more data exist.
|
||||
getAllData()
|
||||
print("Deleted data")
|
||||
} catch let error {
|
||||
@@ -288,7 +285,36 @@ final class PersistentStorage
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Get all data from DB
|
||||
func getAllData() {
|
||||
//We need to create a context from this container
|
||||
let managedContext = PersistentStorage.shared.context
|
||||
let fetchRequest:NSFetchRequest<NSFetchRequestResult> = NSFetchRequest.init(entityName: "UserClicks")
|
||||
fetchRequest.fetchLimit = 15
|
||||
do {
|
||||
guard let result = try managedContext.fetch(fetchRequest) as? [UserClicks] else {return}
|
||||
|
||||
print("UserClicks Count from getAllData :- ", result.count)
|
||||
//if data is less , dont keep sending the data to server
|
||||
if result.count < 5 {
|
||||
print("Not Enough Data")
|
||||
return
|
||||
} else{
|
||||
// send data again to server
|
||||
sendDataToServer()
|
||||
print("Data sent Again.")
|
||||
}
|
||||
|
||||
result.forEach { clicks in
|
||||
// device type 1- android , 2 - iOS
|
||||
print("ID:-" , PostType(rawValue: Int(clicks.post_type))!, "CatID:- ", clicks.category_id, "PostID:- ", clicks.post_id , "Count:-", clicks.click_counts)
|
||||
}
|
||||
}
|
||||
catch let error
|
||||
{
|
||||
debugPrint(error)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Handle Clicks For UserClicks
|
||||
|
||||
@@ -348,13 +374,24 @@ final class PersistentStorage
|
||||
fetchRequest.fetchLimit = 15
|
||||
do {
|
||||
guard let result = try managedContext.fetch(fetchRequest) as? [AdClicksImpressions] else {return}
|
||||
|
||||
print("userImpressions Count from SendAdsData to server :- ", result.count)
|
||||
|
||||
//if data is less , dont keep sending the data to server
|
||||
if result.count < 2 {
|
||||
print("Not Enough Data")
|
||||
return
|
||||
}
|
||||
|
||||
var userImpressions = [AdsClickImpressionsData]()
|
||||
|
||||
result.forEach { ads in
|
||||
// device type 1- android , 2 - iOS
|
||||
userImpressions.append(AdsClickImpressionsData(adID: Int(ads.ad_id), noOfClick: Int(ads.no_of_click), noOfOmpression: Int(ads.no_of_impression)))
|
||||
|
||||
print("ID:-" , ads.ad_id, "No Of Clicks :- ", ads.no_of_click, "Impressions :- ", ads.no_of_impression)
|
||||
}
|
||||
|
||||
NetworkManager.shareInstance.nwCallRawJSONAds(adsData: userImpressions) { isDone in
|
||||
if isDone{
|
||||
self.deleteAdsData(result)
|
||||
@@ -448,10 +485,40 @@ final class PersistentStorage
|
||||
|
||||
do {
|
||||
try managedContext.save()
|
||||
getAllData()
|
||||
getAllAdsData()
|
||||
print("Deleted data")
|
||||
} catch let error {
|
||||
debugPrint("Failed to delete data:", error)
|
||||
}
|
||||
}
|
||||
|
||||
func getAllAdsData() {
|
||||
//We need to create a context from this container
|
||||
let managedContext = PersistentStorage.shared.context
|
||||
let fetchRequest:NSFetchRequest<NSFetchRequestResult> = NSFetchRequest.init(entityName: "AdClicksImpressions")
|
||||
// fetchRequest.fetchLimit = 2
|
||||
do {
|
||||
guard let result = try managedContext.fetch(fetchRequest) as? [AdClicksImpressions] else {return}
|
||||
|
||||
print("UserClicks Count from getAllData :- ", result.count)
|
||||
//if data is less , dont keep sending the data to server
|
||||
if result.count < 2 {
|
||||
print("Not Enough Ads Data")
|
||||
return
|
||||
} else{
|
||||
// send ads data again to server
|
||||
sendAdsData()
|
||||
print("Ads Data sent Again.")
|
||||
}
|
||||
|
||||
// result.forEach { clicks in
|
||||
// // device type 1- android , 2 - iOS
|
||||
// print("ID:-" , PostType(rawValue: Int(clicks.post_type))!, "CatID:- ", clicks.category_id, "PostID:- ", clicks.post_id , "Count:-", clicks.click_counts)
|
||||
// }
|
||||
}
|
||||
catch let error
|
||||
{
|
||||
debugPrint(error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ class ShopListingVC: UIViewController {
|
||||
vm.initView()
|
||||
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
|
||||
navigationController?.navigationBar.shadowImage = UIImage()
|
||||
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
@@ -56,7 +55,7 @@ class ShopListingVC: UIViewController {
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let shopSuperCatAd = adsData.result?.filter({$0.forPage == AdsEnum.shop_super_category.rawValue}).first, let adID = shopSuperCatAd.id{
|
||||
if let shopSuperCatAd = adsData.result?.filter({$0.slug == AdsEnum.shop_super_category.rawValue}).first, let adID = shopSuperCatAd.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,impressions: 1)
|
||||
}
|
||||
}
|
||||
@@ -96,7 +95,7 @@ extension ShopListingVC : TableViewSRC{
|
||||
if vm.superCatData[indexPath.row].isAD == true{
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let shopSuperCatAd = adsData.result?.filter({$0.forPage == AdsEnum.shop_super_category.rawValue}).first,let adLink = shopSuperCatAd.adLink, let adID = shopSuperCatAd.id{
|
||||
if let shopSuperCatAd = adsData.result?.filter({$0.slug == AdsEnum.shop_super_category.rawValue}).first,let adLink = shopSuperCatAd.advertisement?.adLink, let adID = shopSuperCatAd.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID,clicks: 1)
|
||||
if let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
UIApplication.shared.open(url)
|
||||
|
||||
@@ -85,12 +85,14 @@ class ShopListingVM{
|
||||
vc.tableView.isHidden = false
|
||||
|
||||
/*
|
||||
MAke logic for ads
|
||||
If ads found then only load it or else directly append the data and reload
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let shopSuperCatAd = adsData.result?.filter({$0.forPage == AdsEnum.shop_super_category.rawValue}).first, let bannerImage = shopSuperCatAd.bannerImage{
|
||||
self.superCatData.append(ShopSuperCategoryDM.ResultData(id: shopSuperCatAd.id, superCategoryName: shopSuperCatAd.title, superCategoryThumbnail: bannerImage,isAD: true))
|
||||
if let shopSuperCatAd = adsData.result?.filter({$0.slug == AdsEnum.shop_super_category.rawValue}).first, let bannerImage = shopSuperCatAd.advertisement?.bannerImage{
|
||||
self.superCatData.append(ShopSuperCategoryDM.ResultData(id: shopSuperCatAd.id, superCategoryName: shopSuperCatAd.advertisement?.title, superCategoryThumbnail: bannerImage,isAD: true))
|
||||
}else{ // check if google ads
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -98,6 +98,7 @@ class ThemeOneVC: UIViewController {
|
||||
}
|
||||
|
||||
override func viewDidAppear(_ animated: Bool) {
|
||||
AuthFunc.shareInstance.getAds()
|
||||
K.GVar.topView = .theme1
|
||||
|
||||
vm.shouldAnimate = true
|
||||
@@ -107,7 +108,6 @@ class ThemeOneVC: UIViewController {
|
||||
vm.moveCloudView()
|
||||
}
|
||||
if let player = vm.avPlayer{
|
||||
player.status
|
||||
player.play()
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ class ThemeOneVC: UIViewController {
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let themeOneAd = adsData.result?.filter({$0.forPage == AdsEnum.themeOne.rawValue}).first, let adID = themeOneAd.id{
|
||||
if let themeOneAd = adsData.result?.filter({$0.slug == AdsEnum.themeOne.rawValue}).first, let adID = themeOneAd.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,impressions: 1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ class ThemeOneVM{
|
||||
}
|
||||
|
||||
func initView(){
|
||||
requestIDFA()
|
||||
// requestIDFA()
|
||||
AuthFunc.shareInstance.initTimePeriods()
|
||||
startInitialTimer()
|
||||
// moveCloudView()
|
||||
@@ -76,7 +76,7 @@ class ThemeOneVM{
|
||||
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let themeOneAd = adsData.result?.filter({$0.forPage == AdsEnum.themeOne.rawValue}).first, let bannerImage = themeOneAd.bannerImage{
|
||||
if let themeOneAd = adsData.result?.filter({$0.slug == AdsEnum.themeOne.rawValue}).first, let bannerImage = themeOneAd.advertisement?.bannerImage{
|
||||
vc.adBanner.imageURL(bannerImage, color: .textDarkBlue)
|
||||
vc.adBanner.isHidden = false
|
||||
}
|
||||
@@ -315,7 +315,7 @@ class ThemeOneVM{
|
||||
//check url from api
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let themeOneAd = adsData.result?.filter({$0.forPage == AdsEnum.themeOne.rawValue}).first, let adLink = themeOneAd.adLink, let adID = themeOneAd.id{
|
||||
if let themeOneAd = adsData.result?.filter({$0.slug == AdsEnum.themeOne.rawValue}).first, let adLink = themeOneAd.advertisement?.adLink, let adID = themeOneAd.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID,clicks: 1)
|
||||
|
||||
if let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
|
||||
@@ -53,11 +53,14 @@ class ThemeTwoVM{
|
||||
self.playLiveTV()
|
||||
}
|
||||
|
||||
// configuring the google ads.
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: bannerView, in: vc.adView, adUnitID: K.GoogleAdIDs.splashBanner1, viewController: self.vc, height: 8, width: 15)
|
||||
})
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let themeTwoAD = adsData.result?.filter({$0.slug == AdsEnum.themeTwo.rawValue}).first, themeTwoAD.googleAd != nil{
|
||||
// Show google ads if its configured from backend.
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: bannerView, in: vc.adView, adUnitID: K.GoogleAdIDs.splashBanner1, viewController: self.vc, height: 8, width: 15)
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private func handleNotificationCenter(){
|
||||
|
||||
@@ -154,14 +154,16 @@ class WokaFMVM{
|
||||
|
||||
|
||||
func setGoogleAd(){
|
||||
/*
|
||||
Show google ads with dispatch queue.
|
||||
*/
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.8, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.bottomBannerView, in: vc.adView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
// vc.adView.isHidden = false
|
||||
})
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let fmAd = adsData.result?.filter({$0.slug == AdsEnum.fm.rawValue}).first, fmAd.googleAd != nil{
|
||||
/*
|
||||
Show google ads with dispatch queue.
|
||||
*/
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.8, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.bottomBannerView, in: vc.adView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Setup AV & Player
|
||||
|
||||
@@ -97,7 +97,7 @@ class WebSeriesVC: UIViewController {
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let webSeriesAd = adsData.result?.filter({$0.forPage == AdsEnum.web_series.rawValue}).first, let adID = webSeriesAd.id{
|
||||
if let webSeriesAd = adsData.result?.filter({$0.slug == AdsEnum.web_series.rawValue}).first, let adID = webSeriesAd.advertisement?.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,impressions: 1)
|
||||
}
|
||||
}
|
||||
@@ -113,9 +113,9 @@ class WebSeriesVC: UIViewController {
|
||||
@IBAction func playTrailer(_ sender: LocalisedElementsButton) {
|
||||
|
||||
//If its ads then nav user to webview
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let webSeriesAd = adsData.result?.filter({$0.forPage == AdsEnum.web_series.rawValue}).first{
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let webSeriesAd = adsData.result?.filter({$0.slug == AdsEnum.web_series.rawValue}).first{
|
||||
// check if ads data contains ad for webseries
|
||||
if let adLink = webSeriesAd.adLink,let adID = webSeriesAd.id{
|
||||
if let adLink = webSeriesAd.advertisement?.adLink,let adID = webSeriesAd.advertisement?.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,clicks: 1)
|
||||
if let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
UIApplication.shared.open(url)
|
||||
|
||||
@@ -70,37 +70,16 @@ class WebSeriesVM{
|
||||
}
|
||||
|
||||
checkAds()
|
||||
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
// if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// // check if ads data contains ad for webseries
|
||||
// if let webSeriesAd = adsData.result?.filter({$0.forPage == AdsEnum.web_series.rawValue}).first{
|
||||
// vc.headerViewImage.addTapGesture {
|
||||
// if let adID = webSeriesAd.id{
|
||||
// PersistentStorage.shared.addAdsCount(adID: adID ,clicks: 1)
|
||||
// }
|
||||
// if let adLink = webSeriesAd.adLink ,let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
// UIApplication.shared.open(url)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
func checkAds(){
|
||||
|
||||
/*
|
||||
This is test ad.
|
||||
First check if webSeries ad is present via slug, then check for Local Ads, if not then check google ads.
|
||||
*/
|
||||
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let webSeriesAd = adsData.result?.filter({$0.forPage == AdsEnum.web_series.rawValue}).first{
|
||||
// check if ads data contains ad for webseries
|
||||
if let bannerImage = webSeriesAd.bannerImage, let buttonImage = webSeriesAd.buttonImage{
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let webSeriesAd = adsData.result?.filter({$0.slug == AdsEnum.web_series.rawValue}).first{
|
||||
|
||||
// check if ads data contains LocalAD for webseries
|
||||
if let advertisement = webSeriesAd.advertisement,let bannerImage = advertisement.bannerImage, let buttonImage = advertisement.buttonImage{
|
||||
vc.headerViewImage.imageURL(bannerImage, color: .white)
|
||||
vc.headerBtn.setTitle("", for: .normal)
|
||||
vc.headerViewLabel.text = ""
|
||||
@@ -112,55 +91,21 @@ class WebSeriesVM{
|
||||
if let adID = webSeriesAd.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,clicks: 1)
|
||||
}
|
||||
if let adLink = webSeriesAd.adLink ,let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
if let adLink = webSeriesAd.advertisement?.adLink ,let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
UIApplication.shared.open(url)
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
}else{
|
||||
// check google ads
|
||||
if webSeriesAd.googleAd != nil{
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerView, in: vc.headerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.masilaBannerView, in: vc.masilaTrailerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc, height: 8, width: 15)
|
||||
})
|
||||
// let viewWidth = vc.headerView.frame.inset(by: vc.headerView.safeAreaInsets).width
|
||||
//
|
||||
// // Here the current interface orientation is used. Use
|
||||
// // GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth or
|
||||
// // GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth if you prefer to load an ad of a
|
||||
// // particular orientation,
|
||||
// let adaptiveSize = GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)
|
||||
// headerBannerView = GADBannerView(adSize: adaptiveSize)
|
||||
// headerBannerView.delegate = self.vc
|
||||
// headerBannerView.center = vc.headerView.center
|
||||
//
|
||||
// headerBannerView.frame = CGRect(x: 0, y: 0, width: vc.headerView.frame.width, height: vc.headerView.frame.height)
|
||||
// vc.headerView.addSubview(headerBannerView)
|
||||
// headerBannerView.adUnitID = "K.GoogleAdIDs.themeTwo"
|
||||
// headerBannerView.rootViewController = self.vc
|
||||
// headerBannerView.load(GADRequest())
|
||||
// headerBannerView.layoutIfNeeded()
|
||||
//
|
||||
// var bannerView2 = GADBannerView()
|
||||
//
|
||||
// let viewWidth2 = vc.masilaTrailerView.frame.inset(by: vc.masilaTrailerView.safeAreaInsets).width
|
||||
//
|
||||
// // Here the current interface orientation is used. Use
|
||||
// // GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth or
|
||||
// // GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth if you prefer to load an ad of a
|
||||
// // particular orientation,
|
||||
// let adaptiveSize2 = GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth2)
|
||||
// bannerView2 = GADBannerView(adSize: adaptiveSize2)
|
||||
//
|
||||
// bannerView2.center = vc.masilaTrailerView.center
|
||||
//
|
||||
// bannerView2.frame = CGRect(x: 0, y: 0, width: vc.masilaTrailerView.frame.width, height: vc.masilaTrailerView.frame.height)
|
||||
// vc.masilaTrailerView.addSubview(bannerView2)
|
||||
// bannerView2.adUnitID = K.GoogleAdIDs.themeTwo
|
||||
// bannerView2.rootViewController = self.vc
|
||||
// bannerView2.load(GADRequest())
|
||||
// bannerView2.layoutIfNeeded()
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerView, in: vc.headerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.masilaBannerView, in: vc.masilaTrailerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc, height: 8, width: 15)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user