2017-07-15 12 views
0

Game Center LeaderboardとAdmobバナーが含まれているアプリがあります。広告はライブであり、Xcode 8を介して実際のデバイスでアプリを実行すると正常に動作します。私は現在、そのように私のビューコントローラで私のバナー広告を設定していますキャッチされない例外によるアプリケーションの終了NSInvalidArgumentException

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
     reason: 'Application tried to present modal view controller on itself. Presenting controller is <GKHostedAuthenticateViewController: 0x7f818d749310>.' 

mybanner.adUnitID = "XXX"; 
    super.viewDidLoad(); 

    mybanner.rootViewController = self; 
    mybanner.delegate = self; 
    let request = GADRequest(); 
    mybanner.load(request); 

    //view.addConstraint(NSLayoutConstraint(item: mybanner, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0)); 
    //view.addConstraint(NSLayoutConstraint(item: mybanner, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1, constant: 0)); 

    NotificationCenter.default.addObserver(self, selector: #selector(self.showBannerAd), name: NSNotification.Name(rawValue: "showbannerad"), object: nil); 
    NotificationCenter.default.addObserver(self, selector: #selector(self.hideBannerAd), name: NSNotification.Name(rawValue: "hidebannerad"), object: nil); 
私はXcodeの8アプリの負荷をからではなく、数秒後にエミュレータを起動したときしかし、私はエラーを持っています

そして、次のようにシーンのクラスからバナーを表示/非表示する通知を呼び出す:

NotificationCenter.default.post(name: NSNotification.Name(rawValue: "showbannerad"), object: nil); 

私は独自のクラスで私のゲームセンターのオブジェクトを初期化し、目からそのinitメソッドを呼び出しています次のように電子画面を起動し、ゲームセンターのコントローラのinitがある:それは実際のデバイスではなく、エミュレータで動作することを

func authPlayer(scene: SKScene) { 
    let localPlayer = GKLocalPlayer.localPlayer(); 

    localPlayer.authenticateHandler = { 
     (view, error) in 
     if view != nil { 
      view!.present(view!, animated: true, completion: nil); 
     }else { 
      print(GKLocalPlayer.localPlayer().isAuthenticated); 
     } 
    } 
} 

    /// In the GamvViewController 
    func showBannerAd() { 
    if mybanner.isHidden == true { 
     mybanner.isHidden = false; 
    } 
} 

はその奇妙な。詳細をご希望の場合はお知らせください。ありがとう。

+2

「mybanner」とは何ですか?なぜあなたは 'rootViewController'を自分自身に設定するのですか?ここで問題と思われる。 – Codus

+1

あなたの通知で呼び出す 'funcs'を表示してください。 –

+0

私のバナーはAdmobバナーです。そして、GameViewControllerクラスにあります。 –

答えて

2

localPlayer.authenticateHandlerには、ビューがあります。クラスは何ですか?GKHostedAuthenticateViewControllerですか。それが問題です。 エラーメッセージはクリアですが、一部のViewControllerはそれを現在のものと呼びます。

関連する問題