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 } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/17 12:57