J.
BLOG
글 목록소개구독
태그

#iOS.

/ 총 14편
2026.08.07
읽기 10분

Apple Pencil 손글씨 숫자 입력: PencilKit·Core ML reject 설계

기술

PencilKit stroke를 스도쿠 숫자 입력으로 바꿀 때 필요한 tap·ink 세션 분류, 28×28 전처리, confidence reject, 비동기 추론 계약을 DailySudoku 구현으로 살펴봅니다.

iOSSwiftPencilKitCore MLApple Pencil
2026.08.06
읽기 9분

픽셀보다 계약: UIKit·Jetpack Compose 스도쿠 보드 접근성

기술

하나의 9×9 커스텀 보드를 VoiceOver와 TalkBack이 탐색할 수 있는 81개 셀로 바꾸고, 위치·값·선택·오류·입력 동작을 두 플랫폼에 매핑하는 기준을 정리합니다.

AccessibilityUIKitJetpack ComposeiOSAndroid
2026.08.06
읽기 8분

iOS·Android·Web 광고 노출: loaded·rendered·impression 구분법

기술

광고 SDK의 load·impression·paid callback과 Web 가시성 신호를 분리해, 자동 수집과 수동 로깅이 중복되지 않는 이벤트 계약을 정리합니다.

iOSAndroidWebAdvertisingAnalytics
2026.08.06
읽기 9분

Game Center·Play Games 리더보드: 날짜 경계·제출 신뢰성

기술

퍼즐 날짜, 점수 제출 시각, 플랫폼 표시 구간을 분리하고 best-effort 보류와 durable outbox 사이에서 리더보드 전달 보장을 선택하는 방법을 정리합니다.

iOSAndroidGameKitGoogle Play GamesTesting
2026.08.06
읽기 12분

같은 날, 같은 퍼즐: generatorVersion이 있는 PuzzleIdentity 설계

기술

같은 seed를 재현하는 것과 같은 퍼즐을 영구히 식별하는 것은 다르다. DailySudoku의 날짜·시간대·난이도·생성기 흐름을 바탕으로 generatorVersion, 마이그레이션, 롤백 계약을 정리합니다.

RustTestingiOSAndroidWebAssembly
2026.08.06
읽기 8분

위치 권한 없이 광고를 지역화하기: GeoIP와 Provider Chain 설계

기술

OS 위치 권한 없이 동의 상태와 GeoIP 힌트로 광고 Provider Chain을 구성하고, 실패를 안전하게 흡수하는 방법을 정리합니다.

iOSAndroidAdvertisingPrivacyGeoIP
2026.08.06
읽기 10분

일회성 광고 제거 IAP: StoreKit 2·Play Billing에서 구매와 권한 분리하기

기술

결제 완료 콜백을 영구 권한으로 착각하지 않고, 앱 시작·다른 기기·pending·환불 뒤에도 광고 제거 상태를 다시 맞추는 StoreKit 2와 Play Billing 계약을 정리합니다.

iOSAndroidStoreKitGoogle Play BillingIn-App Purchase
2026.07.01
읽기 6분

Rust 공통 모듈을 크로스플랫폼에서 공유하기 - 4편. Apple 플랫폼과 XCFramework

기술

Rust 공통 모듈을 iOS 앱에서 쓰기 위해 static library, XCFramework, Swift Package, UniFFI binding을 같은 release unit으로 묶고 Xcode와 CI에서 재현하는 기준을 정리합니다.

RustiOSXcodeSwiftPMFFI
2026.06.30
읽기 6분

Rust 공통 모듈을 크로스플랫폼에서 공유하기 - 3편. UniFFI로 iOS와 Android 연결하기

기술

Rust 공통 모듈을 iOS와 Android에서 함께 쓰기 위해 UniFFI 바인딩을 설계하고, generated binding을 adapter 뒤에 숨기는 구조와 모바일 런타임 고려사항을 정리합니다.

RustiOSAndroidUniFFIFFI
2026.06.26
읽기 6분

Rust 공통 모듈을 크로스플랫폼에서 공유하기 - 2편. FFI 경계와 API 설계

기술

Rust 공통 모듈을 크로스플랫폼에서 안전하고 효율적으로 호출하기 위해 FFI 경계를 잡고 API를 설계하는 구체적인 실무 전략을 정리합니다.

RustiOSAndroidWebAssemblyFFI
2026.06.24
읽기 6분

Rust 공통 모듈을 크로스플랫폼에서 공유하기 - 1편. 어디까지 Rust로 묶을 것인가

기술

iOS·Android·Web에서 Rust 공통 모듈을 공유할 때 도메인 엔진의 경계를 어떻게 잡을지 정리한다. 무엇을 sudoku-core에 넣고 무엇을 플랫폼에 남길지, UniFFI·WASM 바인딩 계층과 앱 adapter 구조까지 다룬다.

RustiOSAndroidWebAssembly
2026.06.18
읽기 9분

iOS 런타임 폰트 등록, CTFontManagerRegisterFontsForURL 실무 정리

기술

iOS에서 CTFontManagerRegisterFontsForURL로 폰트를 런타임 등록하는 방법. UIAppFonts와의 차이, PostScript name 확인, 저장 위치와 해제 시점을 정리한다.

iOSSwiftCoreTextFont
2026.06.18
읽기 9분

Swift Package Registry, Git URL 의존성 이후를 준비하는 방법

기술

SwiftPM의 Git URL 의존성을 넘어 scope.package-name 식별자 기반 Package Registry로. iOS 팀이 도입 전에 봐야 할 CI 속도, 의존성 재현성, 사내 패키지 배포, 패키지 서명, Xcode 설정을 정리한다.

SwiftSwiftPMPackage RegistryiOS
2026.06.18
읽기 10분

WWDC26, iOS 개발자가 먼저 봐야 할 변화들

기술

App Intents·Foundation Models·Core AI·Xcode 27까지, iOS 개발자 관점에서 먼저 봐야 할 WWDC26의 변화들.

WWDC26iOSApp IntentsApple Intelligence
전체 글 보기
© 2026 진재명 · blog.jaemyeong.com
iOS 소프트웨어 엔지니어 · 부산