1

AppDelegate のみに実装され、すべての画面で使用できるように iAd を実装するにはどうすればよいでしょうか。

appDelegate にコードを配置しました。各ビュー コントローラーでコードを記述する必要がありますか?

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self addiAd];
    NSLog(@"window subview : %@",self.window.subviews);    //Here it shows no subview
    return YES;
}

-(void)addiAd
{
    self.adView.delegate = self;
    self.adView.requiredContentSizeIdentifiers = [NSSet setWithObjects:ADBannerContentSizeIdentifierLandscape,ADBannerContentSizeIdentifierPortrait, nil];
    self.adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
    [self setBannerFrame:orientation];
    self.adView = [[ADBannerView alloc] init];
    self.adView.frame = CGRectMake(0, 938, 768, 66);
    [self.window addSubview:self.adView];

}
-(void)removeiAd
{
    [self.adView removeFromSuperview];
}
-(void)setBannerFrame:(UIInterfaceOrientation)interfaceOrientation
{
    if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        [self.adView setCurrentContentSizeIdentifier:ADBannerContentSizeIdentifierLandscape];
        self.adView.frame = CGRectMake(0, 634, 320, 50);
    }
    else {
        [self.adView setCurrentContentSizeIdentifier:ADBannerContentSizeIdentifierPortrait];
        self.adView.frame = CGRectMake(0, 890, 480, 32);
    }
}

そのすべてのデリゲート メソッドも AppDelegate.m に実装されています。

私の次のステップは何ですか?私は何が間違っているか、欠けていますか?

4

3 に答える 3

2

アプリデリゲートにiAd構成は必要ありません。通常、表示されるView Controllerのクラスで構成します。つまり、通常、すべてのViewControllerに広告ビューを配置する必要があります。に広告を表示したかった。

ただし、もっと簡単な方法があります-この質問への回答は、たとえば、あなたが望むことをしているように見えるシングルトンクラスへのリンクを提供します-それはあなたがすべてのビューにドロップできるiAd構成を管理する単一のクラスを提供します広告をに表示すること。

于 2012-10-16T05:30:48.010 に答える
0

Apple は、App Delegate で一度作成し、すべてのビューで共有することをお勧めします。

https://developer.apple.com/library/ios/technotes/tn2286/_index.html

于 2015-11-21T19:02:14.647 に答える
0

Y A。各ビュー コントロールにコードを記述する必要はありません。ここに私のコードがあります

- (UIWindow *)viewControllerForPresentingModalView {

    return self;

}
- (void)adWhirlDidReceiveAd:(AdWhirlView *)adWhirlView {
    NSLog(@"Ad received");
    CGSize adSize = [adView actualAdSize];
    NSLog(@"Net work Name %@",[adWhirlView mostRecentNetworkName]);
    CGRect newFrame = adView.frame;
    newFrame.size = adSize;



    newFrame.origin.y=385;
    NSLog(@"frame size %f,%f",newFrame.origin.x,newFrame.origin.y);
    adView.frame = newFrame;




}
-(void)adWhirlDidFailToReceiveAd:(AdWhirlView *)adWhirlView usingBackup:(BOOL)yesOrNo
{
    NSLog(@"Ad not Received");
    NSLog(@"Net work Name %@",[adWhirlView mostRecentNetworkName]);
    CGRect tempFrame = adView.frame;
    tempFrame.origin.y = -adView.frame.size.height;
    adView.frame = tempFrame;


}

このすべてのメソッドをアプリ デリゲートに記述し、アプリケーションの didFinishedLaunching メソッドに、ウィンドウのサブ ビューとして adwhirl ビューを追加するだけです。

adView=[AdWhirlView requestAdWhirlViewWithDelegate:self];
    [self.window addSubview:adView];  

私にとってはうまくいきます。

于 2012-10-16T06:26:15.863 に答える