From de88732b0789de8d4ec73430f711c544b057e97b Mon Sep 17 00:00:00 2001 From: Bilal Date: Mon, 30 Sep 2024 08:44:18 +0530 Subject: [PATCH] release build --- WOKA.xcodeproj/project.pbxproj | 25 ++++++---- .../Controller/JWKaraokePlayerVC.swift | 28 ++++++++++- WOKA/Main/AuthFunc/AuthFunc.swift | 3 ++ WOKA/Main/JWPlayerManager.swift | 25 ++++++---- .../ViewModel/SplashVM.swift | 1 - WOKA/Theme/Controller/ThemeOneVC.swift | 2 + WOKA/Theme/ViewModel/MoreVM.swift | 5 +- WOKA/Theme/ViewModel/ThemeOneVM.swift | 48 +++++++------------ 8 files changed, 84 insertions(+), 53 deletions(-) diff --git a/WOKA.xcodeproj/project.pbxproj b/WOKA.xcodeproj/project.pbxproj index 2a5a64c..38d0635 100644 --- a/WOKA.xcodeproj/project.pbxproj +++ b/WOKA.xcodeproj/project.pbxproj @@ -2917,7 +2917,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 25.1.8; + MARKETING_VERSION = 25.1.9; PRODUCT_BUNDLE_IDENTIFIER = com.app.woka; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -2960,7 +2960,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 25.1.8; + MARKETING_VERSION = 25.1.9; PRODUCT_BUNDLE_IDENTIFIER = com.app.woka; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -3054,7 +3054,8 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 6; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 4S9A74ZB6H; ENABLE_USER_SCRIPT_SANDBOXING = YES; GENERATE_INFOPLIST_FILE = YES; @@ -3067,13 +3068,17 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 25.1.6; + MARKETING_VERSION = 25.1.9; PRODUCT_BUNDLE_IDENTIFIER = com.app.woka.OneSignalNotificationServiceExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 1; }; name = Debug; }; @@ -3082,7 +3087,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 6; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 4S9A74ZB6H; ENABLE_USER_SCRIPT_SANDBOXING = YES; GENERATE_INFOPLIST_FILE = YES; @@ -3095,13 +3100,17 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 25.1.6; + MARKETING_VERSION = 25.1.9; PRODUCT_BUNDLE_IDENTIFIER = com.app.woka.OneSignalNotificationServiceExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 1; }; name = Release; }; diff --git a/WOKA/Karaoke/Controller/JWKaraokePlayerVC.swift b/WOKA/Karaoke/Controller/JWKaraokePlayerVC.swift index b03cf0d..2ebd3af 100644 --- a/WOKA/Karaoke/Controller/JWKaraokePlayerVC.swift +++ b/WOKA/Karaoke/Controller/JWKaraokePlayerVC.swift @@ -36,7 +36,8 @@ class JWKaraokePlayerVC: JWPlayerViewController, JWPlayerViewControllerDelegate var videoID = Int() var vm = JWKaraokePlayerVM() - + var errorCount = 0 + deinit{ NotificationCenter.default.removeObserver(self,name: UIApplication.didEnterBackgroundNotification, object: nil) NotificationCenter.default.removeObserver(self,name: UIApplication.willEnterForegroundNotification, object: nil) @@ -228,6 +229,31 @@ class JWKaraokePlayerVC: JWPlayerViewController, JWPlayerViewControllerDelegate override func jwplayer(_ player: JWPlayer, failedWithError code: UInt, message: String) { super.jwplayer(player, failedWithError: code, message: message) // if no internet then add network observer + // try reconnect 3 times else show retry + if errorCount < 4{ + errorCount += 1 + self.player.configurePlayer(with: config) + self.player.play() + return + } + DispatchQueue.main.async { + Utilities.alertWithBtnCancelCompletion(title: "Error", msgBody: message, okBtnStr: "Connect", vc: self) { [weak self] isDone in + guard let self else{ + self?.player.stop() + self?.dismiss(animated: true) + return + } + errorCount = 0 + + if isDone{ // retry + self.player.configurePlayer(with: config) + self.player.play() + }else{ // cancel + self.player.stop() + self.dismiss(animated: true) + } + } + } print("Error: \(code) - \(message)") } diff --git a/WOKA/Main/AuthFunc/AuthFunc.swift b/WOKA/Main/AuthFunc/AuthFunc.swift index ebedfe5..f3f817c 100644 --- a/WOKA/Main/AuthFunc/AuthFunc.swift +++ b/WOKA/Main/AuthFunc/AuthFunc.swift @@ -28,6 +28,9 @@ enum AdsEnum : String{ case gameWebView = "game-web-view" case gameInterestial = "game-interestial" case fm = "fm" + case liveTvAd = "live-tv-ad" + case webSeriesVideoAd = "web-series-video-ad" + case more = "more" } class AuthFunc{ diff --git a/WOKA/Main/JWPlayerManager.swift b/WOKA/Main/JWPlayerManager.swift index d31ff9c..36e6706 100644 --- a/WOKA/Main/JWPlayerManager.swift +++ b/WOKA/Main/JWPlayerManager.swift @@ -76,6 +76,7 @@ class JWPlayerManager { print("Invalid live stream URL") return } + let item = try JWPlayerItemBuilder() .file(URL(string: liveStreamItem.url)!) .title(liveStreamItem.titles ?? "Trailer") @@ -183,16 +184,20 @@ class JWPlayerManager { .build() case .webSeries: //https://pubads.g.doubleclick.net/gampad/ads?iu=/23204950200/VideoAd&description_url=https%3A%2F%2Fwokaland.com%2F&tfcd=0&npa=0&sz=480x320%7C640x480&ciu_szs=480x320&min_ad_duration=5000&max_ad_duration=20000&gdfp_req=1&unviewed_position_start=1&output=vast&env=vp&impl=s&correlator= - let adConfigs = JWAdsBuilder.shareInstace.createAds(adsData: [AdBreakItemStruct(adUrl: URL(string: "https://pubads.g.doubleclick.net/gampad/ads?iu=/23204950200/VideoAd&description_url=https%3A%2F%2Fwokaland.com%2F&tfcd=0&npa=0&ad_type=audio_video&sz=640x480%7C1280x720&gdfp_req=1&unviewed_position_start=1&output=vast&env=vp&impl=s&correlator=")!, offset: .midroll(percent: 40)), - AdBreakItemStruct(adUrl: URL(string: "https://pubads.g.doubleclick.net/gampad/live/ads?iu=/23204950200/VideoAd&description_url=https%3A%2F%2Fwokaland.com%2F&tfcd=0&npa=0&ad_type=audio_video&sz=640x480%7C1280x720&gdfp_req=1&unviewed_position_start=1&output=vast&env=vp&impl=s&correlator=&nofb=1")!, offset: .midroll(percent: 80)), - AdBreakItemStruct(adUrl: URL(string: "https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_preroll_skippable&sz=640x480&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=90")!, offset: .midroll(percent: 90)) - ]) - - finalConfig = try JWPlayerConfigurationBuilder() - .playlist(items: items) - .autostart(false) - .advertising(adConfigs!) - .build() + if let adsData = AuthFunc.shareInstance.adsData, let webSeriesVideoAd = adsData.result?.filter({$0.slug == AdsEnum.webSeriesVideoAd.rawValue}).first, webSeriesVideoAd.googleAd != nil, let adConfigs = JWAdsBuilder.shareInstace.createAds(adsData: [AdBreakItemStruct(adUrl: URL(string: "https://pubads.g.doubleclick.net/gampad/ads?iu=/23204950200/testingvideo&description_url=https%3A%2F%2Fwokaland.com&tfcd=0&npa=0&sz=640x180%7C1280x720%7C1280x720&min_ad_duration=0&max_ad_duration=30000&gdfp_req=1&unviewed_position_start=1&output=vast&env=vp&impl=s&correlator=&vad_type=linear")!, offset: .midroll(percent: 40)), + AdBreakItemStruct(adUrl: URL(string: "https://pubads.g.doubleclick.net/gampad/ads?iu=/23204950200/VideoAd&description_ss url=https%3A%2F%2Fwokaland.com&tfcd=0&npa=0&sz=640x480%7C1280x720&min_ad_duration=5000&max_ad_duration=30000&gdfp_req=1&unviewed_position_start=1&output=vast&env=vp&impl=s&correlator=")!, offset: .midroll(percent: 80)), + AdBreakItemStruct(adUrl: URL(string: "https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_preroll_skippable&sz=640x480&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=90")!, offset: .midroll(percent: 90))]){ + finalConfig = try JWPlayerConfigurationBuilder() + .playlist(items: items) + .autostart(false) + .advertising(adConfigs) + .build() + }else{ + finalConfig = try JWPlayerConfigurationBuilder() + .playlist(items: items) + .autostart(false) + .build() + } case .masilaSongs: let adConfigs = JWAdsBuilder.shareInstace.createAds(adsData: [AdBreakItemStruct(adUrl: URL(string: "https://pubads.g.doubleclick.net/gampad/ads?iu=/23204950200/VideoAd&description_url=https%3A%2F%2Fwokaland.com%2F&tfcd=0&npa=0&ad_type=audio_video&sz=640x480%7C1280x720&gdfp_req=1&unviewed_position_start=1&output=vast&env=vp&impl=s&correlator=")!, offset: .preroll())]) diff --git a/WOKA/OnBoarding Module/ViewModel/SplashVM.swift b/WOKA/OnBoarding Module/ViewModel/SplashVM.swift index 26c78b8..2ff2ec2 100644 --- a/WOKA/OnBoarding Module/ViewModel/SplashVM.swift +++ b/WOKA/OnBoarding Module/ViewModel/SplashVM.swift @@ -21,7 +21,6 @@ class SplashVM{ func initView(){ - if AuthFunc.shareInstance.staticURLs == nil{ AuthFunc.shareInstance.getStaticURLs() } diff --git a/WOKA/Theme/Controller/ThemeOneVC.swift b/WOKA/Theme/Controller/ThemeOneVC.swift index dd9c15f..092d699 100644 --- a/WOKA/Theme/Controller/ThemeOneVC.swift +++ b/WOKA/Theme/Controller/ThemeOneVC.swift @@ -98,7 +98,9 @@ class ThemeOneVC: UIViewController { } override func viewDidAppear(_ animated: Bool) { + // OFF In Production // AuthFunc.shareInstance.getAds() + K.GVar.topView = .theme1 vm.shouldAnimate = true diff --git a/WOKA/Theme/ViewModel/MoreVM.swift b/WOKA/Theme/ViewModel/MoreVM.swift index aa79406..0ab6115 100644 --- a/WOKA/Theme/ViewModel/MoreVM.swift +++ b/WOKA/Theme/ViewModel/MoreVM.swift @@ -53,8 +53,9 @@ class MoreVM{ } } - AdReusable.sharedInstance.setupBannerAd(bannerView: headerBannerView, in: vc.trailerTask, adUnitID: K.GoogleAdIDs.splashBanner2, viewController: self.vc, height: 5, width: 15) - + if let adsData = AuthFunc.shareInstance.adsData, let moreAd = adsData.result?.filter({$0.slug == AdsEnum.more.rawValue}).first, moreAd.googleAd != nil{ + AdReusable.sharedInstance.setupBannerAd(bannerView: headerBannerView, in: vc.trailerTask, adUnitID: K.GoogleAdIDs.splashBanner2, viewController: self.vc, height: 5, width: 15) + } } func setupAudioSession() { diff --git a/WOKA/Theme/ViewModel/ThemeOneVM.swift b/WOKA/Theme/ViewModel/ThemeOneVM.swift index e53d0b0..fcec021 100644 --- a/WOKA/Theme/ViewModel/ThemeOneVM.swift +++ b/WOKA/Theme/ViewModel/ThemeOneVM.swift @@ -533,49 +533,35 @@ class ThemeOneVM{ } let videoSourceBuilder = try JWVideoSourceBuilder() - // .defaultVideo(true) .file(liveStreamURL) .label(title) .build() // Create a JWPlayerItem let item = try JWPlayerItemBuilder() - // .file(liveStreamURL) .videoSources([videoSourceBuilder]) .title(title) .build() - // Create the ad break - let adBreakBuilder = JWAdBreakBuilder() - .offset(.preroll()) - .tags([URL(string: "https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_preroll_skippable&sz=640x480&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=")!]) - - - - guard let adBreak = try? adBreakBuilder.build() else { - print("Ad error") - // Handle build error - return + // Create a JWPlayerConfiguration. + if let adsData = AuthFunc.shareInstance.adsData, let liveTVAd = adsData.result?.filter({$0.slug == AdsEnum.liveTvAd.rawValue}).first, liveTVAd.googleAd != nil, let adConfig = JWAdsBuilder.shareInstace.createAds(adsData: [AdBreakItemStruct(adUrl: URL(string: "https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_preroll_skippable&sz=640x480&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=90")!, offset: .preroll())]){ + let config = try JWPlayerConfigurationBuilder() + .playlist(items: [item]) + .autostart(true) + .advertising(adConfig) + .build() + + vc.config = config + }else{ + let config = try JWPlayerConfigurationBuilder() + .playlist(items: [item]) + .autostart(true) + .build() + + vc.config = config } - // Create the ad config - let adConfigBuilder = JWImaAdvertisingConfigBuilder() - .schedule([adBreak]) - guard let adConfig = try? adConfigBuilder.build() else { - // Handle build error - return - } - - // Create a JWPlayerConfiguration - let config = try JWPlayerConfigurationBuilder() - .playlist(items: [item]) -// .preload(JWPreload(rawValue: 20) ?? .none) - .autostart(true) - .advertising(adConfig) -// .playerId("X57dFDmV") - .build() - - vc.config = config + vc.dismissTapped = self.tapped vc.contentType = .liveStream if let streamID = AuthFunc.shareInstance.staticURLs?.liveData?.first?.id{