'Interesting/iPhone'에 해당되는 글 34

  1. 2010.07.10 [iPhone] iAd 붙여넣기
  2. 2010.03.11 [iPhone] OpenGL 투명 배경화면 만들기
  3. 2010.03.07 [iPhone] iDarter v0.6 업데이트
Interesting/iPhone | Posted by hyena0 2010. 7. 10. 20:40

[iPhone] iAd 붙여넣기


  iOS4가 나오면서 iAd 라는 광고시스템이 적용되게 되었습니다.

  아이폰 앱에 광고가 얼마나 수익을 얻을 수 있을지

  시험해 보기 위해 iAd를 붙여보기로 했습니다.

  최근에 iOS4 로 새로 빌드된 앱들이 많은지

  리뷰할때까지 거의 2주가 소요되더군요.

  결과는 보기좋게 "Reject" 되었답니다.

  그 이유는 아래와 같이 광고배너가 일시적으로 컨텐츠 없이 박스만 보이는 현상이 있는데
  이건 애플의 정책에 맞지 않는 다는 것입니다.





그러면 어떻게 해야 하면 아래와 같은 코드를 추가해야 합니다.

- (void)bannerViewDidLoadAd:(ADBannerView *)banner

{

    if (!self.bannerIsVisible)

    {

NSLog(@"bannerViewDidLoadAd -----");

        [UIView beginAnimations:@"animateAdBannerOn" context:NULL];

// assumes the banner view is offset 50 pixels so that it is not visible.

        banner.frame = CGRectOffset(banner.frame, 0, 50);//50

        [UIView commitAnimations];

        self.bannerIsVisible = YES;


    }

}


- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error

{//NSLog(@"didFailToReceiveAdWithError");

if (self.bannerIsVisible)

    {

NSLog(@"didFailToReceiveAdWithError");

        [UIView beginAnimations:@"animateAdBannerOff" context:NULL];

// assumes the banner view is at the top of the screen.

        banner.frame = CGRectOffset(banner.frame, 0, -50);//-50);

        [UIView commitAnimations];

        self.bannerIsVisible = NO;

    }

}


이렇게 하면 베너내부에 컨텐츠가 네트워크나 기타 여러사항으로 인해 지연될 경우, 
표시가 아예되지 않도록 합니다. 다시 연결되면 애니메이션 효과로 표시가 되도록 하는 것이지요.
  
일단 다시 등록했는데, 리뷰까지 얼마나 걸릴지 모르겠군요.
광고가 붙는게 승인나면 다음 업데이트까지 무료로 변경할 계획입니다.


 

  iPhone 에서 OpenGL 로 AR 기능을

  사용하려고 하면 필수적으로 OpenGL 의 

  모델 도형을 투명한 배경위에 보여줘야 합니다.

  그래서 설정해야 할 것들이 몇가지 있습니다.

  우선 기본 설정에서 RGBA8 로 해주고, 

  배경의 색깔을 모두 지운 후 alpha 에 투명값을 

  설정하는 겁니다. "0" 으로 말이죠.

  다시 정리하면 아래 코드를 볼 수 있습니다.

// The GL view is stored in the nib file. When it's unarchived it's sent -initWithCoder:

- (id)initWithCoder:(NSCoder*)coder {

    

    if ((self = [super initWithCoder:coder])) {

CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;

eaglLayer.opaque = NO;//no - transparent

eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:

[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];

context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];

if (!context || ![EAGLContext setCurrentContext:context]) {

[self release];

return nil;

}

animating = FALSE;

displayLinkSupported = FALSE;

animationFrameInterval = 1;

displayLink = nil;

animationTimer = nil;

// A system version of 3.1 or greater is required to use CADisplayLink. The NSTimer

// class is used as fallback when it isn't available.

NSString *reqSysVer = @"3.1";

NSString *currSysVer = [[UIDevice currentDevice] systemVersion];

if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)

displayLinkSupported = TRUE;

[self setupView];

}

return self;

}


해당 코드는 일반적으로 제공되는 OpenGL 코드인데, eaglLayer.opaque = NO 로 설정해야 투명한 배경을


얻을 수 있습니다. 또한 도형을 그리는 부분에서는 배경화면의 색깔을 투명으로 지정해야 합니다.


        glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


여기서 glClear(Red, Green, Blue, alpha) 값을 보시면 모두 0 으로 설정하면 됩니다.


그런데 이렇게 하고서 투명처리가 안되어 무지 고생을 했습니다.


알고 봤더니 인터페이스 빌더에서 해당 OpenGL 을 그리는 View 의 배경색이 흰색으로 설정되어 있었습니다.





그래서 위와 같이 View 를 선택한 뒤, 배경색 팔레트에서 Opacity 값을 0 으로 설정하면 


View 자체가 투명한 색을 가지게 됩니다.


그러면 아래와 같은 투명배경의 도형을 카메라와 같이 볼 수 있게 됩니다.




Interesting/iPhone | Posted by hyena0 2010. 3. 7. 13:16

[iPhone] iDarter v0.6 업데이트




  iDarter v0.6이 업데이트 되었습니다.

  Advanced 모드를 추가 했는데요.

  기존 모드는 Easy 모드로 변경하고

  움직이는 타겟을 맞출 수 있도록 한 것이

  추가된 내용입니다.

  수평과 수직으로 움직여야 하는 것이 

  게임의 불편한 요소일 수도 있는데,

  그 부분을 수정해야 할지는 좀 고민해야 할 것 같네요.