
Xcode15で作成したアプリにAdMobを設定したい時のメモ
Xcode15でAdMobを導入した時のことを備忘録としてメモいたしました。
まずは、Google-Mobile-Ads-SDKをプロジェクトにインストールします。
1. CocoaPodsのインストール
もしまだCocoaPodsをインストールしていない場合は、Terminalを開いて以下のコマンドを実行してください:
$ sudo gem install cocoapods
2. Podfileの作成
Xcodeプロジェクトのルートディレクトリに移動します。そして、以下のコマンドを実行してPodfileを作成します:
$ pod init
3. Podfileの編集
作成されたPodfileをテキストエディタで開き、以下のようにGoogle-Mobile-Ads-SDKを追加します:
# Uncomment the next line to define a global platform for your project
# platform :ios, '14'
target 'XXXXXXXXXX' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for YourProjectName
pod 'Google-Mobile-Ads-SDK'
end
4. ライブラリのインストール
再びTerminalを開き、以下のコマンドを実行してライブラリをインストールします:
$ pod install
5. .xcworkspaceファイルを開く
pod installの後、.xcworkspaceファイルが生成されます。
これからは、この.xcworkspaceファイルを使用してプロジェクトを開きます。
.xcodeprojファイルではなく、この新しいファイルを使用することを忘れないでください。
これで、Google-Mobile-Ads-SDKがプロジェクトに追加されました。
公式のドキュメントやサンプルを参照して、広告の表示やその他の機能を実装してください。
お次に、Info.plistファイルを作成します。
Info.plistファイルは手動で作成するとXcodeが読み取ってくれないので、手動で作成せずXcode上で生成します。
下記の画像の部分のInfoタブのDocument Typesの**+**ボタンをクリックで生成されます。
生成されたInfo.plistに下記を設定します:
<?xml version="1.0" encoding="UTF-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>GADApplicationIdentifier</key>
<string>ca-app-pub-XXXXXXXXXXXXXXXXXXXX</string>
<key>SKAdNetworkItems</key>
<array>
<!-- SKAdNetworkIdentifier項目は長いため省略 -->
</array>
</dict>
</plist>
---
次にアプリのルートファイルに広告が適切に読み込まれるように追記していきます:
import SwiftUI
import GoogleMobileAds // 追加
// クラス追加
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
@main
struct xxxxApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
// 追加
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
---
そして広告表示用のstructを作成します:
import SwiftUI
import GoogleMobileAds
struct AdView: UIViewControllerRepresentable {
let viewWidth: CGFloat
private let bannerView = GADBannerView()
private let adUnitID = "ca-app-pub-xxxxxxxxxxx/xxxxxxxxxxxxx"
func makeUIViewController(context: Context) -> some UIViewController {
let bannerViewController = UIViewController()
bannerView.adUnitID = adUnitID
bannerView.rootViewController = bannerViewController
bannerViewController.view.addSubview(bannerView)
return bannerViewController
}
func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {
bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)
bannerView.load(GADRequest())
}
}
---
そしてアプリの広告を表示したい場所で広告用のstructを呼び出します:
GeometryReader { geometry in
AdView(viewWidth: geometry.size.width)
}.frame(height: 70)
---
これで設定は完了です。いざbuildします!
なんとbuildエラーでした。
Sandbox: rsync.samba(5675) deny(1) file-write-createという謎のエラーがでてしまいました。
エラー参考リンク
上記リンクによるとENABLE_USER_SCRIPT_SANDBOXINGを無効化する必要があるようです。
XcodeプロジェクトをVsCodeなどのエディタで開いて検索したところ、
xxApp/xxxApp.xcodeproj/project.pbxprojに**ENABLE_USER_SCRIPT_SANDBOXING = YES;**と記述があったのでNOに書き換えました:
// xxApp/xxxApp.xcodeproj/project.pbxprojより
ENABLE_USER_SCRIPT_SANDBOXING = NO; // 2箇所あるので両方とも変更しました
---
ではいざbuildです。
なんと無事にbuildが成功し広告が表示されました。毎回設定をわすれるのでメモできてよかったです。
--
ここまで、お読みくださりありがとうございました!















