複数のView Controller間で AdBannerView
のインスタンスを共有できるように、
NavigationBanner
iAdSuite
の例をプロジェクトに実装しようとしていますが、次のエラーが発生し続ける:
エラードメイン= ADErrorDomainコード= 2 “操作を完了できませんでした。
私は関連するコードを現在のiAdSuiteから自分のアプリに正確にコピーして、このエラーが発生しています。実際、このエラーはApple独自のNavigationBannerのiAdSuiteの例でも繰り返されています(実装しようとしている例です)。エラーは、次のものを追加することで確認できます。
NSLog (@"%@",error);
に:
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
iAdSuite
の問題を再現するには、次のようにします。
- 端末の飛行機モードをオンにします
- XcodeからiAdSuite NavigationBannerを起動します。これにより、すぐにエラー
“ADErrorDomain error 1″が生成されます。 - 端末のホームボタンを押してアプリを終了し、飛行機モードをオフにします。
- アイコンをタップして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);
}
}