11월, 2013의 게시물 표시

소액결제 유도 추정 문자

이미지
바로 위와 같은 문자가 왔네요. 아이폰이라 클릭이 되지 않네요. 위 숫자는 아이피로 클릭하면 서버로 연결이 됩니다. 연결되면 서버에 설정된 일이  실행되겠지요. 가령, 소액결제 나 연락처 주소 등 개인정보를 가져갈 수 있습니다. 해결법은 보낸 번호를 차단하고 메시지는 삭제 하는 겁니다.

[iOS] how to use video capture(landscape, full screen)

이미지
비디오 캡쳐에서 가로보기가 전체화면으로 안될 때가 있다. 이에 여러가지 문제를 하나씩 찾아가며 처리한 내용을 여기에 정리한다. 정립한 순서는 다음과 같다. 먼저 헤더파일은 다음과 같다.  델리게이트를 하나 추가한다 다음은 모듈파일이다.  사용할 변수와 상수 그리고 메소드 선언한다. 다음은 뷰가 생성될 때 이루어 지는 내용이다. 여기서 중요한 점은 가로보기 설정인데 전체 스크린을 돌렸으니 뒤집어서 설정해야 한다. 이 한줄이 핵심이다.  나머지 설정을 하고 앞에 만들었던 레이어를 추가하는데 버튼 등을 사용해야 하므로 그 앞단에 뷰를 추가하였다.  뷰가 보일려고 할 때 스위치를 설정한다.  준비 메소드이다.  카메라 위치 설정이다. 파일을 저장할 때 사용한다.  버튼 이벤트를 입력 끝으로 카메라 토글 버튼 이벤트이다. 이런 순으로 작성하면 카메라 녹화를 가로로 할 수 있다.

어느 간호사의 "사과 좀 깎아 주세요"

자주 가는 PHPSchool 사이트 게시판에 이런 글이 올라왔습니다. 을씨년스런 날씨에 가슴을 울리며 눈시울이 붉어집니다. 다음은 게시판의 글을 옮겨 적었습니다. 암병동 간호사로 야간 근무할 때였다. 새벽 다섯시쯤 갑자기 병실에서 호출벨이 울렸다. "무엇을 도와 드릴까요?" 그런데 대답이 없었다. 환자에게 무슨 일이 생겼나 싶어 부리나케 병실로 달려갔다. 창가쪽 침대에서 불빛이 새어 나왔다. 병동에서 가장 오래 입원 중인 환자였다. "무슨 일 있으세요?" 놀란 마음에 커튼을 열자 환자가 태연하게 사과를 내밀며 말했다. "간호사님, 나 이것 좀 깎아 주세요." 헐레벌떡 달려 왔는데 겨우 사과를 깎아 달라니 맥이 풀렸다. 옆에선 그의 아내가 곤히 잠들어 있었다. "이런 건 보호자에게 부탁해도 되잖아요?" "그냥 좀 깎아 줘요." 다른 환자들이 깰까봐 실랑이를 벌일 수도 없어 나는 사과를 깎았다. 그는 내가 사과 깎는 모습을 가만히 지켜보더니 이번에는 먹기 좋게 잘라 달라고 했다. 나는 귀찮은 표정으로 사과를 반으로 뚝 잘랐다. 그러자 예쁘게 좀 깎아 달란다. 할일도 많은데...., 별난 요구를 하는 환자가 못마땅해 못들은 척하고 사과를 대충 잘라 주었다. 며칠뒤...., 그는 상태가 악화되어 세상을 떠났다. 삼일장을 치른 그의 아내가 수척한 모습으로 나를 찾아왔다. "사실 새벽에 사과 깎아 주셨을 때 저 깨어 있었어요." "그날 아침, 남편이 결혼기념일 선물이라며 깎은 사과를 내밀더라구요." "제가 사과를 참 좋아하는데 남편은 손에 힘이 없어 깎아 줄 수가 없었어요." "저를 깜짝 놀라게 하려던 마음을 지켜 주고 싶었어요." "그래서 간호사님이 바쁜 거 알면서도 모른척하고 누워 있었어요." &q

핸드폰 소액결제 사기꾼들 조심하세요.

핸드폰 요금이 갑자기 많이 나왔네요. 평소 4만원 이하였는데 5만 얼마가 나왔습니다. 요금 고지서를 찾아 봤더니 소액결제가 추가 되었네요. 소액결제이용료 16,500원 <- 이놈이 뭐하는 놈일까요? 인포허브디지털소액결제 라고만 나와 있더군요. 그리하여 올레 케이티 고객센터에 전화를 했습니다. 핸드폰에서 114를 누르면 되더군요. 자동안내 등 여러차례의 절차를 거쳐서 약 2분여 후에 상담원과 연결할 수 있었습니다. 이런 전화가 많이 오는지 상담원이 환불을 받는 전화를 알려주더군요. 또한 소액결제 차단 서비스를 권유해서 차단하였습니다. 0502-330-6677 로 전화를 하였습니다. 위 번호에서도 뭘 누르라는게 많더군요. 바로 연결하면 뭐가 어쩐다고.....쩝 연결하니 역시 다른 번호를 알려줍니다. 0505-300-0765 로 하라는 군요. 해당 번호로 연결하였습니다. 저의 전화번호를 묻더군요. 바로 환불조치 한다고 하여 계좌번호도 묻습니다. 저는 결제한 적이 없는데 왜 요금이 나왔지 물었습니다. 또한 거기가 뭐하는 곳인지도.... 무슨 디스크 처럼 영화를 보는 서비스라더군요. 10.31에 웹사이트로 자동가입이 되어 3개월 무료로 제공하고 그 다음부터는 매월 16,500원씩 요금이 나간다고 하더군요. 전 그런 사이트에 가입한 적이 없다고 하였는데 그건 자기들이 알 수 없다고 하더군요. 세상에 이런 사기꾼들이 있을까요? 정부는 뭐하는지 이런 사기꾼들이 활개를 치고 다닐까요? 소액결제로 물건을 많이 사는 사람들은 16,500원을 알수 없을 경우가 많습니다. 선량한 고객들의 푼돈을 훔쳐서 자신은 배부르게 살겠다는 심정인데 이런 사람들의 머리속은 어떻게 구성되어 있을까요?

iOS self.variable 과 _variable 의 차이점

그냥 무턱대고 개발을 하다 보면 문득 궁금한 점이 생긴다. self.variable 과 _variable 의 차이가 무얼까? 보통 iOS는 h 로 불리우는 헤더파일 (보통은 Public 으로도 부른다. 이곳에 선언을 하면 Public 이 되기 때문이다.) 과 m 으로 불리우는 모듈파일(보통은 Private로 불리우며 이곳에 선언을 하면 Private 가 되기 때문이다.) 헤더파일에 만약 다음과 같이 변수를 하나 선언하였다면 @property NSString *stringVariable; 이를 보통 모듈파일에서 이렇게 사용한다. 1. self.stringVariable  2. [self stringVariable] 3. _stringVariable 1번과 2번은 사용법만 다르지 같다. 하지만 3번은 다르다. 1번가 2번은 객체를 사용하는 방법이며 3번은 인스턴스 변수를 접근하는 방법이다. 인스턴스 변수는 객체를 할당하고 시작해야 접근할 수 있다.

iOS 두 값을 비교할 때 주의할 점

iOS 개발을 할 때 종종 두 값을 비교하는 방법을 사용한다. 보통은 이렇게 사용한다 if (obj1 == obj2) {   // 처리 방법 } 이것은 두개의 객체 포인터가 같은 곳을 가리키는 경우만 해당된다. 두 객체의 값이 즉, 데이터가 같을 경우는 다음과 같이 사용해야 한다. if ([obj1 isEqual:obj2]) {   // 처리 방법 } Objective C는 그냥 C와 다르다. 그냥 지나치기엔 내용이 많이 달라지므로 명심하도록 하자.

iOS In-App Purchase 02 Coding

개발을 하기 위해서는 프레임웍을 추가해야 한다. StoreKit.framework 를 추가하자. 그다음 전역헤더 파일에 추가할 내용이다. 아래와 같이 프레임워크를 임포트 하자. #import < StoreKit/StoreKit.h > 다음은 델리게이트와 사용할 전역변수를 추가한다. @interface ADViewController : UIViewController < SKProductsRequestDelegate , SKPaymentTransactionObserver > {     SKProductsRequest *productsRequest;     NSArray *validProcucts; } 나중에 사용할 메소드를 추가한다. - ( void )fetchAvailableProducts; - ( BOOL )canMakePurchases; - ( void )purchaseMyProduct:( SKProduct *)product; - ( IBAction )purchase:( id )sender; 이제 실행할 m 파일에서 할 내용이다 상수로 아이튠즈에서 설정한 프로덕트아이디를 설정한다. 이는 import 와 interface 사이에 추가하면 된다. #define kProductID @ "com.xxx.xxx.noAd" 이제 실행하면서 구입할 수 있는지 여부를 체크하도록 하자 이는 ViewDidLoad 에 추가했다. 다음과 같이 한 이유는 2초 이후에 실행되도록 지연실행을 걸어준것이다. [ self performSelector : @selector (fetchAvailableProducts) withObject : self afterDelay : 2.0 ]; 이제는 다음과 같이 관련 메소드를 추가한다. 여기서 입맛에 맞게 관련내용을

iOS In-App Purchase 01 아이튠즈 설정

앱내 구입방법을 간단하게 정리한다. 먼저 아이튠즈에 들어가서 Manage Your App에 들어가서 해당 앱을 선택한다. 오른쪽 상단에 Manage In-App Purchase 가 있다. 들어가서 관련설정을 한다. 상단의 Create New를 클릭하여 여러가지를 설정한다. 중요한 것은 Type을 선택한 후 Product ID 이다. 이는 프로그램에서 해당 아이템을 구분하기 위한 구분자로 생각하면 되겠다. 나머지 설정은 그냥 그럭저럭 무난하게 할 수 있다. 잘 모르겠으면 하고 싶은대로 하면 된다. 여기서 중요한 게 있다. 나도 여기서 한동안 헤멨다. 마치 안개속을 걸어다니는 것처럼......, 위와 같이 설정한 다음에 수정중인 앱 설정하는 곳의 View Detail에 들어가서 (이때 앱은 수정중이어야 한다, 아니면 버전추가로 하나 수정을 만들자) 아래로 스크롤을 내리면 In-App관련이 있다. 여기에 조금전에 추가한 내용이 보인다. 이를 앱에 적용하려면 체크하여 추가하도록 하자. 여기까지하면 개발준비상태가 된 것이다.

iOS 메소드를 지연 실행시키는 방법

어떤 메소드를 실행시킬 경우 지연시키는 방법에 대한 고찰이다. 첫번째 가장 간단하게 사용하는 경우 sleep(1000); 이렇게 하면 1초를 지연시킨다. 그다음 조금 더 세련된 방법으로 스레드를 이용할 수 있다. [ NSThread sleepForTimeInterval :1. 0 ]; 스레드로 프로세스를 쪼개서 사용할 때 유용하다. 하지만 GCD안에서 좀더 확실하고 세련되게 사용되는 방법은 없을까? 고민을 하였다. 결국인 이렇게 사용한다. dispatch_time_t popTime = dispatch_time ( DISPATCH_TIME_NOW , 1. 0  * NSEC_PER_SEC ); GCD 루프안에서 사용했는데 안정적으로 잘 구동된다. 앞으로 지연실행은 이것을 사용해야겠다.