Swift(스위프트): 아이폰 진동(Vibration, Haptic) 구현하기 下 (커스터마이징)

이전 글 Swift(스위프트): 아이폰 진동(Vibration, Haptic) 구현하기 上 (기초)   Core Haptics를 사용하여 사용자 지정 진동을 재생하는 방법 Core Haptics는 아이폰의 Taptic Engine(탭틱 엔진)에서 발생하는 진동, 더 자세히 말하면 정밀한 타이밍과 동작(behaviors)에 의해 동작하는 다양한 진동과 음향 효과를 정의할 수 있게 해줍니다. 이러한 진동들은 말로 설명하기보다는 직접 느껴보는 것이 좋지만, 더보기…

Swift(스위프트): Debounce, Throttle 로 함수 실행 횟수 제한 (DispatchWorkItem 이용, 외부 라이브러리 없이)

소개 먼저 Debounce, Throttle 이란 어떤 기능인지에 대해 알아보겠습니다. 자바스크립트 lodash: debounce와 throttle을 이용하여 함수의 실행 횟수 제한 debounce, throttle은 생소한 기능인데요 간단히 요약하면 이벤트의 반복 실행시 콜백 함수의 불필요한 실행을 줄이는 역할을 합니다. 이로 인해 클라이언트가 혜택을 볼 수도 있거나 혹은 서버 측에 불필요한 리퀘스트를 줄일 수도 있습니다.   더보기…

Transporter 앱을 사용하여 App Store Connect 바이너리 파일 업로드

소개 앱 스토어에 앱의 바이너리 파일 (ipa 등)을 업로드하고자 할 때 여러 방법이 있는데 이 중 Transporter 앱을 사용하는 방법을 소개하고자 합니다. Xcode에서도 바이너리 업로드 기능을 지원합니다만, 문제는 알 수 없는 버그가 너무 많고 앱 업로드 중 자주 먹통이 된다는 점입니다. 이럴 때 다른 대안 중 Transporter앱을 사용하면 해당 문제가 더보기…

Swift(스위프트): 공유 메뉴 (UIActivityViewController) 띄우기

소개 공유 메뉴는 아래와 같은 형태로 수많은 앱에서 [공유], [공유하기] 등의 이름으로 존재하는 기능입니다. 특정 메시지나 URL, 이미지, 파일 등을 에어드롭(AirDrop)이나 메시지, 메일, 다른 앱으로 보낼 수 있습니다. 예를 들어 메시지 아이콘을 클릭하면 아래와 같이 영상 URL이 메시지에 첨부됩니다. 이러한 공유 메뉴를 Acitivity View라고 합니다. Swift에서는 UIActivityViewController로 공유 메뉴를 띄울 더보기…

Swift(스위프트): 아이폰 진동(Vibration, Haptic) 구현하기 上 (기초)

소개 Swift에서 진동(Vibration 또는 Haptic)을 구현하는 방법입니다. 진동은 아이폰에서만 지원하고 아이패드나 아이팟 터치에서는 사용할 수 없습니다. 테스트하려면 실제 아이폰 기기가 필요합니다.   기초 아이폰에서 진동을 발생시키는 방법은 크게 3가지가 있습니다. 각 진동은 말로 설명하기는 어려우므로 실제로 체험해보세요(?) UINotificationFeedbackGenerator를 사용하는 방법 성공(success), 경고(warning), 에러(error)를 나타낼 때 사용합니다. 진동이 여러 번 나타납니다. 더보기…

Swift(스위프트): 로컬 알림(Local Notification)을 스케줄에 맞춰 반복 발신하기 (및 한계점)

원문 How is it possible to create highly customised repeated local notification in iOS using UNCalendarNotificationTrigger + UNUserNotificationCenter? 질문 UNCalendarNotificationTrigger + UNUserNotificationCenter를 사용하여 iOS에서 고도로 사용자 정의된 반복 로컬 알림을 생성하는 것이 어떻게 가능합니까? 현재 저는 UNCalendarNotificationTrigger 및 UNUserNotificationCenter를 사용하여 미리 알림 앱에 대해 고도로 사용자 정의된 반복 로컬 알림을 생성하고 더보기…

Swift(스위프트): 텍스트 뷰에서 선택 부분(text selection)에 사용자 정의 메뉴 추가 (스토리보드)

소개 텍스트 뷰 등에서 텍스트를 선택하면 아래와 같은 메뉴가 나옵니다.   여기에 기존에 없는 메뉴를 추가하고 싶다면 어떻게 해야 할까요? 아래 스크린샷에서 단어장에 추가 메뉴는 iOS에 없는 메뉴로 제가 새로 추가한 것입니다.   방법 Step 1 addCustomMenu()  함수를 추가하고, 뷰 컨트롤러의 viewDidLoad(_:)에 addCustomMenu()를 실행하도록 추가합니다. override func viewDidLoad() { super.viewDidLoad() 더보기…

Swift(스위프트): 스테퍼(UIStepper)의 값을 레이블(UILabel)에 표시하기 (일반 방법 및 RxSwift 사용 방법)

InterfaceBuilder의 스토리보드에서 UIStepper는 아래 그림과 같이 마이너스(-) 버튼과 플러스(+) 버튼이 있으며 버튼을 누를때마다 값이 증감하는 컴포넌트입니다. 스테퍼의 값은 Double 타입의 형태로 UIStepper 인스턴스에 자체적으로 저장됩니다만 화면에는 표시되지 않기 때문에 알 방법이 없습니다. 이를 레이블(UILabel)에 표시하는 예제입니다.   참고: UIStepper 최소값, 최대값, 증감값(step value) 설정하기 1) 스토리보드에서 UIStepper 컴포넌트를 선택한 후 더보기…

Swift Package Manager(SPM)와 CocoaPods를 동시에 대응하는 라이브러리 만들기 (1)

Swift Package Manager와 CocoaPods를 동시에 대응하는 라이브러리 만들기 (1) 전체 코드 https://github.com/ayaysir/BGSMM_DevKit   과정 Xcode에서 Swift Package Manager에 대응하는 Package를 만들고 코드를 구현합니다. 별도의 폴더에서 CocoaPods 프로젝트를 생성한 뒤 필요한 파일만 복사해 Swift Package Manager 폴더로 복사합니다. GitHub 레퍼지토리에 푸시한 뒤 버전 태그를 생성하고 태그로부터 릴리즈를 생성합니다. CocoaPods에 대응하기 위한 더보기…

Swift + FirebaseUI: (3) FirebaseUI를 이용해 Apple(애플) 소셜 로그인 화면 구현

이 글의 작업을 진행하려면 아래 포스트의 작업을 먼저 진행해야 합니다. Swift + FirebaseUI: (1) FirebaseUI를 이용해 이메일 로그인 화면 구현   FirebaseUI (2) – Apple(애플) 소셜 로그인 화면 구현 2020년 4월 이후로 소셜 로그인을 지원하는 앱은 무조건 애플 로그인 (Sign in with Apple)을 추가해야 한다고 합니다. 저는 애플 소셜 로그인을 더보기…