Commit 22147bd3 authored by CZ1004's avatar CZ1004

广告接入第一版本

parent 29447c4e
......@@ -238,8 +238,6 @@
04CF31712DA7E78F001C87CA /* ChargeShow */,
);
name = ChargeShow;
packageProductDependencies = (
);
productName = ChargeShow;
productReference = 04CF316F2DA7E78F001C87CA /* ChargeShow.appex */;
productType = "com.apple.product-type.app-extension";
......@@ -255,6 +253,7 @@
B06228D82143041809F900CE /* [CP] Embed Pods Frameworks */,
04BD916E2D9D68AF00055CEB /* Embed Foundation Extensions */,
04BD7A3E2DA3B8F100A24C4B /* Embed ExtensionKit Extensions */,
75241895C9BA1036299CA526 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
......@@ -360,6 +359,23 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
75241895C9BA1036299CA526 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-PhoneManager/Pods-PhoneManager-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-PhoneManager/Pods-PhoneManager-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-PhoneManager/Pods-PhoneManager-resources.sh\"\n";
showEnvVarsInLog = 0;
};
B06228D82143041809F900CE /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
......
......@@ -8,6 +8,8 @@
import UIKit
import AppIntents
import Photos
import GoogleMobileAds
import UserMessagingPlatform
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
......@@ -38,9 +40,17 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// 获取价格
HomePayModel.share.fetchProducts()
// 初始化广告SDK
AdvManager.shared.initAdertisementSDK()
return true
}
func findHomeData(){
PhotoAndVideoMananger.getPrivacy {[weak self] status in
guard let self else {return}
......
//
// AdvManager.swift
// PhoneManager
//
// Created by edy on 2025/4/17.
//
import Foundation
import GoogleMobileAds
import UserMessagingPlatform
class AdvManager : NSObject,FullScreenContentDelegate {
static let shared : AdvManager = AdvManager()
var rewardedInterstitialAd: RewardedInterstitialAd?
/// 能请求广告
var canRequestAds: Bool {
return ConsentInformation.shared.canRequestAds
}
// 是否有权限
var isPrivacyOptionsRequired: Bool {
return ConsentInformation.shared.privacyOptionsRequirementStatus == .required
}
/// 初始化SDK
func initAdertisementSDK() {
// Initialize the Google Mobile Ads SDK.
MobileAds.shared.start()
// Request an ad.
Task {
await self.loadRewardedInterstitialAd()
}
}
func loadRewardedInterstitialAd() async {
do {
rewardedInterstitialAd = try await RewardedInterstitialAd.load(
with: "ca-app-pub-3940256099942544/6978759866", request: Request())
rewardedInterstitialAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load rewarded interstitial ad with error: \(error.localizedDescription)")
}
}
/// 开始显示
/// - Parameter completed: 准备完成后回调
func showRewardedInterstitialAd(vc:UIViewController) {
guard let ad = self.rewardedInterstitialAd else {
print("Ad wasn't ready")
return
}
ad.present(from: vc) {
let reward = ad.adReward
print(
"Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)"
)
}
}
// MARK: - GADFullScreenContentDelegate
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("Ad did present full screen content.")
}
func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("Ad failed to present full screen content with error \(error.localizedDescription).")
self.rewardedInterstitialAd = nil
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("Ad did dismiss full screen content.")
self.rewardedInterstitialAd = nil
// Task {
// await self.loadRewardedInterstitialAd()
// }
}
}
//
// AdvViewController.swift
// PhoneManager
//
// Created by edy on 2025/4/17.
//
import Foundation
import GoogleMobileAds
import GoogleMobileAds
class AdvViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
AdvManager.shared.showRewardedInterstitialAd(vc: self)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.view.isUserInteractionEnabled = true
}
}
......@@ -85,6 +85,12 @@ class HomeNavView:UIView {
let homeNavViewModel = HomeNavViewModel()
let settingViewController = SettingViewController()
homeNavViewModel.pushToDetailController(currentView: self, destnationController: settingViewController)
// let homeNavViewModel = HomeNavViewModel()
// let vc = AdvViewController()
// vc.modalPresentationStyle = .fullScreen
// self.responderViewController()?.present(vc, animated: true)
//
}
@objc private func proBtnClick() {
......
......@@ -6,6 +6,8 @@
//
import Foundation
import GoogleMobileAds
class Singleton {
// 使用静态常量来保存单例实例
static let shared = Singleton()
......@@ -13,5 +15,14 @@ class Singleton {
private init() {}
var resourceModel : [ResourceModel] = []
// 进入页面之后30秒
var thirtySecondsAfterInAPP : Bool = false
// 广告(当上一次广告结束之后需要重新请求下下次广告的内容)
var rewardedInterstitialAd: RewardedInterstitialAd?
}
......@@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSUserTrackingUsageDescription</key>
<string>此应用会使用广告标识符来提供个性化广告。</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
......@@ -21,5 +23,206 @@
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
</dict>
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</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>2fnua5tdw4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ydx93a7ass.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>mlmmfzh3r3.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>su67r6k2v3.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>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>a2p9lx4jpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>22mmun2rn5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>44jx6755aq.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>k674qkevps.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>kbmxgpxpgc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>uw77j35x4d.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>tl55sbb4fm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>c3frkrj4fj.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>3rd42ekr43.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>97r2b46745.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qcr597p9d.skadnetwork</string>
</dict>
</array>
</dict>
</plist>
......@@ -12,6 +12,7 @@ target 'PhoneManager' do
pod 'HXPhotoPicker'
pod 'OpenCV'
pod 'SVProgressHUD'
pod 'Google-Mobile-Ads-SDK'
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment