오픈소스의 사용은 더 많은 관리적 포인트가 발생한다.

몇 일 전 이전에 만들었던 프로젝트의 문제를 해결하기 위해 해당 프로젝트를 열었다. 일단 문제가 된 녀석을 업그레이드하고 변경된 API가 있다면 변경하고 끝내자란 계획을 세우고 디버깅을 시작했다. 어라? 어랏?! 해당 라이브러리를 업데이트할려니 iOS의 오픈 소스를 쉽게(?) 관리할 수 있게 해준다는 CocoaPods 버전이 낮다고 업데이트하란다. 그래서 업데이트했다. 다시금 해당 라이브러리에 대한 업데이트 시도. 의존성 체크를 한다는 메시지를 보고 설치되는 동안 페이스북을 좀 둘러봤다. 이제 됐겠지? 하며 다시 터미널로 돌아갔더니 아직도 체크 중.. 뭔가 이상하다.. 현재 최신 버전과 기 사용된 버전 차이가 너무 심해서 그런가 싶어 수동으로 업데이트했다. 자~ 이 제 변경된 API만 수정하면 되겠지? 는 이내 몇 시간에 걸친 사투가 되었다. 문제는 해당 프로젝트에 사용된 다른 오픈 소스들의 문제였다. iOS는 이미 해당 프로젝트가 생성된지 세 번이나 변경되었다. 그리고 그에 따라서 업데이트된 오픈 소스도 있었지만 그렇지 못한 오픈 소스도 있었고 이 녀석들의 문제였다. 컴파일 에러를 보면서 하나하나 수정하다가 “이딴 식으로 만든 걸 왜 썼지?” 라는 의문이 생기면서 화가 나기 시작했고 “적용은 왜 이딴…

WordPress Jetpack 활성화 시 register_http_request_failed 오류 대처법

내가 맞이한 오류는 name lookup timeout 오류였다. 구글링을 주욱해보다가 발견한 글에 따르면 cURL 옵션을 일시적으로 변경해주면 된다는 아래 링크의 글이 해결책이 되었다. http://www.tpateman.co.uk/reboot/error-activating-jetpack-plugin/ 주의할 점은, Jetpack 설치되었다고 끝~하면 안되고 다시 disabled 했던 옵션들을 enabled 해줘야한다는 것.

iOS8에서의 Notification (action, category and settings)

iOS8에서는 Notification에 대한 내용이 다소 변경되었다. 이 부분은 iOS 개발자 뿐만 아니라 Server 담당자와 기획자도 알고 있으면 좋을 듯 하여 테스트를 진행하며 간단히 설명해보도록 하겠다.   우선 변경된 내용을 간략하게 정리해자면, Local / Remote Notification 에 위에 첨부한 것과 같이 액션이 추가되었다. 더불어 Notifiation에 category가 추가되어 카테고리에 따라 다른 액션을 보여줄 수도 있게 되었다. 이 변경점은 개발자뿐만 아니라 기획자도 꼭 알고 넘어가야할 부분이라고 생각되어 기획자가 고려해야 할 부분도 짚어보도록 하겠다. [ 기획자 ] 기존의 Notification 에서는 단일 Action만 존재(터치 시 해당 앱 호출)했으며, userinfo나 payload에 추가 scheme을 적용, 혹은 didReceivedNotification 메소드에서 데이터를 재호출해서 앱 내에서 분기동작을 수행하도록 하였다. 참 번거로운 작업이었고 Remote Notification 의 경우에는 제한된 payload 사이즈 때문에 이마저도 제한이 많았다. 하지만 iOS8 부터는 Notification에 Action을 지정할 수 있는 기능이 추가되었다. 위에 첨부한 화면을 예로 들어 설명하자면 캘린더 초대가 들어왔을 때 “거절(Decline)”, “승락(Accept)” action을 앱에 진입하지 않고도 수행할 수 있다. 이 “거절(Decline)”과 “승락(Accept)” action에 대한 정의는 앱을 실행할 수도…

AFNetworking 2.x 와 iOS6

AFNetworking은 Server-Client 개발 시 많이 사용하는 오픈소스입니다. Connection 세션관리부터 iOS7에서 새로이 추가된 Task 개념까지 충실히 지원하고 있으며 현재도 업데이트가 활발한 오픈소스입니다. iOS7이 정식으로 발표되고 또 iPhone5s/iPad mini retina가 출시되면서 64bit 지원이 또 다른 개발 화두가 된 시점에서 제가 진행 중인 프로젝트의 앱에도 64bit를 지원해보고자 세팅을 바꾸고 여러 compile warning을 하나씩 확인하면서 수정하다보니 기 적용되어있던 AFNetworking 1.x가 문제가 되었습니다. 이를 다 바꾸기보다는 최신버전이 있는지 확인을 해보았더니 2.0이 등록되어 있었고 반갑게 64bit 지원을 한다고 되어 있어 선뜻 업데이트를 했습니다. 문제는 여기서부터.. 현재 진행 중인 프로젝트 iOS Client의 deployment target이 6.0부터인데 7.0에서만 주로 테스트하다보니 간과하고 넘어간 부분이 있었습니다. 바로 AFHTTPSessionManager 의 블록코드 정의에 있는 NSURLSessionDataTask 였습니다. 이 녀석이 7.0에 추가된 개념이더군요.. 바로 수정에 들어갔는데 블럭 정의를 바꿀 수 있는 방법이.. 있을리 만무하죠; 결론은.. 역시나 저와 같은 문제를 겪은 분의 친절한 Q&A thread가 있더군요. http://stackoverflow.com/questions/20772984/afnetworking-2-0-3-not-working-on-ios-6 참 친절한 stackoverflow입니다. 위 URL의 답변에 보면 iOS7 이상 지원 시에는 AFHTTPSessionManager를 사용하고, iOS6 이상 지원 시에는 AFHTTPReuqestOperationManager를 사용하라고…

iOS 7에서 드디어! 추가된 기능들

본문의 글은 DoubleEncore의 iOS7 Additions:OMG Finally! 를 참고하여 작성되었습니다. (This article is refer to iOS 7 Additions: OMG Finally! at DoubleEncore)   iOS7이 발표된지도 꽤 많은 시간이 지났습니다만 이제서야 review를 하네요… 바로 본문으로 들어갈게요. 1. Support Attachments at Message UI Framework. 개발 시 앱 내에서 iMessage 기능을 편하게 사용하기 위해서 MFMessageComposeViewController를 사용해왔을 것입니다. 이 클래스의 약점 중 하나는 code-level에서 첨부 파일을 넣을 수 없다는 것이였죠. – (BOOL)addAttachmentData:(NSData *)attachmentData typeIdentifier:(NSString *)uti filename:(NSString *)filename; – (BOOL)addAttachmentURL:(NSURL *)attachmentURL withAlternateFilename:(NSString *)alternateFilename; 위 두 메소드가 추가되며 드디어 메시지에 첨부파일을 첨부할 수 있게 되었습니다. Data의 경우 MobileCoreService Framework에 포함된 UTCoreTypes에 정의된 파일형식이라면 대부분 가능한 것 같습니다. 단, 용량제한이나 기타 제한에 대해서는 충분하게 테스트해보지 않았으니 참고하세요. 2. MPVolumeView in Media Player Framework MPVolumeView는 단말의 볼륨을 조절하는 슬라이더와 라우팅할 오디오 소스를 선택할 수 있도록 해주었습니다만 AirPlay system의 정보를 얻기에는 부족함이 있었습니다. @property areWirlessRoutesAvailable; @property isWirelessRouteActive; NSString *const MPVolumeViewWirelessRoutesAvailableDidChangeNotification; NSString *const MPVolumeViewWirelessRoutesActiveDidChangeNotification; 하지만 iOS 7부터 위 코드처럼 두 개의…