223 lines
6.6 KiB
Objective-C
223 lines
6.6 KiB
Objective-C
/*
|
|
|
|
AdWhirlAdapterQuattro.m
|
|
|
|
Copyright 2009 AdMob, Inc.
|
|
|
|
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 "AdWhirlAdapterQuattro.h"
|
|
#import "AdWhirlView.h"
|
|
#import "AdWhirlConfig.h"
|
|
#import "AdWhirlAdNetworkConfig.h"
|
|
#import "QWAdView.h"
|
|
#import "QWTestMode.h"
|
|
#import "AdWhirlLog.h"
|
|
#import "AdWhirlAdNetworkAdapter+Helpers.h"
|
|
#import "AdWhirlAdNetworkRegistry.h"
|
|
|
|
@implementation AdWhirlAdapterQuattro
|
|
|
|
+ (AdWhirlAdNetworkType)networkType {
|
|
return AdWhirlAdNetworkTypeQuattro;
|
|
}
|
|
|
|
+ (void)load {
|
|
[[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self];
|
|
}
|
|
|
|
- (void)getAd {
|
|
QWEnableLocationServicesForAds(adWhirlConfig.locationOn);
|
|
|
|
if ([adWhirlDelegate respondsToSelector:@selector(adWhirlTestMode)]
|
|
&& [adWhirlDelegate adWhirlTestMode]) {
|
|
QWSetTestMode(YES);
|
|
QWSetLogging(YES);
|
|
}
|
|
else {
|
|
QWSetTestMode(NO);
|
|
QWSetLogging(NO);
|
|
}
|
|
NSDictionary *credDict;
|
|
if ([adWhirlDelegate respondsToSelector:@selector(quattroWirelessDictionary)]) {
|
|
credDict = [adWhirlDelegate quattroWirelessDictionary];
|
|
}
|
|
else {
|
|
credDict = [networkConfig credentials];
|
|
}
|
|
NSString *pubId = [credDict objectForKey:@"publisherID"];
|
|
NSString *siteId = [credDict objectForKey:@"siteID"];
|
|
QWAdType adType = QWAdTypeBanner;
|
|
if ([adWhirlDelegate respondsToSelector:@selector(quattroWirelessAdType)]) {
|
|
adType = (QWAdType)[adWhirlDelegate quattroWirelessAdType];
|
|
}
|
|
UIDeviceOrientation orientation;
|
|
if ([self.adWhirlDelegate respondsToSelector:@selector(adWhirlCurrentOrientation)]) {
|
|
orientation = [self.adWhirlDelegate adWhirlCurrentOrientation];
|
|
}
|
|
else {
|
|
orientation = [UIDevice currentDevice].orientation;
|
|
}
|
|
QWAdView *quattroAd = [QWAdView adViewWithType:adType
|
|
publisherID:pubId
|
|
siteID:siteId
|
|
orientation:orientation
|
|
delegate:self];
|
|
quattroAd.textColor = [self helperTextColorToUse];
|
|
quattroAd.backgroundColor = [self helperBackgroundColorToUse];
|
|
[quattroAd displayNewAd];
|
|
self.adNetworkView = quattroAd;
|
|
}
|
|
|
|
- (void)stopBeingDelegate {
|
|
QWAdView *quattroAd = (QWAdView *)self.adNetworkView;
|
|
if (quattroAd != nil) {
|
|
quattroAd.delegate = nil;
|
|
}
|
|
}
|
|
|
|
- (void)dealloc {
|
|
[super dealloc];
|
|
}
|
|
|
|
#pragma mark QWAdViewDelegate methods
|
|
|
|
- (void)adView:(QWAdView *)adView didDisplayAd:(QWAd *)ad {
|
|
// somehow the test banner ad is showing 80 pixels as height sometimes.
|
|
// check for that and adjust
|
|
AWLogDebug(@"Quattro reported frame %@", NSStringFromCGRect(self.adNetworkView.frame));
|
|
if (self.adNetworkView.frame.size.height > 50.0) {
|
|
CGRect f = adNetworkView.frame;
|
|
f.size.height = 50;
|
|
adNetworkView.frame = f;
|
|
}
|
|
[adWhirlView adapter:self didReceiveAdView:adView];
|
|
}
|
|
|
|
- (void)dispatchError:(NSError*)error
|
|
{
|
|
[adWhirlView adapter:self didFailAd:error];
|
|
}
|
|
|
|
- (void)adView:(QWAdView *)adView failedWithError:(NSError *)error {
|
|
[self performSelectorOnMainThread:@selector(dispatchError:) withObject:error waitUntilDone:NO];
|
|
}
|
|
|
|
- (void)adView:(QWAdView *)adView displayLandingPage:(UIViewController *)controller {
|
|
[self helperNotifyDelegateOfFullScreenModal];
|
|
[[adWhirlDelegate viewControllerForPresentingModalView] presentModalViewController:controller
|
|
animated:YES];
|
|
}
|
|
|
|
- (void)adView:(QWAdView *)adView dismiss:(UIViewController *)controller {
|
|
[[adWhirlDelegate viewControllerForPresentingModalView] dismissModalViewControllerAnimated:YES];
|
|
[self helperNotifyDelegateOfFullScreenModalDismissal];
|
|
}
|
|
|
|
#pragma mark QWAdViewDelegate optional methods
|
|
|
|
- (BOOL)respondsToSelector:(SEL)selector {
|
|
if (selector == @selector(latitude:)
|
|
&& ![adWhirlDelegate respondsToSelector:@selector(locationInfo)]) {
|
|
return NO;
|
|
}
|
|
else if (selector == @selector(longitude:)
|
|
&& ![adWhirlDelegate respondsToSelector:@selector(locationInfo)]) {
|
|
return NO;
|
|
}
|
|
else if (selector == @selector(age:)
|
|
&& (![adWhirlDelegate respondsToSelector:@selector(dateOfBirth)]
|
|
|| [self age:nil] < 0)) {
|
|
return NO;
|
|
}
|
|
else if (selector == @selector(zipcode:)
|
|
&& ![adWhirlDelegate respondsToSelector:@selector(postalCode)]) {
|
|
return NO;
|
|
}
|
|
else if (selector == @selector(gender:)
|
|
&& ![adWhirlDelegate respondsToSelector:@selector(gender)]) {
|
|
return NO;
|
|
}
|
|
else if (selector == @selector(income:)
|
|
&& ![adWhirlDelegate respondsToSelector:@selector(incomeLevel)]) {
|
|
return NO;
|
|
}
|
|
else if (selector == @selector(education:)
|
|
&& ![adWhirlDelegate respondsToSelector:@selector(quattroWirelessEducationLevel)]) {
|
|
return NO;
|
|
}
|
|
else if (selector == @selector(birthdate:)
|
|
&& ![adWhirlDelegate respondsToSelector:@selector(dateOfBirth)]) {
|
|
return NO;
|
|
}
|
|
else if (selector == @selector(ethnicity:)
|
|
&& ![adWhirlDelegate respondsToSelector:@selector(quattroWirelessEthnicity)]) {
|
|
return NO;
|
|
}
|
|
return [super respondsToSelector:selector];
|
|
}
|
|
|
|
- (double)latitude:(QWAdView *)adView {
|
|
CLLocation *loc = [adWhirlDelegate locationInfo];
|
|
if (loc == nil) return 0.0;
|
|
return loc.coordinate.latitude;
|
|
}
|
|
|
|
- (double)longitude:(QWAdView *)adView {
|
|
CLLocation *loc = [adWhirlDelegate locationInfo];
|
|
if (loc == nil) return 0.0;
|
|
return loc.coordinate.longitude;
|
|
}
|
|
|
|
- (NSString *)zipcode:(QWAdView *)adView {
|
|
return [adWhirlDelegate postalCode];
|
|
}
|
|
|
|
- (NSUInteger)age:(QWAdView *)adView {
|
|
return [self helperCalculateAge];
|
|
}
|
|
|
|
- (QWGender)gender:(QWAdView *)adView {
|
|
NSString *gender = [adWhirlDelegate gender];
|
|
QWGender sex = QWGenderUnknown;
|
|
if (gender == nil)
|
|
return sex;
|
|
if ([gender compare:@"m"] == NSOrderedSame) {
|
|
sex = QWGenderMale;
|
|
}
|
|
else if ([gender compare:@"f"] == NSOrderedSame) {
|
|
sex = QWGenderFemale;
|
|
}
|
|
return sex;
|
|
}
|
|
|
|
- (NSUInteger)income:(QWAdView *)adView {
|
|
return [adWhirlDelegate incomeLevel];
|
|
}
|
|
|
|
- (QWEducationLevel)education:(QWAdView *)adView {
|
|
return [adWhirlDelegate quattroWirelessEducationLevel];
|
|
}
|
|
|
|
- (NSDate *)birthdate:(QWAdView *)adView {
|
|
return [adWhirlDelegate dateOfBirth];
|
|
}
|
|
|
|
- (QWEthnicity)ethnicity:(QWAdView *)adView {
|
|
return [adWhirlDelegate quattroWirelessEthnicity];
|
|
}
|
|
|
|
@end
|