폰갭 phoneGap 용 MIT 라이센스 달려나온 push notification 입니다.

하지만 iOS 용만 사용하면 될것 같아서, 참고해 보려고 합니다.


https://github.com/phonegap-build/PushPlugin.git


소스 테스트 이후, git hub 에 따로 iOS 용 공개하려고 합니다. 위의 링크 소스와 같을 듯 싶지서도.. :)


Posted by Sungyoup Han matrim


Failed to build gem native extension


아이폰 개발을 하다보니, 요즘 이쁜 오픈소스 UI 들을 사용하려고 하는데, cocoapods 라는 Gem 을 설치 해야 해서, 사용하고 있는 OS X Mountain Lion (이하 마운틴 라이온) 에 설치하려고 하니 오류가 났습니다. 


Failed to build gem native extension


해결책은 : http://www.zlu.me/blog/2012/02/21/install-native-ruby-gem-in-mountain-lion-preview/ 잘 나와있습니다.


1. xcode 에서 Command Line Tools 를 설치 한다. 




아래 내용은, 터미널 로그를 그대로 스크린 샷을 떴는데요, 

처음에 sudo gem install cocoapods 를 했을 시 나오는 오류입니다.


2. 터미널에서 아래의 명령어를 실행해 줍니다.

ln -s /usr/bin/gcc /usr/bin/gcc-4.2

gcc-4.2 의 sym 링크를 만들어 주는 명령어 입니다.


3. sudo gem install cocoapods 명령어를 재실행 하면 재대로 설치됩니다.




Posted by Sungyoup Han matrim

The current deployment target does not support automated __weak references


iOS 5.0 이상에서 지원하는 ARC 를 사용하여 어플을 만들다 보니 ARC 는 무척 편하더군요. 근데 iOS5.0 이전 버전들을 지원하려면 어떻게 해야 할까 고민하다 인터넷을 뒤져보니.. 어느 멋진 분이 벌써 만들어놨네요. 


PLWeakCompatibility 를 다운받아 압축을 풀고



  1. PLWeakCompatibilityStubs.m 이 파일을 프로젝트에 넣어주세요 (전 h 파일도 같이 넣어줬어요)
  2. 그리고 xCode Target Settings 에 있는 Other C Flags 값을 -Xclang -fobjc-runtime-has-weak 로 바꿔주시면 됩니다.



타겟 클래스에 -release 와 -dealloc 을 적절히 섞어 넣어 주는 형식이라고 합니다. 디폴트로 PLWeakCompatibility 는 __weak 핸들링을 위해 MAZeroingWeakRef 를 사용합니다. MAZeroingWeakRef 를 사용하고 있다면, 있는걸 쓰겠지만, 없다면 내부적으로 알아서 처리하기 떄문에 뭐 그것도 상관은 없다고 하네요.


테스트 해보니 일단 위의 오류들은 깨끗하게 없어지네요. 작동을 잘 한다는 뜻이겠지요?


Posted by Sungyoup Han matrim

svn 서버에 git 클라이언트로 접속하여 쓰관리를 하고 있습니다. 개발자용 Mac OSX 10.8 Mountain Lion 골드 마스터 버전을 테스트 겸 설치하고 프리뷰 버전의 xCode 를 다운 받아 설치한뒤 테스트 해 보았습니다.

git client (source tree: 무료) 를 사용하여 사무실 svn 에 접속한뒤 pull 혹은 push 하려고 하니 에러가 나더군요. 자세한 내용은 캡쳐를라지 않아 알 수는 없지만 SVN/Core.pm in @INC 어쭈구 하면서 svn::_Core 에러 가 났습니다. 당황하여 인터넷을 찾아보니 문제해결이 되었다는군요 

참고 싸이트 : (http://victorquinn.com/blog/2012/02/19/fix-git-svn-in-mountain-lion/)

1. xCode 에 Command Line Tools 를 설치합니다. 설치하시려면, xCode 를 실행하시고 Preference 에 들어가 Downloads 탭을 누릅니다.


그림에서는 Command Line Tools 가 installed 라고 나오지만, 그건 이미 제 맥북에서는 설치가 되었기 때문입니다. 아마 설치 하지 않은 분들은 install 이라는 버튼이 보일것이며, 누르면 다운로드/설치 상태바가 나옵니다.


2. 그런뒤 터미널을 열어 아래 명령어를 넣어줍니다. 

엔터를 누르면 암호를 넣으라고 합니다. GIT svn 명령어는 Perl 라이브러리들이 필수 입니다. Mountain Lion 에서는 Perl 라이브러리들이 링크되어 있지 않기 때문에 오류가 나는 건데요, 위의 명령어를 넣어주어 라이브러리들을 링크 해줍니다.

$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.12/darwin-thread-multi-2level/SVN /System/Library/Perl/Extras/5.12/SVN


3. 설치가 잘 되었는지는 $ git svn rebase 명령어를 쳐 보시면 알 수 있지만, 제 컴퓨터에서는 알 수 없는 명령어라고 나오더군요. 여하튼 이 명령어를 치게 되면, Subversion core 는 찾을 수 있지만, 다른 필요한 라이브러리들을 찾을 수 없다고 나온다고 합니다. 그래서 아래 명령어를 또한번 적어 넣어줍니다.

$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.12/darwin-thread-multi-2level/auto/SVN/ /System/Library/Perl/Extras/5.12/auto/SVN

2번과 3번의 명령어엔 auto 가 두개 더 들어가 있습니다. 위의 명령어로 모든 Subversion Perl 디렉토리에서 필요로 하는 모든 라이브러리들이 링크 되었습니다.

위와 같이 하고 나니 정상적으로 git 클라이언트인 sourcetree 를 가지고 svn 서버에 연결하여 pull/push 모두 가능하게 되었습니다. 감사합니다.


Posted by Sungyoup Han matrim

[출처: http://stackoverflow.com/questions/6101286/making-a-button-call-a-phone-number-in-xcode ]

어플 내에서 버튼을 누르면 특정 전화번호로 전화를 걸어야 하는 기능이 들어가야 해서.. 찾아보니

아래와 같이 구현하면 바로 되네요.. 대신 전화번호 스트링의 형식이 있어요..

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:PhoneNo]]; 

PhoneNo 는  @"tel:2135554321"

이렇게 넘겨야 하는군요. 중간에 " - " 이 있어도 되구요. 제가 테스트 한 번호는..


@"tel:010-222-3333" 입니다. 

-(void)PhoneCall:(NSString*)PhoneNo{
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:PhoneNo]];
}    

Posted by Sungyoup Han matrim

아이폰 어플을 만들고, 아이튠스 커넥트를 통해 아이튠스에 올리면, 판매가 시작되는데요, 판매 리포트 중, 판매, 업데이트, 등이 있는데 아래와 같은 그림의 내용이 있습니다.


Royalty waived transactions.. 도대체.. 뭘까..
궁금해서 찾아봤습니다.
(https://apparentetch.com/2011/01/royalty-waived-transactions/)

리딤코드로 다운받은 경우라고 하네요.. :0

p= promo code (리딤코드) 사용하여 다운받아 진 내역입니다. (나만 몰랐나 봐요~~~~) 
Posted by Sungyoup Han matrim

[참고: http://www.iphonesdkarticles.com/2008/11/localizing-iphone-apps.html ]

간혹 필요한 아이폰에서 사용자 언어를 리턴하는 간단한 메소드 입니다.

NSString *resultCheckLanguage = [self checkLanguage];


로 받으시면 되겠네요.

-(NSString *)checkLangauge
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 
   return [[defaults objectForKey:@"AppleLanguages"] objectAtIndex:0];
}


resultCheckLanguage 결과문은

NSLog(@"current language: %@", resultCheckLanguage); 


로 확인해 보시면 아래와 같이 나옵니다. 

//한글일 때
     2012-02-27 10:58:36.167 wordList[1229:15803] current language: ko
//영어일 때
     2012-02-27 10:58:36.167 wordList[1229:15803] current language: en



Posted by Sungyoup Han matrim

이런저런 테스트를 하며 어플 하나 만들어 보다 보니..
암호를 입력하여 기능 잠금을 해야 하는 부분이 있어서 뒤적거려 봤습니다.

일단은.. TextField 에 번호를 입력 하는데, 보여지면 안되겠지요?

그래서 찾아봤더니, textField 의 메소드 중 setSecureTextEntry 라는 녀석이 있더군요.
넘기는 인자를 YES 로 넘겨주면 알아서 변환해 줍니다.

//숫자 대신 안보이는 점으로 변환

    [textField setSecureTextEntry:YES];




textField 에 글자 길이 지정해 주는 부분도 있긴 하지만..
개인적으로 사용하진 않았구요.. edit changed 이벤트를 사용해봤습니다.
무슨 이유인지 모르겠지만, setSecureTextEntry 와 함께 사용하기 좋더군요.

그럼 또.. 별거 아닌거 알아내려 갑니다.. ㅎㅎ :)
 
Posted by Sungyoup Han matrim