From 905a37df1851d1ceccccae1afc2057dbc16e2200 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=89=E1=85=A9=E1=86=BC=E1=84=8B=E1=85=A7=E1=86=BC?= =?UTF-8?q?=E1=84=86=E1=85=A9?= Date: Tue, 5 Dec 2023 15:12:31 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20opening=20=EA=B4=91=EA=B3=A0=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Targets/D3N/Sources/App/AppDelegate.swift | 16 +- Targets/D3N/Sources/Config/D3N-Info.plist | 221 ++++++++++++++++-- Targets/D3N/Sources/Config/Environment.swift | 4 + .../D3N/Sources/Core/Admob/AppOpenAds.swift | 55 +++++ .../Feature/MainTab/MainTabStore.swift | 4 + Tuist/Dependencies.swift | 3 +- .../Project+Templates.swift | 1 + 7 files changed, 284 insertions(+), 20 deletions(-) create mode 100644 Targets/D3N/Sources/Core/Admob/AppOpenAds.swift diff --git a/Targets/D3N/Sources/App/AppDelegate.swift b/Targets/D3N/Sources/App/AppDelegate.swift index 093f7df..8b82c96 100644 --- a/Targets/D3N/Sources/App/AppDelegate.swift +++ b/Targets/D3N/Sources/App/AppDelegate.swift @@ -8,14 +8,24 @@ import UIKit import SwiftUI -import FirebaseCore - import AppTrackingTransparency +import FirebaseCore +import GoogleMobileAds + class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + if ATTrackingManager.trackingAuthorizationStatus == .notDetermined { + + } else { + ATTrackingManager.requestTrackingAuthorization { status in + GADMobileAds.sharedInstance().start(completionHandler: nil) + } + } + FirebaseApp.configure() - return true + + return true } } diff --git a/Targets/D3N/Sources/Config/D3N-Info.plist b/Targets/D3N/Sources/Config/D3N-Info.plist index a335ffb..7f549c8 100644 --- a/Targets/D3N/Sources/Config/D3N-Info.plist +++ b/Targets/D3N/Sources/Config/D3N-Info.plist @@ -11,22 +11,6 @@ NSAllowsArbitraryLoads - SERVER_HOST - $(SERVER_HOST) - REWARDED_ID - - - NSMessage - - NSMenuItem - - default - - - - - OPENAI_API_KEY - $(OPENAI_API_KEY) CFBundlePackageType APPL Primary App Icon Set Name @@ -47,5 +31,210 @@ D3N CFBundleName $(PRODUCT_NAME) + SERVER_HOST + $(SERVER_HOST) + APP_OPEN_ADS_ID + $(APP_OPEN_ADS_ID) + GADApplicationIdentifier + ca-app-pub-2392187154020666~4251839269 + SKAdNetworkItems + + + SKAdNetworkIdentifier + cstr6suwn9.skadnetwork + + + SKAdNetworkIdentifier + 4fzdc2evr5.skadnetwork + + + SKAdNetworkIdentifier + 4pfyvq9l8r.skadnetwork + + + SKAdNetworkIdentifier + 2fnua5tdw4.skadnetwork + + + SKAdNetworkIdentifier + ydx93a7ass.skadnetwork + + + SKAdNetworkIdentifier + 5a6flpkh64.skadnetwork + + + SKAdNetworkIdentifier + p78axxw29g.skadnetwork + + + SKAdNetworkIdentifier + v72qych5uu.skadnetwork + + + SKAdNetworkIdentifier + ludvb6z3bs.skadnetwork + + + SKAdNetworkIdentifier + cp8zw746q7.skadnetwork + + + SKAdNetworkIdentifier + 3sh42y64q3.skadnetwork + + + SKAdNetworkIdentifier + c6k4g5qg8m.skadnetwork + + + SKAdNetworkIdentifier + s39g8k73mm.skadnetwork + + + SKAdNetworkIdentifier + 3qy4746246.skadnetwork + + + SKAdNetworkIdentifier + f38h382jlk.skadnetwork + + + SKAdNetworkIdentifier + hs6bdukanm.skadnetwork + + + SKAdNetworkIdentifier + v4nxqhlyqp.skadnetwork + + + SKAdNetworkIdentifier + wzmmz9fp6w.skadnetwork + + + SKAdNetworkIdentifier + yclnxrl5pm.skadnetwork + + + SKAdNetworkIdentifier + t38b2kh725.skadnetwork + + + SKAdNetworkIdentifier + 7ug5zh24hu.skadnetwork + + + SKAdNetworkIdentifier + gta9lk7p23.skadnetwork + + + SKAdNetworkIdentifier + vutu7akeur.skadnetwork + + + SKAdNetworkIdentifier + y5ghdn5j9k.skadnetwork + + + SKAdNetworkIdentifier + n6fk4nfna4.skadnetwork + + + SKAdNetworkIdentifier + v9wttpbfk9.skadnetwork + + + SKAdNetworkIdentifier + n38lu8286q.skadnetwork + + + SKAdNetworkIdentifier + 47vhws6wlr.skadnetwork + + + SKAdNetworkIdentifier + kbd757ywx3.skadnetwork + + + SKAdNetworkIdentifier + 9t245vhmpl.skadnetwork + + + SKAdNetworkIdentifier + eh6m2bh4zr.skadnetwork + + + SKAdNetworkIdentifier + a2p9lx4jpn.skadnetwork + + + SKAdNetworkIdentifier + 22mmun2rn5.skadnetwork + + + SKAdNetworkIdentifier + 4468km3ulz.skadnetwork + + + SKAdNetworkIdentifier + 2u9pt9hc89.skadnetwork + + + SKAdNetworkIdentifier + 8s468mfl3y.skadnetwork + + + SKAdNetworkIdentifier + klf5c3l5u5.skadnetwork + + + SKAdNetworkIdentifier + ppxm28t8ap.skadnetwork + + + SKAdNetworkIdentifier + ecpz2srf59.skadnetwork + + + SKAdNetworkIdentifier + uw77j35x4d.skadnetwork + + + SKAdNetworkIdentifier + pwa73g5rt2.skadnetwork + + + SKAdNetworkIdentifier + mlmmfzh3r3.skadnetwork + + + SKAdNetworkIdentifier + 578prtvx9j.skadnetwork + + + SKAdNetworkIdentifier + 4dzt52r2t5.skadnetwork + + + SKAdNetworkIdentifier + e5fvkxwrpn.skadnetwork + + + SKAdNetworkIdentifier + 8c4e2ghe7u.skadnetwork + + + SKAdNetworkIdentifier + zq492l623r.skadnetwork + + + SKAdNetworkIdentifier + 3rd42ekr43.skadnetwork + + + SKAdNetworkIdentifier + 3qcr597p9d.skadnetwork + + diff --git a/Targets/D3N/Sources/Config/Environment.swift b/Targets/D3N/Sources/Config/Environment.swift index 6434b94..5d5698c 100644 --- a/Targets/D3N/Sources/Config/Environment.swift +++ b/Targets/D3N/Sources/Config/Environment.swift @@ -12,4 +12,8 @@ public struct Environment { public static var baseURL: String { return Bundle.main.infoDictionary?["SERVER_HOST"] as? String ?? "" } + + public static var appOpenAdsId: String { + return Bundle.main.infoDictionary?["APP_OPEN_ADS_ID"] as? String ?? "" + } } diff --git a/Targets/D3N/Sources/Core/Admob/AppOpenAds.swift b/Targets/D3N/Sources/Core/Admob/AppOpenAds.swift new file mode 100644 index 0000000..d79aa16 --- /dev/null +++ b/Targets/D3N/Sources/Core/Admob/AppOpenAds.swift @@ -0,0 +1,55 @@ +// +// Opening.swift +// D3N +// +// Created by 송영모 on 12/5/23. +// Copyright © 2023 sju. All rights reserved. +// + +import SwiftUI +import GoogleMobileAds +import UIKit + +public final class AppOpenAds: NSObject { + let id: String + var ad: GADAppOpenAd? + + var completion: (() -> Void)? + + public init(id: String) { + self.id = id + super.init() + load() + } + + private func load(){ + let request = GADRequest() + + GADAppOpenAd.load( + withAdUnitID: id, + request: request, + completionHandler: { [self] ad, error in + if let error = error { + print("Failed to load rewarded ad with error: \(error.localizedDescription)") + return + } + print("Rewarded ad loaded.") + self.ad = ad + self.show { } + } + ) + } + + public func show(completion: @escaping () -> Void){ + self.completion = completion + + if let ad = ad, + let root = (UIApplication.shared.connectedScenes.first as? UIWindowScene)?.windows.first?.rootViewController { + ad.present(fromRootViewController: root) + self.completion?() + } else { + print("Ad wasn't ready") + } + } +} + diff --git a/Targets/D3N/Sources/Feature/MainTab/MainTabStore.swift b/Targets/D3N/Sources/Feature/MainTab/MainTabStore.swift index eee8304..b7e7718 100644 --- a/Targets/D3N/Sources/Feature/MainTab/MainTabStore.swift +++ b/Targets/D3N/Sources/Feature/MainTab/MainTabStore.swift @@ -9,6 +9,8 @@ import Foundation import ComposableArchitecture +import GoogleMobileAds + enum MainScene: Hashable { case question } @@ -20,6 +22,8 @@ struct MainTabStore: Reducer { var today: TodayNewsNavigationStackStore.State? = .init() var allNews: AllNewsNavigationStackStore.State? = .init() var myPage: MyPageNavigationStackStore.State? = .init() + + var appOpenAds: AppOpenAds = .init(id: Environment.appOpenAdsId) } enum Action: BindableAction, Equatable { diff --git a/Tuist/Dependencies.swift b/Tuist/Dependencies.swift index 0ed5f19..46b83f7 100644 --- a/Tuist/Dependencies.swift +++ b/Tuist/Dependencies.swift @@ -10,7 +10,8 @@ import ProjectDescription let spm = SwiftPackageManagerDependencies([ .remote(url: "https://github.com/pointfreeco/swift-composable-architecture", requirement: .upToNextMajor(from: "1.2.0")), .remote(url: "https://github.com/Moya/Moya.git", requirement: .upToNextMajor(from: "15.0.0")), - .remote(url: "https://github.com/firebase/firebase-ios-sdk", requirement: .upToNextMajor(from: "10.15.0")) + .remote(url: "https://github.com/firebase/firebase-ios-sdk", requirement: .upToNextMajor(from: "10.15.0")), + .remote(url: "https://github.com/googleads/swift-package-manager-google-mobile-ads", requirement: .upToNextMajor(from: "10.9.0")) ]) let dependencies = Dependencies( diff --git a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift index 43a875a..06cffba 100644 --- a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift +++ b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift @@ -14,6 +14,7 @@ extension Project { .external(name: "ComposableArchitecture"), .external(name: "Moya"), .external(name: "FirebaseAnalytics"), + .external(name: "GoogleMobileAds") ] var targets = makeAppTargets( From 0a26d6a95cfbcb7664775f74f355b172291fcf95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=89=E1=85=A9=E1=86=BC=E1=84=8B=E1=85=A7=E1=86=BC?= =?UTF-8?q?=E1=84=86=E1=85=A9?= Date: Tue, 5 Dec 2023 15:13:02 +0900 Subject: [PATCH 2/3] feat: version 2.7.0 --- Targets/D3N/Sources/Config/D3N-Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Targets/D3N/Sources/Config/D3N-Info.plist b/Targets/D3N/Sources/Config/D3N-Info.plist index 7f549c8..9c465e0 100644 --- a/Targets/D3N/Sources/Config/D3N-Info.plist +++ b/Targets/D3N/Sources/Config/D3N-Info.plist @@ -22,9 +22,9 @@ CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleShortVersionString - 2.5 + 2.7 CFBundleVersion - 2.5.0 + 2.7.0 UILaunchStoryboardName Launch CFBundleDisplayName From 085356db2a01075887885d1e79e988cb75b3929a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=89=E1=85=A9=E1=86=BC=E1=84=8B=E1=85=A7=E1=86=BC?= =?UTF-8?q?=E1=84=86=E1=85=A9?= Date: Thu, 7 Dec 2023 15:24:21 +0900 Subject: [PATCH 3/3] build: version up --- Targets/D3N/Sources/Config/D3N-Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Targets/D3N/Sources/Config/D3N-Info.plist b/Targets/D3N/Sources/Config/D3N-Info.plist index 9c465e0..62900ef 100644 --- a/Targets/D3N/Sources/Config/D3N-Info.plist +++ b/Targets/D3N/Sources/Config/D3N-Info.plist @@ -22,9 +22,9 @@ CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleShortVersionString - 2.7 + 2.7.1 CFBundleVersion - 2.7.0 + 2.7.1 UILaunchStoryboardName Launch CFBundleDisplayName