'iPhone'에 해당되는 글 23

  1. 2010.08.05 [iPhone] AVFoundation 빌드오류에 관해
  2. 2010.07.31 [iPhone] Compass 구현하기
  3. 2010.07.10 [iPhone] iAd 붙여넣기

AVFoundation 오류에 관해

WWDC 10 에서 카메라에 관한 데모를

보여준 내용이 있습니다. 

아이튠즈에서 볼 수 있는 session video제목은

"Using the Camera with AV Foundation" 입니다.

여기서 카메라의 하부 API 를 이용해서 조작하는 

데모들이 선보입니다. 

WWDC 10 sample 코드를 다운로드 받으면 해당 코드들을 볼 수 있습니다.

AVFoundation  관련 코드 중에 FindMyIcon의 Process 를 실행 시켰는데, 빌드 에러가 났답니다.

AVFoundation 을 찾지 못하는 에러였지요.

cannot find protocol declaration for 'AVCaptureVideoDataOutputSampleBufferDelegate'

그래서 검색해 보니 다름이 아니라 시뮬레이터로 설정해놓으면 빌드에러가 나더군요.

Device 로 설정하고 나면 AVFondation 을 잘 찾고 빌드가 잘 됩니다.

참조하시길...





Interesting/iPhone | Posted by hyena0 2010. 7. 31. 23:52

[iPhone] Compass 구현하기



iPhone 에서 나침반을 구현하려고

할 때, 아래와 같은 작업을 수행하면 됩니다.

사용하고자 하는 클래스에서

CLLocationManagerDelegate의 프로토콜

사용을 선언합니다.

CLLocationManagerDelegate 에는 다음의 

메소드가 있습니다. 

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading


이 메소드를 구현해 주고,  CLLocationManager에서 startUpdatingHeading를 실행시켜주면

구현된 위의 메소드를 실행해서 Heading값을 가져오게 됩니다.

아래는 간단히 예제를 정리해 봅니다.

* header file

#import <XX.h>

#import <XXX.h>

@interface 클래스명 : 슈퍼클래스명 <CLLocationManagerDelegate>{


   .....내용..... 


}


* implementation file 
....

- (void)viewDidLoad { //viewcontroller 라고 가정

        CLLocationManager *locationManager=[[CLLocationManager alloc] init];

locationManager.delegate=self;

locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters;

 

[locationManager startUpdatingHeading];//heading값 호출 시작


.....내용.....


}
....

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading{

headingData = newHeading.magneticHeading;//heading 값 중 자기장 값 가져오기

NSLog(@"Magnetic heading value : %f", headingData);//로그로 확인


        ...기타 추가 구현....


}


위와 같이 구현하면 headingData 에서 나침반의 각도값을 가져올 수 있습니다.





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;

    }

}


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