Swift(스위프트): Local Notification (로컬 푸시 메시지, 오프라인 푸시 메시지)

  Swift: Local Notification (로컬 푸시 메시지, 오프라인 푸시 메시지) Local notification(로컬 노티피케이션) 흔히 푸시 알람, 푸시 메시지로 일컫는 기기 메시지의 형태인데 외부 네트워크를 거치는 형태가 아닌 기기 내부에서 발신하는 오프라인 푸시 알람입니다. 위 스크린샷은 로컬 노티피케이션의 예제로 제목과, 메시지 및 사진 섬네일이 첨부되어 있습니다. 이하 편의상 Local Notification을 푸시 더보기…

Swift(스위프트): 인터넷 접속 여부 판별하기 (WiFi & 셀룰러 LTE, 5G 등)

iOS 앱에서 인터넷에 접속되어 있는지 (온라인, 오프라인) 여부를 확인하려면 어떻게 해야할까요? 해당 방법은 아래와 같습니다.   Swift(스위프트): 인터넷 접속 여부 판별하기 (와이파이 WiFi & 셀룰러 LTE, 5G 등) 1. 인터넷 접속 여부만 판별 WiFi, 셀룰러 모두 사용 가능하나 인터넷 연결 여부만 판별하며 어디서 접속했는지(와이파인지 셀룰러인지) 구분하지 않습니다. 출처 // // 더보기…

Xcode: cmd + / 단축키를 눌렀을 때 코멘트(주석) 위치를 현재 들여쓰기에 맞추기 (CommentHere)

Xcode: cmd + / 단축키를 눌렀을 때 코멘트(주석) 위치를 현재 들여쓰기에 맞추기 보통 프로그래밍을 할 떄 쓰는 에디터 등에서 현재 라인의 코드를 주석처리하는 단축키는 command(윈도우의 경우 Ctrl) + / 를 누르면 해당 라인이 주석 처리가 됩니다. Xcode도 마찬가지인데, Xcode에서 해당 기능을 사용하면 아래와 같이 주석처리됩니다.   // 표시가 현재 들여쓰기에 더보기…

Swift: AVAudioSession.interruptionNotification 처리 (사운드 재생 중 전화벨, 알람 등이 울렸을 때 처리)

Swift: AVAudioSession.interruptionNotification 처리 (사운드 재생 중 전화벨, 알람 등이 울렸을 때 처리) 사운드 재생 중 전화벨, 알람 등이 울렸을 때 해야 될 작업은 어떻게 처리할까요? 뷰 컨트롤러에 아래 코드를 추가합니다. import UIKit import AVFAudio class MainTabBarController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() // NotificationCenter 옵저버 등록 NotificationCenter.default.addObserver(self, selector: #selector(didInterrupted), 더보기…

iOS 앱 포트폴리오: 음악 스케일(음계) 학습 도우미 앱 UltimateScale 애플 앱스토어 출시 📱

UltimateScale UtimateScale은 음악 스케일(음계) 학습 도우미입니다. 앱스토어 링크 UltimateScale 한국 앱 스토어 링크 (모든 국가 출시)   깃허브 링크 https://github.com/ayaysir/MusicScale   특징 및 사용 기술 애플 앱스토어의 검수에 통과하였습니다. Core Graphics를 통한 뷰 드로잉 (피아노 건반) WebKitView를 통한 자바스크립트 라이브러리와 양방향 통신 (abcjs 악보 라이브러리) 음악 이론과 관련된 데이터 계산을 즉석에서 더보기…

Swift(스위프트): 앱 내부에서 팝업으로 앱 스토어 앱 정보 띄우기

Swift(스위프트): 앱 내부에서 팝업으로 앱 스토어 앱 띄우기 아래 움짤과 같이 자신이 만든 앱 내부에서(외부 브라우저나 앱스토어로 이동하지 않고) 다른 앱을 표시하고자 할 때 StoreKit을 사용합니다. 다른 앱을 홍보할 때 사용하면 좋습니다.   참고로 이번 예제는 시뮬레이터는 실행이 불가능하므로 실제 기기에서 테스트해야 합니다.   1: 위 작업을 실행하고자 하는 뷰 더보기…

Swift(스위프트): DateFormatter로 시간대 약어(Timezone abbreviation) 표시

Swift(스위프트): DateFormatter로 시간대 약어(Timezone abbreviation) 표시   TimeZone.current.identifier와 TimeZone.abbreviationDictionary를 사용하면 시간대 약어를 표시할 수 있습니다. func dateString(timestamp: Int) -> String { let date = Date(timeIntervalSince1970: TimeInterval(timestamp)) let formatter = DateFormatter() formatter.timeZone = .autoupdatingCurrent formatter.dateFormat = “yyyy-MM-dd HH:mm:ss” let timezoneAbbr = TimeZone.abbreviationDictionary.first { $1 == formatter.timeZone.identifier } // timezoneAbbr?.value는 Asia/Seoul, timezoneAbbr?.key는 더보기…

Swift(스위프트) + Firebase: 사용자 정의 struct(구조체)를 사용한 Firestore CRUD 기초

Swift(스위프트) + Firebase: 사용자 정의 struct(구조체)를 사용한 Firestore CRUD 기초   실시간 데이터베이스 vs Cloud Firstore 비교 Firebase에서는 두 가지 형태의 데이터베이스를 제공합니다 이 글에서는 Cloud Firestore에 대해 알아봅니다. 데이터베이스 선택: Cloud Firestore 또는 실시간 데이터베이스   Firestore에서 자료를 저장하는 일반적인 형태     컬렉션 – 문서들을 모아 저장하는 곳입니다. 더보기…

Swift(스위프트): Static cell 모드인 테이블 뷰(UITableView)에서 특정 섹션 감추기 + 특정 행의 크기만 조절

Swift(스위프트): Static cell 모드인 테이블 뷰(UITableView)에서 특정 섹션 감추기 Static Cell 모드란 아래와 같이 content mode가 Static Cells로 지정된 경우로 데이터 모델에 따라 셀의 개수등이 변동하는 일반적인 테이블 뷰와 달리 셀의 개수, 위치 등이 고정되어 있는 경우를 말합니다. 이 경우 코드 작성 대신 스토리보드에서 셀 개수, 섹션 개수를 설정하게 됩니다. 더보기…

Swift(스위프트): 테이블 뷰(UITableView)에서 setEditing이 true일때만 삭제 등 작업 가능하게 하기

출처 How do I disable the full swipe on a tableview cell in iOS11   Swift(스위프트): 테이블 뷰(UITableView)에서 setEditing이 true일때만 삭제 등 작업 가능하게 하기 제목이 대체 무슨 말인가 하면 아래 화면과 같이 Edit 버튼이 있어 에디트 모드가 따로 있는 예제 앱이 있습니다. 테이블 뷰의 에디트 모드가 모든 열(row)에 활성화되어 있는 더보기…