일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Mobile
- ObjectiveC
- 아이폰
- VISTA
- 윈도우즈7
- 윈도구7
- 맥
- 설치
- WSDL
- 오브젝티브C
- windows
- Number
- 볼링
- windows7
- java
- Objective-C
- 윈도구
- install
- 퇴사
- mac
- 애플
- screen
- 아이맥
- 링크
- iPhone
- WebService
- 형식
- cagr48com
- c#
- 7932
Archives
- Today
- Total
A colossal Dreamer: GR鐵塔-天生我材
QRCode detecting in iOS11 - Swift3, Swift4 본문
유행의 흐름이 조금은 지나버린 QRCode, 과 관련된 것을 개발중에 있다.
QRCode 는 2차원 바코드 중에서 라이선스 비용이 들지 않고,
최대 4KB 의 데이터를 넣을 있는 대용량 2차원 바코드로 알려져 있다.
이번에 리서치한 결과로는 다른 barcode 계열도 문자(알파벳)를 포함할 수 있기도하고,
2차원 barcode 를 중첩하고, 연결해서 무한 확장이 가능한 것도 있었다.
하지만, QRCode 의 독톡한 문양에서 주는 독창성과
글자 기준으로 충분한 용량
무엇보다다도 iOS11 의 기본 사진앱의 '정사각형' 카메라 모드에서
QR에 첨부된 URL을 바로 열어주는 기능이 포함되어서
아이폰의 경우 그 매력이 많이 올라갔다고 생각된다.
그리고, iOS7 부터는 SDK만으로 외부라이브러리 도움없이 생성과 읽기가 가능해졌다.
그리고, iOS11에서는 그 API가 더욱 정교해졌다.
우리농장의 QRCode 관련 기능을 iOS SDK 기반으로 새로 작성하고,
기존에 외부라이브러리(ZBar, ZXing) 구성을 제거하는 작업을 진행중에 있다.
QRCode 개발중에 참조한 샘플예제는 맨 아래 링크를 참조.
스스로 이해한 방식으로 재구성한 샘플을 현재 작업중인 프로젝트에 적용하려고 보니
swift버전이 서로 달라 문제가 되었다. (샘플: swift4, 프로젝트: swift3)
swift3 로 포팅하기로 결정하고, 작업하던 중에 심각한 난관에 부딪혔다.
잘 동작하던 QRReader가 swift3 를 위해 작업한 쪽에서는 동작하지 않는 것이다.
무언가 설정 문제로 판단하고,
설정하는 코드를 주의 깊게 살펴보고,
한줄한줄 디버깅해보았지만,
문제가 파악되지 않는다.
- 에러는 커녕 사소한 경고도 발생하지 않았다. -
마지막으로 문제될 부분은 인식결과 delegate(이벤트)가 발생하지 않는 것이었다.
SDK버그로 추정하는 것은 개발자에게 금기이지만,
동일 iOS버전에서 swift3냐 swift4 에 따라 동작여부가 결정된다면,
아버지씨(objc)는 상관없이 동작할 것으로 판단했고,
그래서, objc 의 delegate method 의 형태로 델리게이트를 구성했다.
이제 워닝이 발생하기 시작한다.
delegate protocol에 선언된 것과 현재 구현된 정의와 다르다는 경고,
이리 저리 해보다 이제 메소드명으로 구글을 검색.. 스택오버플로에서 몇 개의 포스트를 찾았다.
https://stackoverflow.com/questions/39437992/code-for-capturing-qr-code-doesnt-seem-working-well-in-xcode8-and-swift3/39438273#39438273
ObjC delegate protocol 정의에는 NSArray<__kindof AVMetaObject *> 형식을 사용하지만,
swift3 에서는 [Any]! 를 사용해야한다.
이걸로 보아서 어쩌면, swift3 가 참조하는 라이브러리는
ObjC 쪽도 Swift4 도 아닌 제 3의 뭔가를 참조하는지도 모르겠다..
애플..
ObjC 와 Swift간의 delegate method name 이 서로 다를 수 있다.
iOS버전이 올라가면서 delegate method name이 바뀔 수 있다.
그런데, iOS/ Xcode 버전이 동일한 상태에서 swift3와 swift4 간의 메소드명이 다르다니.
심지어 warning은 커녕 문서화도 안되어 있다니...
화난다.
참조 Reader Sample
AVCamBarcode: Using AVFoundation to Detect Barcodes and Faces
https://developer.apple.com/library/content/samplecode/AVCamBarcode
참조 Generator Sample
https://www.appcoda.com/qr-code-generator-tutorial/
'낙농일기' 카테고리의 다른 글
우리 농장 플랫폼 왜 이리 안 친절해졌지.? (0) | 2018.01.04 |
---|---|
애플 버그리포팅에 대한 피드백... (0) | 2018.01.04 |
만약에 작업반장이 농장에서 나가라면, 이렇게 이야할 수 있을까.? (0) | 2018.01.04 |
차상위 작업반장이 농장 잡일을 시키다. (0) | 2018.01.02 |
애플에 6개월 만에 2건의 버그를 알렸다. (0) | 2017.11.22 |