Swift3 - tkgstrator/Salmonia3 GitHub Wiki

UserDafaults全削除

UserDefaults.standard.removePersistentDomain(forName: Bundle.main.bundleIdentifier!)

AppStorage

配列などが保存できない問題はあるが、UserDefaultsよりも便利なので積極的に使うべき

UserDefaultsのWrapperなのでUserDefaultsを削除すればAppStorageの中身も消える

@AppStorage("isFirstLaunch") var isFirstLaunch: Bool = true

isFirstLaunch を宣言しておいて初回起動だけログイン画面を表示するようなこともできる

Admob

広告を表示するビューはSwiftUI向けにリリースされていないのでUIViewControllerRepresentableを利用する

import Foundation
import SwiftUI
import UIKit
import GoogleMobileAds

struct UIGoogleMobileAdsView: UIViewControllerRepresentable {
    
    func makeUIViewController(context: Context) -> UIViewController {
        GADMobileAds.sharedInstance().start(completionHandler: nil)
        
        let view = GADBannerView(adSize: kGADAdSizeBanner)
        let viewController = UIViewController()
        #if DEBUG
        view.adUnitID = "ca-app-pub-3940256099942544/2934735716"
        #else
        view.adUnitID = "ca-app-pub-3940256099942544/2934735716"
        #endif
        view.rootViewController = viewController
        viewController.view.addSubview(view)
        viewController.view.frame = CGRect(origin: .zero, size: kGADAdSizeBanner.size)
        view.load(GADRequest())
        return viewController
    }
    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
    
}

struct GoobleMobileAdsView: View {
    var body: some View {
        UIGoogleMobileAdsView()
            .frame(width: 320, height: 50)
    }
}

DebugビルドとReleaseビルドでUnitIDを切り替えておかないとAdmobの利用規約違反でBANされる可能性がある