iyOmSd/Title: Swift 91

[Swift] iMessage 필터링 ILMessageFilterExtension (스팸 차단)

메시지 필터링을 개발할 기회가 생겨서 학습한 것을 기록하려고해요 먼저 프로젝트를 생성하고 file > new > target에서 Message Filter Extension을 클릭하면 이렇게 파일이 생성됩니다! 기본적인 템플릿코드는 작성돼있고 설명도 같이 써져있어요 각 함수의 역할을 알아봅시다! func handle(_ capabilitiesQueryRequest: ILMessageFilterCapabilitiesQueryRequest, context: ILMessageFilterExtensionContext, completion: @escaping (ILMessageFilterCapabilitiesQueryResponse) -> Void) { let response = ILMessageFilterCap..

iyOmSd/Title: Swift 2024.02.27

[Swift] TimeZone과 Locale

여러나라에 배포할 서비스를 개발하면서 헷갈렸던 개념을 정리해보려고해요 TimeZone 특정 지정학적 지역과 관련된 표준 시간법에 대한 정보. 지정학이란 지리적 환경과 정치현상의 관계를 연구하는 학문이라고하네요 다른나라를 여행갈 때 흔히 겪는 시차를 계산할 때와 같아요 국가별로 고유한 TimeZone을 사용하고있어요 문서를 보면.. TimeZone은 시간대의 동작을 정의합니다 TimeZone값은 지정학적 지역을 나타내고 이러한 값에는 해당 지역에대한 이름이 존재합니다. TimeZone값은 그리니치 표준시(Greenwich Mean Time)라고 부르는 GMT에서 더하거나 뺀 시간적 차이 입니다. swift TimeZone타입은 current와 autoupdatingCurrent 2가지 함수를 제공합니다 ..

iyOmSd/Title: Swift 2024.01.30

[Swift] NSTextAttachment, 이미지 텍스트화

NSTextAttachment 요타입에 대해 알아보려합니다~! ???: 보기 드문타입인거같은데 어떻게 이 타입을 알게 됐나요..? 🤯: 요구사항을 보고 이건 클릭이 안 되겠지 생각하고 간략히 속성을 보여주는 뷰구나~ 하고 Label 컴포넌트로 만들어놨는데... 추후에 특정타입만 클릭이 가능하고.. 특정 타입에 대해선 이미지까지 앞에 붙어야하는 스펙이더라구요... 이걸 버튼으로 바꿔야하나.. 말아야하나...이미 구현해놔서 건드려야하는게 많아서 Label에 이미지를 넣을 순 없을까 하던중 찾게 된 타입이죠 정의! attributed strings and related objects의 첨부 특성값이라네요 정의만 보고는 먼 소린지 모르겠네요! NSTextAttachment는 NSAttributedString에서..

iyOmSd/Title: Swift 2023.10.31

[Swift] Multi Line Tag View 그리기

SwiftUI만 하다가 UIKit을 하게될 일이 생겼는데 요구사항중하나가 뷰를 크기에 맞게 여러줄로 표현해주는 뷰에요 테그를 표현하는 뷰같은 곳에 많이 쓰이는 UI로 알고있어요 결과물 부터 보시죠! 네 이런뷰입니다.. SwiftUI로도 이뷰는 어떻게 만들어야할까 깊은 고뇌를 해봤습니다... 스유는 레이아웃 건드는게 좀 어렵더라구요 🤯 우선 UIKit으로 개발해야하니깐 UIKit관점에서 쉬운방법으로 구현해봤습니다! 이런뷰를 구현할때 많은 방법이 존재하겠지만 단순한 방법으로 뷰의 frame을 계산해서 구현하는 방식을 선택했어요 전체코드는 아래와같아요! class MultiLineTagView: UIView { private let horizontalSpacing: CGFloat private let vert..

iyOmSd/Title: Swift 2023.09.30

[Swift] Core Motion (feat. 흔들기 감지센서 개발)

안녕하세요 이번에는 아이폰 흔들기를 감지하는 기능을 구현해볼려고합니다! 흔들기를 감지하는건 기본적으로 UIResponder에 있는 메서드에서 쉽게 이벤트를 받아서 처리해볼 수 있어요 UIResponder니까 UIView, UIWindow, UIViewController... 어디에든 많이있죠 시점에따라서 began, ended가 있어서 원하는시점에 실행할수있고 취소했을때도 보이네요 이벤트가발생하면 UIEvent.EventSubtype이 전달되는데 폰을 흔들었을떄 motionShake이벤트를 받게되요 public override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) { if motion == .motionShake {..

iyOmSd/Title: Swift 2023.04.19

[Swift] Pulse 네트워크 디버깅 라이브러리

주변에서 듣고 프로젝트에 도입해서 아주 만족감 높은 라이브러리를 소개해드릴려고해요 https://github.com/kean/Pulse GitHub - kean/Pulse: Network logger for Apple platforms Network logger for Apple platforms. Contribute to kean/Pulse development by creating an account on GitHub. github.com https://kean-docs.github.io/pulse/documentation/pulse/gettingstarted Documentation kean-docs.github.io https://kean.blog/pulse/pro Pulse Pro A power..

iyOmSd/Title: Swift 2023.03.29

[Swift] Tuist 모듈화 응용편 - 모듈화적용후 사용하기

앞서 배운 기본적인 개념을 응용해서 필요한 모듈만 불러와서 사용할 수 있도록 간단하게 구현해볼예정이에요 그래프를 그렸을때 이쁘게 딱 나올수 있도록 App에서 Feature를 만들고 Feature에서 Core에있는 Logger를 사용해보도록 해보게씁니다! 시작은 디렉토리를 먼저 만들어주세요 그 디렉토리로 이동한 후 터미널로 프로젝트를생성 하면 준비는 끝납니다 tuist init --platform ios --template swiftui 프로젝트 설정을 시작해볼까요 tuist edit 프로젝트 설정관련 정의한 파일들은 ProjectDescriptioinHelper폴더에 담을거에요 다른 프로젝트 모듈에서 불러올때 import ProjectDescriptionHelpers 로 불러올 수 있어요 프로젝트를 만들..

iyOmSd/Title: Swift 2023.01.21

[Swift] FCM푸시 연결부터 Postman 테스트 푸시까지

FCM을 적용하면서 겪었던 경험을 공유하려고해요 FCM = Firebase Cloud Messaging 의 약자로 firebase에서 제공해주는 푸시알림기능이에요 먼저 FCM 설정하는 방법을 빠르게 알아보도록할게요 Firebase 설정하기 firebase console에 접근합니다 https://console.firebase.google.com/?hl=ko 로그인 - Google 계정 이메일 또는 휴대전화 accounts.google.com 프로젝트가 없다면 만들기를 눌러서 프로젝트를 만들어줍니다 또롱 준비가 완료됬네요 iOS 앱을 추가해주세요 Xcode 프로젝트의 번들 ID를 정확하게 넣어주세요 plist를 다운받아줍니다 다음 설명대로 패키지에 sdk를 추가해주세요 아까다운받은 plist를 잘넣어주시고..

iyOmSd/Title: Swift 2022.12.01

[Swift] Xcode Cloud(CI/CD) + Tuist(프로젝트관리툴) + dSYMs 업로드까지 자동화 배포하기 (feat. 스크립트쉘)

이번글은 나름 Xcode Cloud 사용에 있어서 심화?편인 것같네요 Xcode Cloud를 설정하면서 겪었던 이슈를 해결한 내용을 써내려가려고해요! Tuist를 사용하는데 CI/CD를 적용하고싶어졌어요 Xcode Cloud환경에선 Tuist를 어떻게 실행시키지..? 에서 시작됬어요 Xcode Cloud 환경도 macOS 같을 거니까 어떠한 명령문을 실행할 수 있어요 터미널에서 입력하는 커맨드들을 이용해서 Tuist를 설치할거에요 설치하기앞서서 Xcode Cloud에서 지원해주는 스크립트 실행시점이 있어요 해당 레포에서 클론하고나서 실행시키는 Post-clone시점 - ci_post_clone.sh xcodebuild 하기 전인 Pre-Xcodebuild시점 - ci_pre_xcodebuild.sh xc..

iyOmSd/Title: Swift 2022.11.11

[Swift] Xcode Cloud CI/CD

CI / CD를 하기위해서 github action + fastlane 혹은 bitrise를 사용하곤 했었죠 CI를위한 코드를 작성해야하고 복잡했었어요 저도 예전에... github action, fastlane를 적용하려면 자료찾고 코드작성하고 이해하지못하면 작성하기 어려웠어요 구현만해놓으면 간편하긴하죠 action과 fastlane을 합친 Xcode Cloud라는 대체제가 있으니까 써보자구요 멤버십 구입한 개발자들은 23년까지 월 25시간 무료...! 아~주 간단하고 처음하더라도 금방 따라할수있어요 🤩 순서대로 진행해볼게요! 제일먼저 설정을 좀 해줘야해요 1. developer 사이트에서 앱에대한 identifier를 등록시켜줘야해요 2. 그다음 connect에서 앱을 생성해주면 준비 끝이에요 이 ..

iyOmSd/Title: Swift 2022.11.01