-
Notifications
You must be signed in to change notification settings - Fork 814
/
Copy pathAdMobBannerSizesViewController.m
140 lines (115 loc) · 4.98 KB
/
AdMobBannerSizesViewController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
//
// Copyright (C) 2015 Google, Inc.
//
// AdMobBannerSizesViewController.m
// APIDemo
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#import "AdMobBannerSizesViewController.h"
#import <GoogleMobileAds/GoogleMobileAds.h>
#import "Constants.h"
/// AdMob - Banner Sizes
/// Demonstrates setting a desired banner size prior to loading an ad.
@interface AdMobBannerSizesViewController () <UIPickerViewDelegate, UIPickerViewDataSource>
/// The banner sizes picker.
@property(nonatomic, weak) IBOutlet UIPickerView *bannerSizesPicker;
/// Loads an ad based on banner size selected by user.
- (IBAction)loadAd:(id)sender;
/// The banner sizes.
@property(nonatomic, copy) NSArray *bannerSizes;
/// The banner sizes mapped to GADAdSize constants.
@property(nonatomic, copy) NSDictionary *ads;
/// The banner view.
@property(nonatomic, strong) GADBannerView *bannerView;
@end
@implementation AdMobBannerSizesViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.bannerSizesPicker.delegate = self;
self.bannerSizesPicker.dataSource = self;
switch ([UIDevice currentDevice].userInterfaceIdiom) {
case UIUserInterfaceIdiomPhone:
self.bannerSizes = @[ @"Large Banner", @"Banner" ];
[self.bannerSizesPicker selectRow:1 inComponent:0 animated:NO];
break;
case UIUserInterfaceIdiomPad:
self.bannerSizes = @[
@"Large Banner",
@"Banner",
@"Full Banner",
@"Medium Rectangle",
@"Leaderboard"
];
[self.bannerSizesPicker selectRow:2 inComponent:0 animated:NO];
break;
case UIUserInterfaceIdiomUnspecified:
self.bannerSizes = @[ @"Large Banner", @"Banner" ];
[self.bannerSizesPicker selectRow:1 inComponent:0 animated:NO];
break;
default:
break;
}
self.ads = @{
@"Banner" : NSValueFromGADAdSize(GADAdSizeBanner),
@"Large Banner" : NSValueFromGADAdSize(GADAdSizeLargeBanner),
@"Full Banner" : NSValueFromGADAdSize(GADAdSizeFullBanner),
@"Medium Rectangle" : NSValueFromGADAdSize(GADAdSizeMediumRectangle),
@"Leaderboard" : NSValueFromGADAdSize(GADAdSizeLeaderboard)
};
}
#pragma mark - UIPickerViewDataSource
// Returns the number of columns to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
// Returns the number of rows in each component.
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return self.bannerSizes.count;
}
#pragma mark - UIPickerViewDelegate
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component {
return self.bannerSizes[row];
}
#pragma mark - Actions
- (IBAction)loadAd:(id)sender {
if (!self.bannerView) {
self.bannerView = [[GADBannerView alloc] init];
self.bannerView.adUnitID = AdUnitIDBanner;
self.bannerView.rootViewController = self;
[self.view addSubview:self.bannerView];
self.bannerView.translatesAutoresizingMaskIntoConstraints = NO;
// Layout constraints that align the banner view to the bottom center of the screen.
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.bannerView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.bottomLayoutGuide
attribute:NSLayoutAttributeTop
multiplier:1
constant:0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.bannerView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1
constant:0]];
}
NSString *bannerSizeString = self.bannerSizes[[self.bannerSizesPicker selectedRowInComponent:0]];
self.bannerView.adSize = GADAdSizeFromNSValue(self.ads[bannerSizeString]);
GADRequest *request = [GADRequest request];
[self.bannerView loadRequest:request];
}
@end