我想在我的项目中使用adMob,因为iAds interstitialAds在他们消失之后由于某种原因拉伸我的spriteNodes但是我得到了一些错误: (我试图清理我的构建文件夹)
//
// GADInterstitial.h
// Google Mobile Ads SDK
//
// Copyright 2011 Google Inc. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <GoogleMobileAds/GADInAppPurchaseDelegate.h>
#import <GoogleMobileAds/GADInterstitialDelegate.h>
#import <GoogleMobileAds/GADRequest.h>
#import <GoogleMobileAds/GADRequestError.h>
/// An interstitial ad. This is a full-screen advertisement shown at natural transition points in
/// your application such as between game levels or news stories.
///
/// Interstitials are shown sparingly. Expect low to no fill.
@interface GADInterstitial : NSObject
#pragma mark Pre-Request
/// Required value created on the AdMob website. Create a new ad unit for every unique placement of
/// an ad in your application. Set this to the ID assigned for this placement. Ad units are
/// important for targeting and statistics.
///
/// Example AdMob ad unit ID: @"ca-app-pub-0123456789012345/0123456789"
@property(nonatomic, copy) NSString *adUnitID;
/// Optional delegate object that receives state change notifications from this GADInterstitalAd.
/// Remember to nil this property before deallocating the delegate.
@property(nonatomic, weak) id<GADInterstitialDelegate> delegate;
/// Optional delegate object that receives in-app purchase notifications from this ad. Required for
/// the custom in-app purchase flow, but ignored when using the default in-app purchase flow.
/// Remember to nil this property before deallocating the delegate.
@property(nonatomic, weak) id<GADInAppPurchaseDelegate> inAppPurchaseDelegate;
#pragma mark Making an Ad Request
/// Makes an interstitial ad request. Additional targeting options can be supplied with a request
/// object. Only one interstitial request is allowed at a time.
///
/// This is best to do several seconds before the interstitial is needed to preload its content.
/// Then when transitioning between view controllers show the interstital with
/// presentFromViewController.
- (void)loadRequest:(GADRequest *)request;
#pragma mark Post-Request
/// Returns YES if the interstitial is ready to be displayed. The delegate's
/// interstitialAdDidReceiveAd: will be called after this property switches from NO to YES.
@property(nonatomic, readonly, assign) BOOL isReady;
/// Returns YES if this object has already been presented. Interstitial objects can only be used
/// once even with different requests.
@property(nonatomic, readonly, assign) BOOL hasBeenUsed;
/// Returns the ad network class name that fetched the current ad. Returns nil while the latest ad
/// request is in progress or if the latest ad request failed. For both standard and mediated Google
/// AdMob ads, this method returns @"GADMAdapterGoogleAdMobAds". For ads fetched via mediation
/// custom events, this method returns @"GADMAdapterCustomEvents".
@property(nonatomic, readonly, copy) NSString *adNetworkClassName;
/// Presents the interstitial ad which takes over the entire screen until the user dismisses it.
/// This has no effect unless isReady returns YES and/or the delegate's interstitialDidReceiveAd:
/// has been received.
///
/// Set rootViewController to the current view controller at the time this method is called. If your
/// application does not use view controllers pass in nil and your views will be removed from the
/// window to show the interstitial and restored when done. After the interstitial has been removed,
/// the delegate's interstitialDidDismissScreen: will be called.
- (void)presentFromRootViewController:(UIViewController *)rootViewController;
@end
for @interface我得到这个错误:重复的接口定义
并且对于每个@property,我得到这个:Property有一个先前的声明
答案 0 :(得分:2)
听起来您的项目中有两个GoogleMobileAdsSdk副本。删除其中一个。确保您拥有AdMob中的最新SDK。然后像这样实施AdMob插页式广告。
#import "ViewController.h"
// Import AdMob framework in your header file
// #import <GoogleMobileAds/GoogleMobileAds.h>
// Enter YOUR ad id you receive from AdMob here
#define INTERSTITIAL_UNIT_ID @"yourAdMobInterstitialID"
@interface ViewController () <GADInterstitialDelegate>
@end
@implementation ViewController {
// AdMob
GADInterstitial *adMobInterstitial;
}
-(void)viewDidLoad {
[super viewDidLoad];
// AdMob
adMobInterstitial = [[GADInterstitial alloc] init];
adMobInterstitial.adUnitID = INTERSTITIAL_UNIT_ID;
[adMobInterstitial loadRequest:[GADRequest request]];
}
// Call this method when you want to show an ad
// [self showAdMobInterstitial];
-(void)showAdMobInterstitial {
// Lets present the ad
adMobInterstitial.delegate = self;
[adMobInterstitial presentFromRootViewController:self];
NSLog(@"adMobInterstitial presentFromRootViewController");
}
-(void)interstitial:(GADInterstitial *)interstitial didFailToReceiveAdWithError:(GADRequestError *)error {
// Failed to receive ad from AdMob
// Lets get another ad for the next time we would like to show one
adMobInterstitial = nil;
adMobInterstitial = [[GADInterstitial alloc] init];
adMobInterstitial.adUnitID = INTERSTITIAL_UNIT_ID;
[adMobInterstitial loadRequest:[GADRequest request]];
NSLog(@"didFailToReceiveAdWithError");
NSLog(@"%@", error);
}
-(void)interstitialWillDismissScreen:(GADInterstitial *)interstitial {
NSLog(@"interstitialWillDismissScreen");
}
-(void)interstitialDidDismissScreen:(GADInterstitial *)interstitial {
// User received ad and has closed it
// Lets get another ad for the next time we would like to show one
adMobInterstitial = nil;
adMobInterstitial = [[GADInterstitial alloc] init];
adMobInterstitial.adUnitID = INTERSTITIAL_UNIT_ID;
[adMobInterstitial loadRequest:[GADRequest request]];
NSLog(@"interstitialDidDismissScreen");
}