적당한 고통은 희열이다

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

반응형

Swift iOS 앱 개발 173

CloudKit 이란? (+ Core Data, SwiftData)

CloudKit: Store structured app and user data in iCloud containers that all users of your app can share.https://developer.apple.com/documentation/cloudkit iCloud 기반의 백엔드 서비스로, 별도의 서버 없이 데이터를 클라우드에 저장하고 동기화할 수 있도록 해준다.  1. 데이터 저장 및 관리- iCloud의 Public(공개), Private(사용자), Shared(공유) Database를 사용하여 데이터를 저장하고 관리할 수 있음- 네트워크 요청 없이 로컬에서 동작하는 캐싱 기능도 제공- Core Data + CloudKit 연동 가능2. 실시간 동기화- iCloud를 통해 여러 ..

메타 광고 이벤트 관리자 appsflyer 연결 (feat. SKAN)

모바일 앱 설치 수가 하나도 잡히지 않는 문제가 있었다. 안드로이드는 잘 되는데  왜 iOS 만 안되는고?? AppsFlyer - Meta 광고 연동 설정https://support.appsflyer.com/hc/ko/articles/207033826-Meta-%EA%B4%91%EA%B3%A0-%EC%97%B0%EB%8F%99-%EC%84%A4%EC%A0%95여기 읽어봐도 분명히 Facebook SDK 연동할 필요 없다고 나와있고, 안드로이드도 따로 facebook sdk 추가해준 적이 없다고 하는데왜 iOS 만 안되는 걸까.. 이리저리 살펴보다가 메타 광고 관리자 - 이벤트 관리자 페이지에서 데이터 연결이 누락되어 있는 것을 발견했다.  앱스플라이어 Collaborate - Partner Marketp..

SwiftUI 리스트 더 불러오기 - List vs. LazyVStack

SwiftUI 로 리뉴얼 작업을 하는 중인데, 더 불러오기 작업을 하면서 문제가 생겼다.  1. ScrollView + LazyVStackScrollView(showsIndicators: false) { LazyVStack(alignment: .leading, spacing: 0) { ForEach(0 ..이런 식으로 ScrollView 안에 LazyVStack 넣어서 기능 구현은 다 되었는데,CardView에 onAppear 로 마지막 카드가 화면에 뜨는 걸 감지할 수 있을 줄 알았더니, 화면에 보이는 것과 상관없이 그냥 데이터 불러옴과 동시에 모든 카드에 onAppear가 동시 호출 되는 것이었다!!onAppear 는 포기하고 gpt와 claude 가 알려준 대로 GeometryRe..

[iOS] Firebase Crashlytics 설정은 처음이라…

최근에 새로 배포한 앱에서 Crashlytics SDK가 누락되어있었다..! 😱 crashlytics 설정 다 되어있는 거 콘솔에서 확인만 했지 직접 추가해본 적은 없었는데 그냥 SDK 추가만 하면 알아서 되는 건 줄 알았더니 할 일이 있었다 ㅠ 여기 문서 참고해서 설정해주면 됨https://firebase.google.com/docs/crashlytics/get-started?hl=ko&platform=ios Firebase Crashlytics 시작하기이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Firebase Crashlytics 시작하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. iOS+ Android Flutterf..

웹뷰 사진 저장

이미지 다운로드 사진 라이브러리에 이미지 저장// 사진 라이브러리에 이미지 저장func saveImageToPhotos(image: UIImage) { PHPhotoLibrary.requestAuthorization { status in if status == .authorized { // 저장 작업을 Photos 라이브러리 변경 요청 블록 안에서 수행해야 함 PHPhotoLibrary.shared().performChanges({ PHAssetChangeRequest.creationRequestForAsset(from: image) }, completionHandler: { success, error..

[SwiftUI] @EnvironmentObject 와 @StateObject 비교 (+ 앱 초기 설정)

@EnvironmentObject 와 @StateObject는 둘 다 SwiftUI 에서 상태 관리를 위해 사용하는 중요한 프로퍼티 래퍼인데, 사용 목적과 방법은 조금 다르다. 애플 공식 문서에 따르면 EnvironmentObject: A property wrapper type for an observable object that a parent or ancestor view supplies.StateObject: A property wrapper type that instantiates an observable object. @EnvironmentObject는 전역적으로 상태를 공유할 때 사용되며, 여러 뷰가 동일한 상태를 공유할 수 있게 해준다. 이 프로퍼티 래퍼를 사용하려면 상태 객체가 이미 상위 ..

[SwiftUI] TextEditor background color change - scrollContentBackground + iOS 15

TextEditor 을 만드는데 다음과 같이 disabled 처리 되었을 때 배경색을 바꿔주어야 했다.  호엥 그런데 background 색을 바꿔주었도니 요르케.. 되어버렸다 iOS 16 이상부터 scrollContentBackground(.hidden) 이 제공되어 TextEditor의 배경 색을 바꿔줄 수 있다고 하는데그 이하 target 들에도 적용하기 위해서는 다음과 같이 modifier를 만들어 적용해줄 수 있다. public extension View { func transparentScrolling() -> some View { if #available(iOS 16.0, *) { return scrollContentBackground(.hidden) ..

[Swift iOS] UILabel Gradient color (+ SwiftUI gradient text)

UILabel 에 그라데이션 색상 입히기 GPT 는 소용이 없어연,, ㅎ 알려준대로 해도 그라데이션 전혀 안먹히더라 final class GradientLabel: UILabel { private var colors: [UIColor] = [.red, .yellow] private var startPoint: CGPoint = CGPoint(x: 0.0, y: 0.5) private var endPoint: CGPoint = CGPoint(x: 1.0, y: 0.5) private var gradientLayer = CAGradientLayer() override init(frame: CGRect) { super.init(frame: frame) setup() } required init?(coder: ..

728x90
반응형