SwiftUI로 AdMob 대응(배너편)
요약
UIViewControllerRepresentable을 사용하여 SwiftUI에서 좋은 느낌에 배너가 포함된 화면을 표시합니다.
소개
SwiftUI에서 AdMob 배너를 표시하고 싶었으므로 구현해 보았습니다.
AdMob의 도입이 끝난 것이 전제가 됩니다.
htps : //에서 ゔぇぺぺrs. 오, ぇ. 이 m / 아 d도 b / 이오 s / 쿠이 ck-s rt? hl = 그럼
결과
이런 식으로 프리뷰로 배너를 표시할 수 있었습니다.
리포지토리
개요
SwiftUI에서 AdMob을 지원합니다.
시작에 배너를 표시합니다.
Life Cycle SwiftUI App 지원
리포지토리에서 프로젝트는 SwiftUI App의 프로젝트가 됩니다.
AdMob은 AppDelegate에서 GADMobileAds.sharedInstance().start(completionHandler: nil)
를 초기화해야하기 때문에 시간이 필요합니다.
AppDelegate를 만들고 프로젝트의 App에 UIApplicationDelegateAdaptor
를 추가하여 AppDelegate 내에서 초기화합니다.
@main
struct SwiftUIAdMobApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
UIViewControllerRepresentable로 광고 표시용 UIViewController 만들기
AdMob 배너에는 광고 처리를 위한 전체 화면 rootViewController가 필요합니다.
SwiftUI 단독으로는 UIViewController를 준비할 수 없기 때문에, 이것을 UIViewControllerRepresentable 경유로 준비합니다.
ContainedAdViewController에서 UIViewControllerRepresentable에 적합한 처리를 작성합니다.makeUIViewController
에서 제공하는 UIViewController 는 Storyboard 에서 준비했습니다.
struct ContainedAdViewController<Content: View>: UIViewControllerRepresentable {
let rootView: Content
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
func makeUIViewController(context: Context) -> UIViewController {
let adViewController: AdViewController = UIStoryboard(name: "AdViewController", bundle: nil).instantiateInitialViewController()!
adViewController.rootView = AnyView(rootView)
return adViewController
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
}
typealias UIViewControllerType = UIViewController
class Coordinator: NSObject {
var parent: ContainedAdViewController
init(_ containedAdViewController: ContainedAdViewController) {
parent = containedAdViewController
}
}
}
Storyboard의 초기 표시는 AdViewController라고 하는 UIViewController 상속 클래스로, 그 내부에서는 SwiftUI를 표시하는 UIHostingController 컨테이너와 그 아래에서 표시를 하는 배너를 포함하고 있습니다.
광고 배너에 대한 rootViewController는 AdViewController입니다.
SwiftUI 측 표시
SwiftUI 측은 ContainedAdViewController의 rootView에 표시하고 싶은 View를 구현하면 OK입니다.
struct ContentView: View {
var body: some View {
ContainedAdViewController(rootView:
Text("Hello, world!").padding()
)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
동작
볼 수 있었습니다.
위의 Repository 코드는 Scene도 지원하므로 여러 화면에서도 적응형 광고를 볼 수 있습니다.
Reference
이 문제에 관하여(SwiftUI로 AdMob 대응(배너편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hyuga_amazia/items/c19fbce63a12231b85d5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SwiftUI에서 AdMob 배너를 표시하고 싶었으므로 구현해 보았습니다.
AdMob의 도입이 끝난 것이 전제가 됩니다.
htps : //에서 ゔぇぺぺrs. 오, ぇ. 이 m / 아 d도 b / 이오 s / 쿠이 ck-s rt? hl = 그럼
결과
이런 식으로 프리뷰로 배너를 표시할 수 있었습니다.
리포지토리
개요
SwiftUI에서 AdMob을 지원합니다.
시작에 배너를 표시합니다.
Life Cycle SwiftUI App 지원
리포지토리에서 프로젝트는 SwiftUI App의 프로젝트가 됩니다.
AdMob은 AppDelegate에서 GADMobileAds.sharedInstance().start(completionHandler: nil)
를 초기화해야하기 때문에 시간이 필요합니다.
AppDelegate를 만들고 프로젝트의 App에 UIApplicationDelegateAdaptor
를 추가하여 AppDelegate 내에서 초기화합니다.
@main
struct SwiftUIAdMobApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
UIViewControllerRepresentable로 광고 표시용 UIViewController 만들기
AdMob 배너에는 광고 처리를 위한 전체 화면 rootViewController가 필요합니다.
SwiftUI 단독으로는 UIViewController를 준비할 수 없기 때문에, 이것을 UIViewControllerRepresentable 경유로 준비합니다.
ContainedAdViewController에서 UIViewControllerRepresentable에 적합한 처리를 작성합니다.makeUIViewController
에서 제공하는 UIViewController 는 Storyboard 에서 준비했습니다.
struct ContainedAdViewController<Content: View>: UIViewControllerRepresentable {
let rootView: Content
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
func makeUIViewController(context: Context) -> UIViewController {
let adViewController: AdViewController = UIStoryboard(name: "AdViewController", bundle: nil).instantiateInitialViewController()!
adViewController.rootView = AnyView(rootView)
return adViewController
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
}
typealias UIViewControllerType = UIViewController
class Coordinator: NSObject {
var parent: ContainedAdViewController
init(_ containedAdViewController: ContainedAdViewController) {
parent = containedAdViewController
}
}
}
Storyboard의 초기 표시는 AdViewController라고 하는 UIViewController 상속 클래스로, 그 내부에서는 SwiftUI를 표시하는 UIHostingController 컨테이너와 그 아래에서 표시를 하는 배너를 포함하고 있습니다.
광고 배너에 대한 rootViewController는 AdViewController입니다.
SwiftUI 측 표시
SwiftUI 측은 ContainedAdViewController의 rootView에 표시하고 싶은 View를 구현하면 OK입니다.
struct ContentView: View {
var body: some View {
ContainedAdViewController(rootView:
Text("Hello, world!").padding()
)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
동작
볼 수 있었습니다.
위의 Repository 코드는 Scene도 지원하므로 여러 화면에서도 적응형 광고를 볼 수 있습니다.
Reference
이 문제에 관하여(SwiftUI로 AdMob 대응(배너편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hyuga_amazia/items/c19fbce63a12231b85d5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
개요
SwiftUI에서 AdMob을 지원합니다.
시작에 배너를 표시합니다.
Life Cycle SwiftUI App 지원
리포지토리에서 프로젝트는 SwiftUI App의 프로젝트가 됩니다.
AdMob은 AppDelegate에서 GADMobileAds.sharedInstance().start(completionHandler: nil)
를 초기화해야하기 때문에 시간이 필요합니다.
AppDelegate를 만들고 프로젝트의 App에 UIApplicationDelegateAdaptor
를 추가하여 AppDelegate 내에서 초기화합니다.
@main
struct SwiftUIAdMobApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
UIViewControllerRepresentable로 광고 표시용 UIViewController 만들기
AdMob 배너에는 광고 처리를 위한 전체 화면 rootViewController가 필요합니다.
SwiftUI 단독으로는 UIViewController를 준비할 수 없기 때문에, 이것을 UIViewControllerRepresentable 경유로 준비합니다.
ContainedAdViewController에서 UIViewControllerRepresentable에 적합한 처리를 작성합니다.makeUIViewController
에서 제공하는 UIViewController 는 Storyboard 에서 준비했습니다.
struct ContainedAdViewController<Content: View>: UIViewControllerRepresentable {
let rootView: Content
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
func makeUIViewController(context: Context) -> UIViewController {
let adViewController: AdViewController = UIStoryboard(name: "AdViewController", bundle: nil).instantiateInitialViewController()!
adViewController.rootView = AnyView(rootView)
return adViewController
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
}
typealias UIViewControllerType = UIViewController
class Coordinator: NSObject {
var parent: ContainedAdViewController
init(_ containedAdViewController: ContainedAdViewController) {
parent = containedAdViewController
}
}
}
Storyboard의 초기 표시는 AdViewController라고 하는 UIViewController 상속 클래스로, 그 내부에서는 SwiftUI를 표시하는 UIHostingController 컨테이너와 그 아래에서 표시를 하는 배너를 포함하고 있습니다.
광고 배너에 대한 rootViewController는 AdViewController입니다.
SwiftUI 측 표시
SwiftUI 측은 ContainedAdViewController의 rootView에 표시하고 싶은 View를 구현하면 OK입니다.
struct ContentView: View {
var body: some View {
ContainedAdViewController(rootView:
Text("Hello, world!").padding()
)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
동작
볼 수 있었습니다.
위의 Repository 코드는 Scene도 지원하므로 여러 화면에서도 적응형 광고를 볼 수 있습니다.
Reference
이 문제에 관하여(SwiftUI로 AdMob 대응(배너편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hyuga_amazia/items/c19fbce63a12231b85d5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
@main
struct SwiftUIAdMobApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
struct ContainedAdViewController<Content: View>: UIViewControllerRepresentable {
let rootView: Content
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
func makeUIViewController(context: Context) -> UIViewController {
let adViewController: AdViewController = UIStoryboard(name: "AdViewController", bundle: nil).instantiateInitialViewController()!
adViewController.rootView = AnyView(rootView)
return adViewController
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
}
typealias UIViewControllerType = UIViewController
class Coordinator: NSObject {
var parent: ContainedAdViewController
init(_ containedAdViewController: ContainedAdViewController) {
parent = containedAdViewController
}
}
}
struct ContentView: View {
var body: some View {
ContainedAdViewController(rootView:
Text("Hello, world!").padding()
)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
볼 수 있었습니다.
위의 Repository 코드는 Scene도 지원하므로 여러 화면에서도 적응형 광고를 볼 수 있습니다.
Reference
이 문제에 관하여(SwiftUI로 AdMob 대응(배너편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hyuga_amazia/items/c19fbce63a12231b85d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)