2016-12-04 5 views
2

iOSアプリでAdMob広告を使用するのに問題があります。 私はあなたに以下に示す具体的なエラーを受けていますが、まずここで私が試したことがあります。iOS AdMobs GADBannerViewを追加するとAppDelegate(Swift)でsigabrtが発生するのはなぜですか?

は、ここで私は私が公式BannerExampleを取得し、正常に動作してそれを得た私のメインアプリでエラーが発生しましたら、私は

  1. を試してみた何。 BannerViewのサンプルアプリケーションが実行され、iPhone 5sシミュレータで実行中の広告がアプリに表示されます。
  2. 私はすべての必要なパッケージの正確な新しいバージョンを保障し、アプリケーションが問題なく構築されることを念頭に置いて、あらゆる方法でポッドアップデートを行いました。
    1. 私は以下に示す1行のコードにデバッグしました。

今、あなたは私が仕事のかなりのやったことを知って、何が起こっているかを見てみましょう。

アプリのクラッシュ

正確なエラーは次のとおりです。プライベート実効ユーザー 設定から読む[MC]:

CYaPass [433036 13155]。 Googleモバイル広告SDKのバージョン:afma-sdk-i-v7.15.0 2016-12-04 14:37:26.046 CYaPass [13155:432944] - [UIView loadRequest:]: インスタンスに送信された認識できないセレクタ 0x7f8bf4546090 2016- 12から04 14:37:26.055 CYaPass [13155:432944] ***によりキャッチされない例外

にアプリを終了これはAppDelegateエラーで正常SIGABRTありません。 StoryBoardに関連するすべての通常のことを試しましたが、私はこれを吹いている未定義のアイテムがないことを示すイメージです。さらに、AdMobコードの1行を削除すると、アプリが正常に実行されることがわかります。

controller outlets

あなたは私がBannerViewのために使用しようとしてるのUIView上で定義された2つの店舗を持っていることがわかります。それで、AdMobコードの1行を削除するとテストできるようになりました。

また、あなたは、次のようになります。私の実際のコントローラのコードでそれらを見ることができますSettingsController

outlet settingscontroller

にそれらの店を見ることができます:

@IBOutlet weak var AdMobs: GADBannerView! 

    @IBOutlet weak var SuperView: UIView! 
    func loadAd(){ 
     AdMobs.adUnitID = "ca-app-pub-3940256099942544/2934735716" 
     AdMobs.rootViewController = self 
     AdMobs.load(GADRequest()) 
     SuperView.backgroundColor = UIColor.black; 
    } 

私はにこれらの行を分離しましたloadAd() funcだから私は別の場所からそれらをテストすることができますが、それは公式のBannerExampleが使用し、viewDidLoad() funcで呼び出すのと同じコードです。

のUIViewで

小テスト

その後、私はまた、私は黒にbackgroundColorの設定をまったく同じのUIView(スーパー)にはほとんどの作業を行う参照してください。

これは、UIViewにコンセントを取り付けただけではないことを自分自身に確信させることでした。しかし、そのコードは、その前の3行をコメントアウトするだけでうまくいきます。

ここでは、実行して出力を表示します。私がそれをする直前に、変更しないAppDelegateアプリケーションコンストラクタがあります。私は以下のように見えるように変更loadAd()を変更して再度実行します、今

import Firebase 
import UIKit 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate{ 
    var window: UIWindow? 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     // Override point for customization after application launch. 
     FIRApp.configure() 
     GADMobileAds.configure(withApplicationID: "ca-app-pub-myapp-hiddenforpublicConsumption") 
     return true 
    } 

:それは本当に正確な公式BannerExampleのコピーである

func loadAd(){ 
     //AdMobs.adUnitID = "ca-app-pub-3940256099942544/2934735716" 
     //AdMobs.rootViewController = self 
     //AdMobs.load(GADRequest()) 
     SuperView.backgroundColor = UIColor.black; 
    } 

を明らかに、唯一の変化であります私はこれらの3つの行についてコメントした。それが実行されるときのように見えるものです。

タブ付きビューアプリケーション

ところで、これはタブ付きアプリです。アプリケーションが表示されたら、[設定]タブをクリックすると、loadAd()の変更されたコードが実行され、UIViewの背景が黒くなることがわかります。 uiview background black

主なポイント:特定のコードが問題

原因、私はAppDelegateで、私はバナー広告コードのちょうどその最初の行のコメントを解除した場合、その後のアプリがクラッシュすることをお見せしましょう。ここで

が再び変更されloadAd()です:

再び
func loadAd(){ 
     AdMobs.adUnitID = "ca-app-pub-3940256099942544/2934735716" 
     //AdMobs.rootViewController = self 
     //AdMobs.load(GADRequest()) 
     SuperView.backgroundColor = UIColor.black; 
    } 

、あなたは私がGADBannerViewの上adUnitIdを設定し、1行のみをコメント解除したことを見ることができます。これは、BannerExampleが使用するのとまったく同じコードです。それは誰のテストでも無料の同じテストユニットIDを使用します。また、そのunitIdを無効な値に変更しても、アプリがクラッシュすることはなく、広告は表示されません。

はここで結果

crash

デバッグコードの正確な行を示しています

私はコードにステップすることができ、それは我々が追加したことloadAd()ライン上に正確ですこのエラーが発生します(明確な参照のために以下に示します)。

AdMobs.adUnitID = "ca-app-pub-3940256099942544/2934735716" 

差分のみ:タブ付きビュー - それは問題ですか?

唯一の効果的な違いは、私のアプリがタブ付きビューに基づいていることです。 これはなぜ起こるのですか?

私は今、ほぼ2日間すべてを試してきました。どんな助けもありがとうございます。

答えて

1

ああ、苦しみ...私はついに答えを見つけた。

まず、ここで私は成功を収めていることがわかります。

success

あなたは絵コンテやUIViewのは、あなたが、それは次のような表示されることを調べるために行く場合はビューのタイプは

を変更する必要があります: uiview type

しかし、それは一種のGADBannerViewではなく、次のようなエラーが表示されます。

[UIViewのsetAdUnitIDは:]:認識されていないセレクタは答えに私を得た手がかりれたことをインスタンス

に送信されました。

あなたは(だけのUIView以上のボックスに入力)GADBannerViewのに値を変更する必要があります。

make class GADBannerView

私も公式の例ではタイプがそこに適切に設定されていることを確認しました。 それは私が戻ってくることはない約36時間です。 最初の文書でその手順を忘れていたので、これは「椅子とキーボードの間のエラー」です。

関連する問題