0

これはこれまでで最もばかげた質問のように思えますが、Apple のすべてのドキュメントと役に立たないオンライン チュートリアルに目を通した後でも、iAds自分のアプリケーションに適切に実装する方法がわかりません。したがって、私のアプリはテーブル ビュー コントローラーから始まりiAd、ナビゲーション バーの下とテーブルの上にオブジェクトがあります。

さて、私のコードでは:(iAdフレームワークも追加されています)

#import <UIKit/UIKit.h>
#import <iAd/iAd.h>

@interface MasterTableViewController : UITableViewController <ADBannerViewDelegate>
{
    IBOutlet ADBannerView *iAd;
}
@property(nonatomic, readonly, getter=isBannerLoaded) BOOL bannerLoaded;
@end

次に、.m ファイルで

#import "MasterTableViewController.h"

@interface MasterTableViewController ()
@end

@implementation MasterTableViewController
@synthesize bannerLoaded;

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave
{
    if (!willLeave)
    {
        // nothing in this case thanks to ARC 
    }
    return YES;
}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    iAd.hidden = NO;
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{   
    iAd.hidden = YES;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    for (int i = 0; i > 0; i++)
    {
        if (bannerLoaded)
        {
            iAd.hidden = NO;
        }
        else
        {
            iAd.hidden = YES;
        }
    }
}

さて、問題は、インターネットに接続せずにアプリをテストすると、iAd(明らかに)ロードされませんが、非表示にもならないことです。そのため、画面の上部に大きな白い長方形が残っています。それ以外の場合、接続が利用可能な場合、広告は正常に機能します。誰にもアイデアはありますか?また、無限ループを追加して、違いがあるかどうかを確認しました。それらは完全に意図的でした笑。

4

2 に答える 2

1

バナーの位置を初期化する場所がわからないため、ストーリーボードを介して ADBannerView を追加したと想定しています。

  1. ストーリーボードで、初期位置を画面のすぐ外に設定します。
  2. 「bannerViewDidLoadAd」で、バナーをアニメーション表示します。
  3. 「bannerView: didFailToReceiveAdWithError:」で、バナーを非表示にアニメーション化します。

ここに良い例がありますhttps://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/iAd_Guide/WorkingwithBannerViews/WorkingwithBannerViews.html

お役に立てれば。これを実装したばかりですが、現時点ではコードにアクセスできません。

シミュレーターでいくつかのエラーが発生しますが、デバイスでは正常に動作します。

これを iOS6 でテストしたところ、iAd が表示されてユーザーが接続を失っても問題なく動作します (そのため、"bannerView: didFailToReceiveAdWithError:" が呼び出されているように見えます)。

于 2013-02-05T09:18:34.613 に答える
0

bannerLoaded広告の状態を保存するためのプロパティがあります。これは良いことです。

最初は、viewDidLoadメソッドで iAd をロードできないため、それに応じてプロパティを設定する必要があります。self.bannerLoaded = NO;

次に、広告を受け取る/受け取っていない場合は、このプロパティを更新する必要があります。

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    if (!self.bannerLoaded) {
        iAd.hidden = NO;
        self.bannerLoaded = YES;
    }
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{   
    if (self.bannerLoaded) {
        iAd.hidden = YES;
        self.bannerLoaded = NO;
    }
}
于 2013-02-03T18:13:13.797 に答える