Skip to content

Commit

Permalink
feat: opening 광고 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
mooyoung2309 committed Dec 5, 2023
1 parent 8ef6fa4 commit 905a37d
Show file tree
Hide file tree
Showing 7 changed files with 284 additions and 20 deletions.
16 changes: 13 additions & 3 deletions Targets/D3N/Sources/App/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}
221 changes: 205 additions & 16 deletions Targets/D3N/Sources/Config/D3N-Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,6 @@
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>SERVER_HOST</key>
<string>$(SERVER_HOST)</string>
<key>REWARDED_ID</key>
<array>
<dict>
<key>NSMessage</key>
<string></string>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string></string>
</dict>
</dict>
</array>
<key>OPENAI_API_KEY</key>
<string>$(OPENAI_API_KEY)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>Primary App Icon Set Name</key>
Expand All @@ -47,5 +31,210 @@
<string>D3N</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>SERVER_HOST</key>
<string>$(SERVER_HOST)</string>
<key>APP_OPEN_ADS_ID</key>
<string>$(APP_OPEN_ADS_ID)</string>
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-2392187154020666~4251839269</string>
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4fzdc2evr5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4pfyvq9l8r.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2fnua5tdw4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ydx93a7ass.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5a6flpkh64.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>p78axxw29g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v72qych5uu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ludvb6z3bs.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cp8zw746q7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3sh42y64q3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>c6k4g5qg8m.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>s39g8k73mm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qy4746246.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>f38h382jlk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hs6bdukanm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v4nxqhlyqp.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>wzmmz9fp6w.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>yclnxrl5pm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>t38b2kh725.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7ug5zh24hu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gta9lk7p23.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>vutu7akeur.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>y5ghdn5j9k.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n6fk4nfna4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v9wttpbfk9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n38lu8286q.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>47vhws6wlr.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>kbd757ywx3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9t245vhmpl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>eh6m2bh4zr.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a2p9lx4jpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>22mmun2rn5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4468km3ulz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2u9pt9hc89.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8s468mfl3y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>klf5c3l5u5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ppxm28t8ap.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ecpz2srf59.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>uw77j35x4d.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>pwa73g5rt2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mlmmfzh3r3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>578prtvx9j.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4dzt52r2t5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>e5fvkxwrpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8c4e2ghe7u.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>zq492l623r.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3rd42ekr43.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qcr597p9d.skadnetwork</string>
</dict>
</array>
</dict>
</plist>
4 changes: 4 additions & 0 deletions Targets/D3N/Sources/Config/Environment.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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 ?? ""
}
}
55 changes: 55 additions & 0 deletions Targets/D3N/Sources/Core/Admob/AppOpenAds.swift
Original file line number Diff line number Diff line change
@@ -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")
}
}
}

4 changes: 4 additions & 0 deletions Targets/D3N/Sources/Feature/MainTab/MainTabStore.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import Foundation

import ComposableArchitecture

import GoogleMobileAds

enum MainScene: Hashable {
case question
}
Expand All @@ -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 {
Expand Down
3 changes: 2 additions & 1 deletion Tuist/Dependencies.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
1 change: 1 addition & 0 deletions Tuist/ProjectDescriptionHelpers/Project+Templates.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ extension Project {
.external(name: "ComposableArchitecture"),
.external(name: "Moya"),
.external(name: "FirebaseAnalytics"),
.external(name: "GoogleMobileAds")
]

var targets = makeAppTargets(
Expand Down

0 comments on commit 905a37d

Please sign in to comment.