質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

1408閲覧

AdMobの広告をつけようとCocoaPodsをインストールしたらエラーが出た。

AppDvl

総合スコア58

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/05/16 13:50

編集2019/05/16 14:11

CocoaPodsのエラーをなくし、広告を付けたい。

また、CocoaPodsが正しくインストールされているか確認方法をしりたい。

イメージ説明
testTimerを作り、うまく行ったので(特にエラーや警告なし)広告をつけようとAdMob(https://developers.google.com/admob/ios/quick-start?hl=ja#import_the_mobile_ads_sdk)公式サイトで手順を見ながらCocoaPodsをインストールしましたが、画像のようなエラーが出てうまくいきません。
一番したいのはエラーを修正して作業を続けることですが、無理なら最初からやり直す方法が知りたいです。
また、CocoaPodsが正しくインストールされているのか確認する方法があれば教えていただきたいです。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

framework not found Pods_testTimer

試したこと

○関係ありそうなフレームワークを追加してみましたが、改善はされませんでした。
○CocoaPodsを再度インストールしてみましたがだめでした。(ターミナルで再度pod install --repo-updateの実行)

補足情報(FW/ツールのバージョンなど)

初めて作ったアプリでいよいよ世の中に出せると思ったら今回のエラーで躓いています。
昨日と今日、頑張りましたが自力では無理なようです。
どなたかご教授お願いします。

// // ViewController.swift // testTimer // // Created by MBP13 on 2019/05/01. // Copyright © 2019 Tomoyuki Ashikari. All rights reserved. // import UIKit import AudioToolbox //バイブ用 import GoogleMobileAds class ViewController: UIViewController, GADBannerViewDelegate { var userTimer = 0 var userSecTimer = 0 var count = 0.0 var reUserTime = 0 var reUserSecTime = 0 var reCount = 0.0 var elapsedTime = 0.0 var c = 0 var timer = Timer() //var startDate = Date() //2019-05-01 12:55:48 +0000で取得 var stopDate = Date() var startDate = Date() var bannerView: GADBannerView!//広告用 @IBOutlet weak var minButton: UIButton! @IBOutlet weak var secButton: UIButton! @IBOutlet weak var reset: UIButton! @IBOutlet weak var startButton: UIButton! @IBOutlet weak var stopButton: UIButton! @IBOutlet weak var timerLabel: UILabel! var secLabel:UILabel! var msecLabel:UILabel! func addBannerViewToView(_ bannerView: GADBannerView) {//広告用 bannerView.translatesAutoresizingMaskIntoConstraints = false//広告用 view.addSubview(bannerView)//広告用 view.addConstraints(//広告用 [NSLayoutConstraint(item: bannerView,//広告用 attribute: .bottom,//広告用 relatedBy: .equal,//広告用 toItem:view.safeAreaLayoutGuide,//広告用 attribute: .bottom,//広告用 multiplier: 1,//広告用 constant: 0),//広告用 NSLayoutConstraint(item: bannerView,//広告用 attribute: .centerX,//広告用 relatedBy: .equal,//広告用 toItem: view,//広告用 attribute: .centerX,//広告用 multiplier: 1,//広告用 constant: 0)//広告用 ])//広告用 }//広告用 override func viewDidLoad() { super.viewDidLoad() //startDates配列を再び読み込みset if userDefaults.object(forKey: "startDates") != nil { startDates = userDefaults.array(forKey: "startDates") as! [Date] //配列startDatesに呼び出し } bannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)//広告用 addBannerViewToView(bannerView)//広告用 bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"//広告用 bannerView.rootViewController = self//広告用 bannerView.load(GADRequest())//広告用 bannerView.delegate = self//広告用 } //バイブ関数 func vibrate() { AudioServicesPlaySystemSound( 1011 ) } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) if count == 0.0 { setButtonEnabled(true, true, false, false, false) }else if timer.isValid == false { //タイマーが止まっていたら setButtonEnabled(false, false, true, false, true) }else{ setButtonEnabled(false, false, false, true, true) } // setAdjustsImageWhenDisabled() //画面が表示されたらタイマーを動かす // createTimer() } //タイマーの処理 @objc func timerAction(sender:Timer){ var minCount = Int(count)/60 var secCount = Int(count) % 60 var msecCount = Int((count - Double(minCount * 60) - Double(secCount)) * 100.0) timerLabel.text = String(format:"%02d:%02d:%02d",minCount,secCount,msecCount)//%02dで整数を表示 // secLabel.text = String(secCount) // msecLabel.text = String(msecCount) count -= 0.1 if count <= 0.0{ sender.invalidate() //止める setButtonEnabled(true, true, false, false, false) userTimer = 0 userSecTimer = 0 elapsedTime = 0 count = 0 minCount = 0 secCount = 0 msecCount = 0 timerLabel.text = String(format:"%02d:%02d:%02d",0,0,0) vibrate()// バイブ起動 AudioServicesPlaySystemSoundWithCompletion(1013) { //サウンドが鳴り終わった後の処理を記述 } //再スタート用 let minCount = Int(self.reCount)/60 let secCount = Int(self.reCount) % 60 let msecCount = Int((self.reCount - Double(minCount * 60) - Double(secCount)) * 100.0) self.timerLabel.text = String(format:"%02d:%02d:%02d",minCount,secCount,msecCount)//%02dで整数を表示 setButtonEnabled(true,true,true,false,true) } } func setButtonEnabled(_ minButton:Bool,_ secButton:Bool,_ startButton:Bool,_ stopButton:Bool,_ reset:Bool){ //bool型の変数をisEnabledに代入 self.minButton.isEnabled = minButton self.secButton.isEnabled = secButton self.startButton.isEnabled = startButton self.stopButton.isEnabled = stopButton self.reset.isEnabled = reset } //非選択の色を変えない、ボタンの設定でカスタムにしないと機能しない // func setAdjustsImageWhenDisabled(){ // self.minButton.adjustsImageWhenDisabled = false // self.secButton.adjustsImageWhenDisabled = false // self.startButton.adjustsImageWhenDisabled = false // self.stopButton.adjustsImageWhenDisabled = false // self.reset.adjustsImageWhenDisabled = false // } @IBAction func minButton(_ sender: Any) { setButtonEnabled(true, true, true, false, true) // setAdjustsImageWhenDisabled() if reCount > 0{ userTimer = reUserTime userSecTimer = reUserSecTime } userTimer += 1 reUserTime += 1 timerLabel.text = String(format:"%02d:%02d:%02d",userTimer,userSecTimer,0) } @IBAction func secButton(_ sender: Any) { setButtonEnabled(true, true, true, false, true) // setAdjustsImageWhenDisabled() if reCount > 0{ userTimer = reUserTime userSecTimer = reUserSecTime } userSecTimer += 10 reUserSecTime += 10 timerLabel.text = String(format:"%02d:%02d:%02d",userTimer,userSecTimer,0) } @IBAction func startButton(_ sender: Any) { setButtonEnabled(false,false,false,true,false) // setAdjustsImageWhenDisabled() stopDate=Date() // 第1引数は差分を表現する形式を指定します 時間の差を計算する let dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second, .nanosecond], from: startDate, to: stopDate) if Int(dateComponents.second!) <= 2 { //2秒以内は配列に送らずにセットにカウントしない }else{ //広域配列startDatesに追加していく startDates.append(Date()) userDefaults.set(startDates, forKey:"startDates")//永続化で保存 // print("startDatesで永続化したデータは") // print(startDates) } //タイマーの作成 func createTimer(){ print(count) print(reCount) if reCount > 0 && count == 0{ reCount = (Double(reUserTime) * 60 + Double(reUserSecTime)) count = reCount }else{ count = (Double(userTimer) * 60 + Double(userSecTimer) + elapsedTime) } reCount = (Double(reUserTime) * 60 + Double(reUserSecTime)) //0になったら元に戻すためのて変数 self.timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.timerAction(sender:)), userInfo: nil, repeats: true) // timer.fire() } createTimer() } @IBAction func stopButton(_ sender: Any) { setButtonEnabled(false, false, true, false, true) stopDate = Date() userTimer = 0 userSecTimer = 0 elapsedTime = count self.timer.invalidate()//止める } @IBAction func reset(_ sender: Any) { setButtonEnabled(true, true, false, false, false) // setAdjustsImageWhenDisabled() userTimer = 0 userSecTimer = 0 reUserTime = 0 reUserSecTime = 0 elapsedTime = 0 count = 0 reCount = 0 timerLabel.text = String(format:"%02d:%02d:%02d",userTimer,userSecTimer,0) self.timer.invalidate()//止める } @IBAction func transitionButton(_ sender: Any) { setButtonEnabled(false, false, false, true, true) userTimer = 0 userSecTimer = 0 elapsedTime = count } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

CocoaPodsの設定はハマり所満載です

そもそもcocapodsのインストールは成功しているのか
pod installが正しくできているか
Podfileの記述が正しいか
.xcworkspaceから起動させているか
などなど
リンク内容
リンク内容

ダメなら昔からのMobileAds SDKを使った方法に乗り換えることもできます
(AdMobのタグを付けた方が分かりやすいですね)

投稿2019/05/16 22:39

編集2019/05/16 22:41
aja

総合スコア3733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AppDvl

2019/05/17 12:57

ajaさん ありがとうございます! pods関連のファイルを一旦削除したあと、Firebaseの設定を行ったところうまく行ったみたいです。 初めて作ったアプリでやっと公開できる状態になって嬉しいです。
guest

0

pods関連のファイルを一旦削除したあと、podsを再インストールしてFirebaseの設定を行った。
エラーも出ずにうまく行ったみたいです。

投稿2019/05/17 12:58

AppDvl

総合スコア58

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問