2013-02-03 2 views
0

이것은 멍청한 질문처럼 보입니다. 그러나 애플의 설명서와 쓸모없는 온라인 자습서를 모두 읽은 후에도 iAds을 내 응용 프로그램에 올바르게 구현하는 방법을 알 수 없습니다. 그래서, 내 애플 리케이션은 테이블 뷰 컨트롤러에서 시작하고, 내비게이션 바 아래 테이블 위의 iAd 개체가 있습니다.iAd가로드되지 않으면 숨기지 않습니까?

지금, 내 코드에서 : 나는 응용 프로그램을 테스트 할 때 문제가있다,

#import "MasterTableViewController.h" 

@interface MasterTableViewController() 
@end 

@implementation MasterTableViewController 
@synthesize bannerLoaded; 

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave 
{ 
    if (!willLeave) 
    { 
     // nothing in this case thanks to ARC 
    } 
    return YES; 
} 

- (void)bannerViewDidLoadAd:(ADBannerView *)banner 
{ 
    iAd.hidden = NO; 
} 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error 
{ 
    iAd.hidden = YES; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    for (int i = 0; i > 0; i++) 
    { 
     if (bannerLoaded) 
     { 
      iAd.hidden = NO; 
     } 
     else 
     { 
      iAd.hidden = YES; 
     } 
    } 
} 

지금하는 .m 파일에 다음

#import <UIKit/UIKit.h> 
#import <iAd/iAd.h> 

@interface MasterTableViewController : UITableViewController <ADBannerViewDelegate> 
{ 
    IBOutlet ADBannerView *iAd; 
} 
@property(nonatomic, readonly, getter=isBannerLoaded) BOOL bannerLoaded; 
@end 

(나는 또한 추가 말게 프레임 워크를) 인터넷 연결없이 iAd은로드되지 않지만 (분명히) 숨기지 않습니다. 그래서, 화면의 맨 위에 큰 흰색 직사각형이 남았습니다. 그렇지 않으면 연결이 가능할 때 광고가 제대로 작동합니다. 누구든지 아이디어가 있습니까? 또한 - 나는 그들이 무언가를 만들었는지보기 위해 무한 루프를 추가했습니다.

답변

0

귀하의 광고 상태를 저장하기 위해 bannerLoaded 속성을 보유하고 있습니다. 당신이 그에 따라 속성을 설정해야하므로 가장 먼저, 당신의 viewDidLoad 방법에서

는 말게은로드 할 수 없습니다 : self.bannerLoaded = NO;

을 그런 광고를받지 못하면/수신 할 때, 당신은 필요 이 속성을 업데이트하십시오.

- (void)bannerViewDidLoadAd:(ADBannerView *)banner 
{ 
    if (!self.bannerLoaded) { 
     iAd.hidden = NO; 
     self.bannerLoaded = YES; 
    } 
} 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error 
{ 
    if (self.bannerLoaded) { 
     iAd.hidden = YES; 
     self.bannerLoaded = NO; 
    } 
} 
+0

동일한 문제 :(. 모든 데이터를 끊고 응용 프로그램을 테스트 할 때 여전히 흰색 사각형이 나타납니다. – user1751797

+0

실제로 인터넷에 연결되어 있지 않으면 실제로 'bannerView : didFailToReceiveAdWithError :'가 호출되지 않습니다. 인터넷 연결 확인을 처리 할 수있는 다른 방법을 구현해야합니다. Apple에서 제공 한'Reachability' 라이브러리를 살펴보십시오. http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro. html – Yaman

+0

글쎄, 나는 지난 1 시간 동안이나 대답을 찾아 내서 해결책을 생각해 냈다. 나는 reachability 클래스가 관련되어 있다고는 생각하지 않지만 확실히 말할 수는 없다 : P 그래서 iOS 시뮬레이터에서 촬영했는데 다른 점이 많았습니다.그것은 내 배너에 대의원이 없다는 에러를 내게했습니다. 그래서 ViewDidLoad에서 : iAd.delegate = self; 그것을 다시 실행하고 그것은 예상대로 작동하는 것 같았다. 나는 그걸 내 아이폰에서 테스트했고, 몇 분 후에 예상대로 작동했다. 아이폰 테스트가 엉망이라고 생각합니다. 모든 도움을 주셔서 감사합니다! – user1751797

1

배너 위치를 초기화하는 위치를 볼 수 없기 때문에 스토리 보드를 통해 ADBannerView를 추가했다고 가정합니다.

  1. 스토리 보드에서 초기 위치를 화면 밖으로 설정하십시오.
  2. "bannerViewDidLoadAd"에서 배너를 뷰에 애니메이션으로 표시합니다.
  3. "bannerView : didFailToReceiveAdWithError :"에서 배너가 보이지 않게 움직입니다.

여기 좋은 예 https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/iAd_Guide/WorkingwithBannerViews/WorkingwithBannerViews.html

희망이 도움이 있습니다. 방금 구현했지만 코드에 액세스 할 수 없습니다.

시뮬레이터에서 오류가 발생하지만 장치에서 정상적으로 작동합니다.

iOS6에서이 기능을 테스트했으며 iAd가 표시되고 사용자가 연결을 잃어 버리더라도 작동합니다 ("bannerView : didFailToReceiveAdWithError :"가 나를 위해 호출 됨).

관련 문제