Files
Woka_Native_iOS/WOKA/OnBoarding Module/Controller/SplashVC.swift
BilalKhanWDI bf189c118d - 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.
2024-09-23 19:45:24 +05:30

211 lines
7.5 KiB
Swift

//
// SplashVC.swift
// WOKA
//
// Created by MacBook Pro on 25/04/24.
//
import UIKit
import Lottie
import OneSignalFramework
import GoogleMobileAds
class SplashVC: UIViewController {
@IBOutlet weak var wokaLogo: UIImageView!
@IBOutlet weak var hindiBtn: UIButton!
@IBOutlet weak var englishBtn: UIButton!
@IBOutlet weak var languageBtnStack: UIStackView!
@IBOutlet weak var wokaOriginY: NSLayoutConstraint!
@IBOutlet weak var retryBtn: UIButton!
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
@IBOutlet weak var adBanner1: UIView!
@IBOutlet weak var adBanner2: UIView!
var vm = SplashVM()
// MARK: - View Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
/*
Show google ads with dispatch queue.
*/
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()
}
@IBAction func languageBtnTapped(_ sender: UIButton) {
PersistentStorage.shared.addOthersCount()
switch sender{
case hindiBtn:
UserDefaults.standard.setValue(LocalizedEnum.hindi.rawValue, forKey: K.UserDefaultsStruct.defaultLanguage)
AuthFunc.shareInstance.languageSelected = .hindi
case englishBtn:
UserDefaults.standard.setValue(LocalizedEnum.english.rawValue, forKey: K.UserDefaultsStruct.defaultLanguage)
AuthFunc.shareInstance.languageSelected = .english
default:
UserDefaults.standard.setValue(LocalizedEnum.english.rawValue, forKey: K.UserDefaultsStruct.defaultLanguage)
AuthFunc.shareInstance.languageSelected = .english
}
//flow is updated, now on language click call the guest login api
vm.guestLogin()
// let sb = UIStoryboard(name: K.StoryBoard.main, bundle: nil)
// let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.OnBoarding.onBoardVC) as! OnBoardVC
//
// // Create a CATransition instance
// let transition = CATransition()
// transition.duration = 0.3 // Set the duration of the animation
// transition.type = CATransitionType.fade // Set the type of animation to fade
//
// // Get the navigation controller
// guard let navigationController = navigationController else { return }
//
// // Perform the push animation with the custom transition
// navigationController.view.layer.add(transition, forKey: nil)
// navigationController.pushViewController(vc, animated: false)
}
@IBAction func retryBtnTapped(_ sender: UIButton) {
if AuthFunc.shareInstance.getUserType() == 3{
vm.startStopIndicator(start: true)
if AuthFunc.shareInstance.staticURLs == nil{
AuthFunc.shareInstance.getStaticURLs { [weak self] isDone in
guard let self else{return}
vm.startStopIndicator(start: false)
if isDone == true{
UIApplication.setRootView(SideMenuController.instantiate(from: .Home))
}else{
self.retryBtn.isHidden = false
}
}
}else{
vm.startStopIndicator(start: false)
UIApplication.setRootView(SideMenuController.instantiate(from: .Home))
}
}else{
vm.getUserData()
}
}
func animateImageScale() {
UIView.animate(withDuration: 3.0, delay: 0, options: [], animations: {
self.wokaLogo.transform = CGAffineTransform(scaleX: 1.8, y: 1.8)
}, completion: nil)
// let newConstant = wokaOriginY.constant - 50
Timer.scheduledTimer(withTimeInterval: 6, repeats: false) { [weak self] _ in
guard let self else{return}
/*
If user is loggined no need to shift the woka logo upside to new constant.
Directly Navigate user to home
*/
// vm.getVersionHistory()
/*
Check version history here
*/
vm.startStopIndicator(start: true)
vm.getVersionHistory()
// animateForward()
}
}
func animateForward(){
if AuthFunc.shareInstance.checkLogin(){
vm.getUserData()
return
}else{
//check if the static url data is fetched
if AuthFunc.shareInstance.staticURLs == nil{
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
self.wokaOriginY.constant = wokaOriginY.constant - 50
// Inform the layout system to update
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
}) {_ in
// Inform the stack view to update its layout
self.languageBtnStack.layoutIfNeeded()
}
}
}
}
override func viewDidLayoutSubviews() {
}
}
// MARK: - Google Ad Banner Delegate
extension SplashVC : GADBannerViewDelegate{
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
print("bannerViewDidReceiveAd")
bannerView.alpha = 0
bannerView.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
UIView.animate(withDuration: 0.5, animations: {
bannerView.alpha = 1
})
}
func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {
print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)")
}
func bannerViewDidRecordImpression(_ bannerView: GADBannerView) {
print("bannerViewDidRecordImpression")
}
func bannerViewWillPresentScreen(_ bannerView: GADBannerView) {
print("bannerViewWillPresentScreen")
}
func bannerViewWillDismissScreen(_ bannerView: GADBannerView) {
print("bannerViewWillDIsmissScreen")
}
func bannerViewDidDismissScreen(_ bannerView: GADBannerView) {
print("bannerViewDidDismissScreen")
}
}