我無法在iOS應用中獲取AdMob廣告。 我收到了一個具體的錯誤,我會在下面給你看,但首先這裏是我試過的。爲什麼在AppDelegate(Swift)中添加iOS AdMobs GADBannerView會導致sigabrt?
這裏就是我試過
- 一旦我得到的錯誤在我的主應用程序,我檢索到的官方BannerExample,並得到了它成功運行。 BannerView示例應用程序正在運行,我看到廣告在我的iPhone 5s模擬器上運行時出現在應用程序中。
- 我已經完成了所有方式的pod更新,以確保我擁有所有必需軟件包的確切新版本,並牢記應用程序的構建沒有問題。
- 我已將它調試到一行代碼,我將在下面給您看。
現在你知道我已經做了相當多的工作,看看發生了什麼。
該應用崩潰
確切的錯誤是:
CYaPass [13155:433036] [MC]從私人有效用戶 設置讀。 Google Mobile Ads 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代碼時,應用程序將正常運行。
你可以看到,我有對我試圖使用的BannerView了UIView定義的兩個出口。這樣我可以在刪除一行AdMob代碼時對其進行測試。
您還可以看到在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的
然後,你看,我也做了完全一樣的UIView(的SuperView)這裏我設置的backgroundColor黑一點的工作。
這是爲了說服自己,這不僅僅是因爲我附加了一個出口到UIView。但是,如果我簡單地將它之前的三行註釋掉,那代碼就可以正常工作。
在這裏,我將運行它並向您顯示輸出。在我這樣做之前,這裏是我的AppDelegate應用程序構造函數,它不會改變。這實在是確切的官方的BannerExample的副本:
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
}
現在,我要改改loadAd()看起來像以下,並再次運行:顯然
func loadAd(){
//AdMobs.adUnitID = "ca-app-pub-3940256099942544/2934735716"
//AdMobs.rootViewController = self
//AdMobs.load(GADRequest())
SuperView.backgroundColor = UIColor.black;
}
,唯一的變化是我評論了這三條線。這是它運行時的樣子。
分頁查看應用程序
順便說一句,這是一個標籤式的應用程序。所以這個應用程序出現了,我點擊設置選項卡,你可以看到loadAd()中改變的代碼運行並將UIView的背景變成黑色。
要點:特定的代碼會導致問題
現在,讓我告訴你,如果我取消的橫幅廣告代碼只是第一行,然後在AppDelegate的應用程序崩潰。
這裏的改變loadAd()
再次:
func loadAd(){
AdMobs.adUnitID = "ca-app-pub-3940256099942544/2934735716"
//AdMobs.rootViewController = self
//AdMobs.load(GADRequest())
SuperView.backgroundColor = UIColor.black;
}
同樣,你可以看到,我只有註釋掉一條線,設置在GADBannerView adUnitId設置。這與BannerExample使用的代碼完全相同。它甚至使用相同的測試unitId,這對每個人都是免費的測試。此外,即使您將unitId更改爲無效值,應用程序也不會崩潰,但廣告只是不顯示。
這裏的結果
調試出了碼的精確線
我可以進入的代碼,它正是我們剛纔添加時loadAd()行發生此錯誤(如下所示,以供參考):
AdMobs.adUnitID = "ca-app-pub-3940256099942544/2934735716"
唯一區別:選項卡式視圖 - 是問題嗎?
唯一有效的區別是我的應用程序基於tabbedview。 有誰知道爲什麼會發生這種情況?
我已經嘗試了近2天的一切。任何幫助表示讚賞。