バックグラウンドからアプリケーションを再起動した後に負荷が軽減されるiAds(iAdSuiteでも発生します)

複数のView Controller間で AdBannerView のインスタンスを共有できるように、
NavigationBanner iAdSuite
の例をプロジェクトに実装しようとしていますが、次のエラーが発生し続ける:

エラードメイン= ADErrorDomainコード= 2 “操作を完了できませんでした。

私は関連するコードを現在のiAdSuiteから自分のアプリに正確にコピーして、このエラーが発生しています。実際、このエラーはApple独自のNavigationBannerのiAdSuiteの例でも繰り返されています(実装しようとしている例です)。エラーは、次のものを追加することで確認できます。

NSLog (@"%@",error);

に:

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error

iAdSuite の問題を再現するには、次のようにします。

  1. 端末の飛行機モードをオンにします
  2. XcodeからiAdSuite NavigationBannerを起動します。これにより、すぐにエラー
    “ADErrorDomain error 1″が生成されます。
  3. 端末のホームボタンを押してアプリを終了し、飛行機モードをオフにします。
  4. アイコンをタップしてNavigationBannerを再起動すると、エラーが表示されます。

これは私のアプリケーションにとって問題です。なぜなら、接続がない場合にiAdを隠してから、接続が再開すると再び表示されるからです。アプリがスロットリングエラーを受け取った場合、別の広告を受信するまでに時間がかかります。

どのようにしてスロットルエラーを回避できますか?バナービューを削除してから再追加する必要があると思っていましたが、これを正しく行う方法を理解できませんでした。

最後に注意しておきたいのは、現在のiAdSuiteはアプリケーションが動作していない間にARCを使用するということです。それでも、私のアプリとiAdSuiteの両方でエラーが発生します。

ベストアンサー

Appleが “Reachability”プロジェクトコードでネットワークの状態を検出してみてください。
GithubにはARC互換バージョンがあります。 ( https://github.com/tonymillion/Reachability
)ヘッダーにReachability.hをインポートしたら以下のコードを試してみてください。接続可能な接続があれば到達可能性が検出され、そうでなければiAdは画面外に移動します。お役に立てれば!

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    [reachability startNotifier];

    NetworkStatus status = [reachability currentReachabilityStatus];

    if(status == NotReachable)
    {
       //No internet connection. We need to move the iAd off screen.
        NSLog(@"No network connection. iAd will hide.");
        banner.frame = CGRectOffset(banner.frame, 320, 0);
    }
    if(status == ReachableViaWifi)
    {
        banner.frame = CGRectOffset(banner.frame, your position here);
    }
    if(status == ReachableViaWWAN)
    {
        banner.frame = CGRectOffset(banner.frame, your position here);
    }
}

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です