1

我想在我的应用中加入 AdMob 横幅!我让它在 UIViewcontrollers 中工作,但不是在我的 UIView 中......横幅出现了,但是当你点击它时,什么也没有发生!如果您单击 UIViewcontrollers 中的横幅,它会起作用!

UIViewcontrollers 中的代码(有效!)

 - (void)viewDidLoad
 {

[super viewDidLoad];
bannerView_ = [[GADBannerView alloc] initWithFrame:CGRectMake(0.0, self.view.frame.size.height - GAD_SIZE_320x50.height-49, GAD_SIZE_320x50.width, GAD_SIZE_320x50.height)];

bannerView_.adUnitID = MY_BANNER_UNIT_ID;
bannerView_.rootViewController = self;
[self.view addSubview:bannerView_];


GADRequest *r = [[GADRequest alloc] init];
r.testing = YES;
[bannerView_ loadRequest:r];
// Do any additional setup after loading the view, typically from a nib.

}

UiView 中的代码:(不起作用)

 - (void)drawRect:(CGRect)rect
  {




  // Create a view of the standard size at the bottom of the screen.
  bannerView_ = [[GADBannerView alloc] initWithFrame:CGRectMake(0.0, self.frame.size.height - GAD_SIZE_320x50.height, GAD_SIZE_320x50.width, GAD_SIZE_320x50.height)];
  // Specify the ad's "unit identifier." This is your AdMob Publisher ID.
  bannerView_.adUnitID = MY_BANNER_UNIT_ID;

  // Let the runtime know which UIViewController to restore after taking
  // the user wherever the ad goes and add it to the view hierarchy.
  bannerView_.rootViewController = self;
 [self addSubview:bannerView_];

  // Initiate a generic request to load it with an ad.
  [bannerView_ loadRequest:[GADRequest request]];
  // Drawing code
  }

行bannerView_.rootViewController = self; 给我一个警告,但没有它就不行!警告说“不兼容的指针类型从 'blandad *const_strong' 分配给 'UIViezController *'

UIView 的 .m 和 .h 文件的名称中的 blandad!

你觉得哪里不对?

/一个菜鸟

4

4 回答 4

2

请从方法中删除所有代码- (void)drawRect:(CGRect)rect,如果您想在图形上下文中绘制某些内容,则必须覆盖此方法。这个方法不会被调用一次而是调用多次,所以每次你都会分配一个新的视图并将其添加为子视图

如果您想将广告横幅添加到自定义 UIView,只需执行以下操作:

// in your CustomView implementation
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        bannerView_ = [[GADBannerView alloc] initWithFrame:CGRectMake(0.0, self.view.frame.size.height - GAD_SIZE_320x50.height-49, GAD_SIZE_320x50.width, GAD_SIZE_320x50.height)];

        bannerView_.adUnitID = MY_BANNER_UNIT_ID;

        UIViewController* root = [(YOUR_APP_DELEGATE_CLASS*)[[UIApplication sharedApplication] delegate] viewController];
        bannerView_.rootViewController = root;
        [self addSubview:bannerView_];


        GADRequest *r = [[GADRequest alloc] init];
        r.testing = YES;
        [bannerView_ loadRequest:r];

    }
    return self;
}

您可以UIViewController* root使用您拥有的任何控制器进行设置,最好在其中设置一个控制器,该控制器的视图是您的自定义视图的父级。我刚刚从应用程序委托中为根视图控制器编写了一个路径,如果您想使用它,请确保您的应用程序委托具有此viewController属性。

于 2012-10-25T16:05:51.157 回答
0

请参考下面的链接,它的一个例子:

http://www.edumobile.org/iphone/iphone-programming-tutorials/how-to-admob-integrate-in-your-application-in-iphone/

于 2013-10-15T10:02:05.120 回答
0

我认为最好的方法是管理单个横幅广告并将其添加到您需要广告的所有视图中。

试试我写的这门课 - https://github.com/jackwu95/JWGADManager

于 2014-01-13T19:59:45.943 回答
0

我不知道你是否解决了你的问题,但从我的角度来看,我得到了同样的问题。

将 GAD 横幅视图添加到从 UIView 继承的正确视图中,然后横幅显示良好,但 Admob 链接未激活。

在我的例子中,GAD 横幅视图被添加到 GADBannerView 的 adViewDidReceiveAd 委托中。显然这不是好方法。

通过在初始化后直接添加 GAD 横幅视图,现在一切正常。

- (void)initGADBannerViewWithId:(NSString *)bannerId andRootController:(UIViewController *)rootController
{
    _gadBannerView = [[GADBannerView alloc] initWithFrame:self.frame];

    _gadBannerView.adUnitID = bannerId;

    // Let the runtime know which UIViewController to restore after taking
    // the user wherever the ad goes and add it to the view hierarchy.
    _gadBannerView.rootViewController = rootController;
    _gadBannerView.delegate = self;
    [self addSubview:_gadBannerView];
}

而在 GADBannerView 的 adViewDidReceiveAd 委托中,现在我只是有一个动画来修改横幅位置以产生动态的视觉效果。

希望这可以帮助某人

于 2013-10-15T09:00:00.333 回答