적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

[swift iOS] WKWebView file download 웹뷰 파일 다운로드 (feat. FileManager)

웹뷰에서 파일 다운로드가 되지 않는 문제가 발생했다. 웹뷰에서의 파일 다운로드 버튼을 클릭 시 다운로드가 아니라 해당 파일 url 링크로 이동해버리는? 것이었다. 안드로이드는 웹뷰에 파일 다운로드 리스너를 설정할 수 있도록 되어있다고 하는데, iOS는... 여기저기 찾아보아도 엄청 깔끔하게 아 이거다! 하는 방법을 찾지 못했다. 여러 방법을 짜집기 하여 webview의 decidePolicyFor navigationAction에서 받아오는 url이 .pdf 등의 파일 형식으로 끝나면 해당 url로 이동을 하는 것이 아니라 파일 앱으로 다운로드 되도록 다음과 같이 구현하였다. 1. webView의 decidePolicyFor navigationAction에서 파일 형식 감지하기 이게 최선인지는 모르겠지만 ..

개발 업무 2021.11.03 0

[Swift iOS] 이미지 캐시 처리 Memory vs. Disk

앱에서 사용되는 이미지가 많을 경우, 이미지를 매번 서버로부터 받아오면 로딩 속도도 오래걸리고 계속 네트워크 통신을 해주는 것도 리소스 낭비이기 때문에 이미지를 캐싱하는 작업을 해보았다. 이미지 캐싱이란? 다운로드된 이미지를 캐시(메모리 or 디스크)에 저장해두었다가 불러오는 방식으로, 한 번 다운받은 이미지는 별도의 리소스를 소모할 필요 없이 빠르게 가져와서 보여줄 수 있다. 물론 KingFisher SDWebImage 같은 이미지 라이브러리를 사용하면 이미지 다운로드 및 캐싱을 알아서 자동으로 처리해주고, 이미지를 메모리에 저장하는 대신에 디스크에 저장하고 필요한 만큼만 메모리에 올려서 사용하기 때문에 메모리 사용량도 줄이고 편하게 구현해줄 수 있다. 그치만 직접 구현 한번 해보자고...! iOS에서..

실전 Swift 2023.04.24 1

[Swift iOS] STT & TTS 성능 비교 - Speech / Naver / Google

STT (Speech-to-Text) : 음성인식(Speech Recognition) 사람이 말하는 음성 언어를 컴퓨터가 해석해 그 내용을 문자 데이터로 전환하는 처리. TTS (Text-to-Speech) : 음성합성(Speech Synthesis) 사람의 목소리를 합성하여 텍스트를 음성으로 변환하는 시스템 STT / TTS 성능을 다음 세가지 플랫폼을 활용해 비교해보았다. - 애플에서 제공하는 Speech 프레임워크 - Google Cloud - Naver CLOVA STT Apple Speech Google Cloud Naver CLOVA 난이도 중 상 상 속도 말이 길어질수록 버퍼링이 생김 Good Good 정확도 70% 일상적인 말들은 인식을 아주 잘한다. 어려운 단어와 문장들은 음... 97%..

개발 업무 2021.10.25 3

[Objective-C iOS] OpenCV detect rectangle 윤곽선 가져오기

내가 서치해본 결과, iOS에서 OpenCV를 사용하기엔 굉장히 열악하다. 샘플 코드 발견해도 대부분 4, 5년 전에 작성되어 작동조차 안되는 경우가 많다.. Swift로 작성할수가 없으니 Swift opencv 검색하면 당연히 안나온다. 그냥 기초 흑백변환 가이드 정도만 있다. OpenCV 를 활용하고 싶다면 무조건 Objective-C로 작성을 해주어야 하고, 옵씨로 검색을 해야한다. 그나마 파이썬이나 안드로이드에서 사용된 예시는 꽤 있는 듯 하여 작동 흐름이라도 알기 위해 다른 분야 검색 결과들을 참고 했다. 인자 갯수나 사용법은 조금씩 다르지만 사용되는 함수 명이나 흐름은 비슷하니까 다른 언어로 참고해도 좋을듯! 의도치않게 Objective-C 공부도 하게된.. ㅎㅎㅎ 그리하여 내가 직접 정리해본..

iOS 2022.01.12 0

[Swift iOS, JavaScript] url schemes 사용하여 웹에서 앱 호출 및 앱스토어 연결하기

iOS url schemes open app / app store 모바일 웹에서 스키마를 이용하여 앱을 호출하고, 앱이 미설치 되어있을 경우 앱스토어로 이동하는 방법 URL Schemes (커스텀 스키마) 설정해주는 법 우선 url schemes 사용해서 웹에서 앱 연결해주는 건 굉장히 쉽다. [Targets - Info - 맨밑에 URL Types] 추가 해주고 Identifier 와 URL Schemes(원하는 스키마 명)을 등록해줄 수 있다. 그리고 나서 info plist - URL Types - Itme 0 - URL identiifier 입력해주면 완료. 시뮬레이터 혹은 기기에 앱을 설치하고, 홈화면으로 돌아가서 사파리를 열어주고 주소창에 설정해준 URL Schemes + :// 를 넣고 이동..

개발 업무 2021.04.16 9

[Swift iOS] 푸시 알림 이미지 삽입 UNNotificationServiceExtension

생각보다 매우 까다로웠다. 삽질을 아주아주 많이 거쳐 구현을 해냈다. 덕분에 Target Extension도 처음 사용해보고 아주 흥미로운 작업이었다. 우선 FCM 푸시알림은 구현이 되었다는 가정 하에, 이미지 url을 받아와 적용하는 법을 알아보자. (기본적인 FCM 푸시알림은 다음을 참고 -> FCM 푸시 설정) 1. Notification Service Extension 추가 프로젝트 - TARGETS 하단의 + 버튼을 눌러주면 다음과 같이 새로운 타겟을 추가해줄 수 있다. custom으로 푸시 알림을 설정할 수 있도록 Notification Service Extension을 추가해준다. Product Name : ServiceExtension으로 설정해주고 finish 해주면, ServiceExt..

개발 업무 2021.07.27 0

[Swift iOS] 카카오링크로 피드 메시지 공유하기

kakao developers 사이트에 가면 아주아주 친절하게 설명이 잘 되어있다. 어플리케이션 등록은 이미 되어있는 상태라 나는 SDK 설치부터 시작~! 1. SDK 설치하기 모듈 설명 : Kakao SDK pod 'KakaoSDKCommon' // 공통 모듈 pod 'KakaoSDKUser' // 사용자 인증 pod 'KakaoSDKAuth' // 카카오 로그인, 사용자 관리 pod 'KakaoSDKTalk' // 친구, 메시지(카카오톡) pod 'KakaoSDKLink' // 메시지(카카오링크) 이렇게가 카카오 링크로 피드 메시지 공유하는 데 필요한 모듈들. 하나하나 추가하기 귀찮으면 pod 'KakaoSDK'로 전체를 추가해줄 수도 있다. 이 친구들을 pod install 해주니 나는 오류 폭탄이..

개발 업무 2021.06.08 0

[Swift iOS] WKUserContentController 하이브리드 앱 웹 뷰 연동하기

WKUserContentController란? 네이티브 앱(iOS)에서 WKWebview를 통해 JavaScript와의 통신을 할 때 도와주는 클래스로, 이게 어떻게 왜 쓰이는지 살펴보기 위해 하이브리드 앱에 대해 먼저 알아보자. 하이브리드 앱이란? 스마트폰 어플리케이션에도 종류가 있다! 웹 앱, 하이브리드 앱, 네이티브 앱 이렇게 크게 세 가지로 나뉜다. 웹 앱 : 웹 방식이지만 앱을 사용하는 것 같은 착각이 들게 하는 방식으로, 웹페이지와 같은 Web을 스마트폰 화면 크기로 줄인 것. 장점 단점 - PC나 스마트폰 등 단말기 기종에 관계없이 사용이 가능 - 상대적으로 쉬운 웹 언어로 개발하기 때문에 비용과 시간적인 면에서 저렴하고 유지보수가 쉽다. - 카메라, 음성 검색 등의 스마트폰 기능은 사용할 ..

개발 업무 2021.04.14 0

[Swift iOS] 캘린더 라이브러리 _FSCalendar 설치 및 사용하기

달력 기능이 필요해서 검색하다가 FSCalendar를 발견했는데, 나름 customizing 하기에도 좋아보이고 정보도 꽤 있는 것 같아서 이 라이브러리를 받아와 사용하기로 했다. 참고 : FSCalendar Github 1. Cocoapods를 이용해 터미널에서 설치 pod 'FSCalendar' 2. Calendar 추가 1) 스토리보드 혹은 xib 파일 사용 시 View를 추가 후 Custom Class를 FSCalendar로 설정해준다. 그리고 코드에 IBOutlet으로 연결 및 대리자 위임해주기 import UIKit import FSCalendar class CalendarViewController: UIViewController, FSCalendarDelegate, FSCalendarData..

ToyProject_Couple App 2021.01.23 0
728x90
반응형