본문 바로가기

프로그래밍439

iOS ffmpeg player (rtsp 플레이어) 출처 : http://bluexmas.tistory.com/277 ffmpeg 라이브러리를 이용해서 wowza서버를 사용하는 rtsp 플레이어를 제작해보았습니다. 소스는 iFrameExtractor 프로젝트에서 파일 오픈하는 부분을 rtsp 주소를 사용했고, ffmpeg 라이브러리 경로를 따로 설정해서 컴파일 했습니다. 설치한 ffmpeg 라이브러리가 ios용으로 컴파일 되어 있어서 시뮬레이터에서는 테스트 할 수가 없네요. iFrameExtractor 프로젝트는 ffmpeg 라이브러리만 사용했기 때문에 플레이는 되지만, 속도는 나오지 않습니다. OpenGL ES / SDL 라이브러리 이용해야 될 것 같네요. 출처 http://stackoverflow.com/questions/10518082/how-can.. 2012. 9. 5.
Objective-C에서 NSFileManger와 NSFileHandle을 이용하여 문자열을 파일로 저장하는 방법 출처 : http://blog.saltfactory.net/117 iPhone이나 Cocoa 애플리케이션을 개발하면 데이터 저장 방법에 대해서 고민을 하게 된다. 애플리케이션이 종 료했다가 다시 실행되었을 때 이전의 데이터를 다시 사용하고 싶기 때문이다. plist나 SQLite와 같은 저장 방법은 매우 효과적으로 구조화된 데이터를 저장하거나 읽어 올 수 있다. 애플리케이션이 크기 않거나 단순한 데이터를 저장하고 싶을 경우는 SQLite를 사용하지 않고 텍스트를 저장하거나 읽어올 수 있게 만들 수도 있다.이 때 사용할 수 있는 가장 기본적인 방법이 바로 파일을 이용하는 방법이다. plist도 파일로 저장하는 것이지만 plist 특징상 XML 형태로 저장이 된다. 이 포스트에서 설명하는 텍스트 저장 방법은.. 2012. 9. 4.
페이스북 공유하기에 엉뚱한 글, 그림이 들어간다면 출처 : http://pat.im/812 페이스북에서 글을 공유하면 페이스북이 알아서 미리보기 그림(썸네일)을 넣어 준다. 그런데 엉뚱한 그림이 들어가거나 바라는 그림이 뒤로 밀릴 때가 잦다. 앞서 공개했던 SNS에 글 보내는 단추 달기 확장기능(플러그인)에서 그런 일이 생겨서 와일드님이 물으신 적이 있는데, 이 문제는 확장기능과는 무관하다. 페이스북 공유하기를 살피다가 다음과 같은 규칙을 알아 냈다. 페이스북은 태그 안의 그림을 미리보기로 넣는다.미리보기 그림 순서는 파일 이름 순으로 들어간다.CSS에서 background(background-image) 속성으로 넣은 그림은 들어가지 않는다. 블로그 스킨(테마)에 붙인 그림이 페이스북 공유하기에 들어가지 않게 하려면 아래처럼 그림 경로를 에 넣지 말고.. 2012. 8. 14.
페북 Single Sign On 을 iOS앱에 적용하기 출처 : http://www.iosappdev.co.kr/iosappdev/?p=1652 그렇게 읽기 싫게 생긴 문서였는데 서문을 번역해서 집중도를 높인다음 브라우저 폰트키워서 차근히 읽어봤습니다. 간단하다 쉽다 좋다 무한반복. 다 읽어보니 정말 간단하더군요. 그럼 문서를 진짜 간단해 보이게 쓰던가. 그림도 한장 없고 말이야 쯧 Facebook Single Sign On Integration Summary Facebook iOS SDK를 다운로드 받는다. git hub에 소스까지 공개되어 있습니다iOS 앱 프로젝트에 포함시킨다 두가지 방법이 있는데 하나는 소스 폴더를 통채로 끌어다가 iOS앱 프로젝트에 포함시키는겁니다. 페북 SDK가 ARC를 지원하지 않기 때문에 iOS앱 프로젝트에서 ARC를 사용하면 .. 2012. 8. 8.
아이폰에서 통신 사업자 및 국가코드 알아 오기. 출처 : http://gyuha.tistory.com/418 이제는 SK에서도 아이폰이 나오니.. 슬슬 필요 하지 않을까 싶어서 적어 봅니다. 아래 코드를 이용하면, 핸드폰의 국제 설정이 아니라, 서비스의 위치로 사용 할 수도 있습니다. 먼저 프로젝트에서 CoreTelephony.framework를 추가해 줍니다. 그리고 아래와 같은 코드를 넣어 주시면 됩니다. #import #import CTTelephonyNetworkInfo *networkInfo = [[[CTTelephonyNetworkInfo alloc] init] autorelease];CTCarrier *carrier = [networkInfo subscriberCellularProvider]; // 사업자 이름 알아오기NSString *c.. 2012. 8. 4.
YouTube에 동영상 업로드 출처 : http://blog.naver.com/saturna?Redirect=Log&logNo=60125222351 아이폰, 아이패드 앱에서 YouTube에 동영상을 업로드 할때Google에서 제공하는 gdata-objectivec-client api를 사용한다. http://code.google.com/p/gdata-objectivec-client/위 URL에서 gdata api를 다운로드한다. 다운로드한 소스를 개발중인 앱의 프로젝트에 추가하는 방법1. 다운로드한 gdata api의 GData.xcodeproj 를 실행하여 xcode에서 gdata project를 open 한다.2. 개발중의 앱의 프로젝트도 xcode로 open 한다. 2개의 프로젝트가 오픈된 상태이다.3. GData 프로젝트의 ".. 2012. 8. 2.
xCode4.2에서 GData API 사용하기(2/2) 출처 : http://magicmon.tistory.com/76 조금전에 GData 프로젝트에서 libGDataTouchStaticLib.a를 추출하였습니다. 이번시간은 이 추출한 파일을 내 프로젝트에서 적용하는 방법입니다. 개발할 프로젝트를 생성합니다. 프로젝트에 Headers폴더에 있는 파일과 libGDataTouchStaticLib.a를 추가합니다. 이제 Build Setting으로 이동합니다. Header Search Paths를 검색해서 다음 경로를 추가합니다. /usr/include/libxml2 Other Linker Flags를 검색해서 다음을 추가합니다. -lxml2 Other C Flags를 검색해서 Debug에 다음을 추가합니다. -DDEBUG=1 이제 설정이 끝났습니다. GData를.. 2012. 8. 2.
xCode4.2에서 GData API 사용하기(1/2) 출처 : http://magicmon.tistory.com/75 xCode 4.x에서 GData API 사용하는 방법에 대해서 간단하게 설명 드리겠습니다. (아이폰, 아이패드, 아이팟 용) 우선 GData 프로젝트에서 StaticLibray를 추출해야 합니다. 1. GData 프로젝트를 다운로드 합니다. svn checkout http://gdata-objectivec-client.googlecode.com/svn/trunk/ gdata-objectivec-client-read-only 2. GData 프로젝트를 실행합니다. (다운받은 경로)/gdata-objectivec-client-read-only/source/GData.xcodeproj 3. GDataTouchStticLib.a 파일 추출 프로젝트.. 2012. 8. 2.
CATransition - Efects for Animation 출처 : http://cafe.naver.com/mcbugi/215685 // Efects for Animation. // 0 (UIViewAnimationTransitionNone) Yes // 1 (UIViewAnimationTransitionFlipFromLeft) oglFlip, fromLeft Yes // 2 (UIViewAnimationTransitionFlipFromRight) oglFlip, fromRight Yes // 3 (UIViewAnimationTransitionCurlUp) pageCurl Yes // 4 (UIViewAnimationTransitionCurlDown) pageUnCurl Yes // 101 pageCurl Yes 페이지 넘기는 효과 (다음장) // 102 pag.. 2012. 7. 22.
[snippet] Touch Method 출처 : http://cafe.naver.com/mcbugi/222780 이것도 별껀 아닌데.. 그냥 올려둡니다. 교재에 나와있는건데.. 쓸때마다 귀찮더라구여.. 걍 스니펫 넣어서 돌리고 있습니다. 메소드 내부에 로그들은 따로 안건드렸습니다. 걍 두면 로그 찍어줍니다. 필요한 부분있으면 쓰면될듯하고.. #pragma mark - Touch Began, Moved, Ended - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { NSUInteger touchCount = [touches count]; NSUInteger tapCount = [[touches anyObject] tapCount]; NSLog(@"Touches Began"); .. 2012. 7. 22.
[snippet] 현재 설치된 앱의 경로 확인 출처 : http://cafe.naver.com/mcbugi/222540 경로 확인 스니펫 코드 입니다. 사용목적은.. sqlite 찝적대가다 설치된 어플상태를 확인해야되는데.. iFunBox 를 통해서 들어가보면.. @#$#$^#%^%& ㅡㅡ; 수십개 어플 다열어봐야 내어플 폴더 이름을 알게되는.. (이짓거리 두번할게 안되어서..) 어플 폴더 이름 확인용입니다. 로그에 찍혀욤.... viewDidLoad 안에 넣어주시면 되구염.. NSArray *dirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docsDir = [dirPath objectAtIndex:0]; NSLog(@.. 2012. 7. 22.
[snippet] UIGestureRecognizer 출처 : http://cafe.naver.com/mcbugi/222530 제스쳐 스니펫입니다. 뭐 별로 복잡하게 꼬여있지 않아서.. 올려봅니다. viewDidLoad 만 좀 수정하면 나머지는 그냥 씁니다. (필요없으면 지워도 되고...) 밑에 노트넣어놨습니다. 같이 넣어두시면 나중에 한두번 다시 보게될듯 합니다. 처음에는 파일 첨부를 했는데 뭐 따로 받아다 넣는것 보다 그냥 코드 긁어다 추가해주면 그게 더 쉽겠습니다. 긁어다 놓고, 이름지어주고, 단축키넣어주고. 끝. 아래는 스니펫 코드 입니다. (걍 긁어다가 넣으면 들어가더라구여..) #pragma mark - UITapGestureRecognizer // Note. // 뷰컨트롤러에서 사용한다. // swipe 와 pan 은 동시사용이 안된다 (pan.. 2012. 7. 22.
[snippet] Lazy Instantiation 출처 : http://cafe.naver.com/mcbugi/222516 Lazy Instantiation 참고로 저는 입문자 입니다. 자세히는 몰라요..^^; Lazy Instantiation 이라는걸 사용하기전에...프로퍼티 선언부터 잠시 짚고 넘어가겠습니다. 한국인을 위한 ..... 팟케스트 보고 정리해보는 겁니다. 클래스에 헤더를 import 하죠... #import #import "sdfasd.h" @interface sdfasdViewController : UIViewController @property (nonatomic, strong) sdfasd *objectPlus; @end 저렇게 프로퍼티를 선언해주고.. @synthesize objectPlus = _objectPlus; 위에 처럼 .. 2012. 7. 22.
[snippet] 기기회전에 따른 요소 재배치 출처 : http://cafe.naver.com/mcbugi/222510 기기 회전에 따라 UI 요소를 재배치해야되는경우 위치 재설정 하는 메소드를 여기서 구현하면 된답니다. 스니펫 추가 방법은.. 따로 게시물이 있으니 참고하여 주시와요... 참고로.. 제가 로그 찍어볼때는 FaceUP, FaceDown, UnKnown 상태가 안찍히더라구여.. 아시는분 댓글좀 달아주셈.. 걍 긁어다 스니펫 넣으삼.. ^^ - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { switch ([UIDevice currentDevice].orientation) { // 재배치 요소의 값이 같으면 케이스끼리 묶으면 .. 2012. 7. 22.
[snippet] iAd 삽입 출처 : http://cafe.naver.com/mcbugi/222492 삽질하다가 편하게 만들어 진것 같아서 올려봅니다. Snippet 코드 조각입니다. 앞으로도 이런식으로 만들어서 올려보겠습니다. 사용법은 알아서? ㅋ 사용법도 하나 제대로 정리해서 올려보겠습니다. 첨부파일은 코드스니펫 파일 그대로이고... 저장경로는 /Library/Developer/Xcode/UserData/CodeSnippets 여기다가 저장하면 됩니다. 작업환경은 OSX 10.7.4, Xcode 4.3.2 , iOS 5.1 sdk 입니다. 참고로 스토리보드나 nib에 adbannerview 따로 안넣어도 됩니다. 코드로 로드하도록 되어 있습니다. 단축키 snAdbanner 이하 스니펫 코드. #pragma mark - iAD z.. 2012. 7. 22.
라이트 버전 어플 만들기 출처 : http://cafe.naver.com/mcbugi/207332 안녕하세요 똥그러니 입니다. 유료 어플만든후 무료 어플을 만들거 아니면 비슷한 어플을 몇개 더 만들때 보통분들은 프로젝트를 전체 폴더 통째로 복사해서 하시더라고요... 그럴경우 어느 한부분에 버그등으로 인해 수정사항이 발생했을경우 복사했던 모든 소스를 수작업으로 수정해야한다는 치명적인 단점으로 사소한 실수를 유발할수 있더라고요... 그래서 보통 라이트 버전을 만들때 한개의 프로젝트에 TARGET을 추가해서 어플을 새로 만드는 방법을 공유하고자 합니다. 즉!! 하나의 프로젝트에서 여러개의 어플이 나오게 하는방법 입니다. 설명 : 프로젝트 클릭 -> 일단 타켓을 하나 더 만든다(프로젝트 밑에 타겟이 있다) 위 링크에서 보면 멀티 타켓팅.. 2012. 7. 21.
IOS 디바이스별 화면 구성요소 출처 : http://cafe.naver.com/mcbugi/208014 요즘 앱 개발 마무리 작업으로 열심히 서핑도 하고 자료도 찾는데 좋은 자료가 있어서 싸이트 링크 + 펌을 합니다. 주소는 http://firejune.com/1723/iOS+%EB%94%94%EB%B0%94%EC%9D%B4%EC%8A%A4%EB%B3%84+%ED%99%94%EB%A9%B4+%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C+%EC%B9%98%EC%88%98%EB%93%A4 고 http://firejune.com/ 라는 싸이트에는 올린 내용이네요. IOS 디자인을 처음에 640*960 으로 했는데, 추후에 이것이 레티나용이라서 붙일때 어떻게 해야하나 했는데 여기에 크기별 참고 자료가 있네요. 포토샵으로 .. 2012. 7. 21.
인엡 재구매 복구 로직(restore button) 출처 : http://cafe.naver.com/mcbugi/219432 원문(리스토어와 인엡 풀소스) - http://www.changwoo.net/bbs/bbsDetail.do?&num=545 애플의 정책이 바뀌어 non-consume in-app은 무조건 restore(복구) UI가 있어야 합니다, 안그러면 리젝사유가 되어 가슴아픈 경험을 하게 됩니다. 그에 따른 로직을 올립니다. 버튼에 이벤트로 - (void) onClickRestore:(id)sender 를 호출하면 checkPurchasedItems -> 상황1 - 로그인 취소- > (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NS.. 2012. 7. 21.
SNS에서처럼 날짜를 현재부터 지난시간을 계산하여 문자열로 만들기 출처 : http://cafe.naver.com/mcbugi/223326 SNS 같은 곳에서 글 등록할때 보면 "2012년 7월 16일 09:00" 이렇게 나오는게 아니라 "지금 등록", "5분전", "1일전" 이런형태로 나오는 걸 보셨을 겁니다.. 간단하게 NSString 카테고리로 만들어 봤습니다. 글 등록 4일부터는 일반 날짜형태로 나오게 됩니다. 선언부 @interface NSString (CustomAddFunction) + (NSString *)calculateDate:(NSDate *)date; @end 구현부 @implementation NSString (CustomAddFunction) + (NSString *)calculateDate:(NSDate *)date { NSString *in.. 2012. 7. 21.
iPhone App's 개발 시 GUI 재구성 쉽게 하는 법 출처 : http://lambert.tistory.com/203 아이폰 애플리케이션 개발 시 최초 설계한 GUI를 변경할 필요가 있을 경우 다음과 같이 비교적 쉽게 GUI를 재구성 할 수 있다. 다음의 예는 최초의 뷰는 스크롤 기능이 없었지만, TextField를 선택하여 키보드가 뷰를 덮을 때에 사용자의 편의를 위해 뷰에 스크롤 기능을 추가하는 경우이다. 1. IB(Interface Builder)에서 Scroll View 하위에 둘 Widget(Controll)들을 선택한다. 2. 그리고 IB 메뉴에서 Layout -> Embed Objects In -> Scroll View 옵션은 선택한다. 3. 그러면 다음과 같이 *ViewController.xib 윈도우에서 선택한 컨트롤들이 스크롤뷰 하위로 묶.. 2012. 7. 20.
디버깅시 NSLog 팁 출처 : http://reysion.tistory.com/19 디버깅시 유용한 팁이다. 우리는 로그를 출력할 때 NSLog를 사용하는데 파일명과 함수명 그리고 라인넘버를 출력하려면 다음과 같은 코드를 쓰면된다. NSLog(@"%s :: %s :: %d" , __FILE__,__FUNCTION__,__LINE__); 위처럼 로그를 찍으면 해당 소스파일의 위치와 라인을 Debugger Console에서 다음과 같이 출력해 준다. [Session started at 2011-01-24 17:03:41 +0900.] 2011-01-24 17:03:47.009 adidas[2614:207] /Users/reysion/Documents/ex/Classes/LoginView.m :: -[LoginView loginA.. 2012. 7. 17.
NSLog 업그레이드 + Debug 모드에서만 로깅하기 출처 : http://theeye.pe.kr/entry/upgrade-NSLog-only-working-debug-mode iPhone 개발환경을 보면 Visual Studio, Eclipse와 같은 화려한 IDE의 지원을 받아오던 저로서는 답답하고 답답하고 안타깝기에 그지없는 상황이 자주 연출되곤 합니다. 가끔씩 gdb에 근거한 알수없는 로깅시스템도 한몫을 하는데요 우리의 허접하기 짝이없는 NSLog를 화려하게 업그레이드 시키는 방법을 알아보도록 할까요. 우선 목표는 NSLog의 내용을 파일명과 에러발생 지점 라인, 기타 정보를 포함함과 동시에 빌드시에 선택하는 ActiveConfiguration을 Debug로 선택했을때만 로깅하도록 해보겠습니다. 그림을 하나 보도록 하겠습니다. 이것과 같은 순서로 O.. 2012. 7. 17.
Build Acrhive 시 icon관련 에러가 발생할때 배포를 하기 위해 Xcode에서 Build Acrhive를 실행하니 이전에는 발생하지 않던 아이콘 관련 에러가 계속 발생했다. 에러 내용은 다음과 같다. iPhone/iPod Touch: icon.png: icon dimensions (0 x 0) don't meet the size requirements. The icon file must be 57x57 pixels, in .png format (-19014) 아이콘 사이즈와 관련된 에러인데 분명히 레티나용 아이콘과 일반 3G용 아이콘을 사이즈 맞춰서 넣어 적용했는데도 계속 에러가 발생했다. 무슨 문제인지 구글링을 해보니 아이콘 이미지의 경우 이미지 타입을 바꾸어 주어야 한단다. Xcode 3.x에서는 해당 이미지에서 오른쪽 클릭해서 Get Info .. 2012. 7. 11.
아이팟 모드 만들기 - iPod Library 접근하기 출처 : http://adolchristin.tistory.com/41 기본 적인 문서는 애플 개발자 페이지의 http://developer.apple.com/library/ios/#documentation/Audio/Conceptual/iPodLibraryAccess_Guide/Introduction/Introduction.html 이곳을 참조 하였다. -(void) selectMp3 { NSLog(@"selectMp3"); MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic]; //MPMediaPickerController *picker = [[MPMediaPickerC.. 2012. 7. 10.