iOS Notification 클릭후 앱을 실행시 만약 Badge Number 를 0으로 초기화 한다면, 기존의 읽지 않은 Notification 목록들이 전부 사라지게 된다. 이를 방지 하기 위해 Badge Number 만 0으로 초기화 시켜주고 싶다면, UIApplication.shared.applicationIconBadgeNumber = -1 으로 초기화 시켜주면 클릭한 Notification만 사라지고 나머지는 그대로 남아있게 된다.
Realm 에서 제공하는 기능중에 Primarykey 가 같으면 자동으로 데이터를 업데이트 해주는 기능이 있습니다. 이말인 즉 where 절 같은 조건을 줄 필요가 없다는 소리 입니다. 데이터를 추가하면 자동으로 업데이트가 필요한지 새로 튜플을 추가할건지 자동으로 실행 합니다. 사용 방법은 아주 간단한데, let realm = try! Realm() try? realm.write { realm.add(data, update: .modified) } update: .modified 를 추가해 주면 됩니다. 단! Model에 따로 primaryKey 가 정해져 있지 않으면 Error 를 뿜어내므로 주의 하시기 바랍니다.

먼저 https://apps.apple.com/kr/app/realm-browser/id1007457278?mt=12 Realm Browser Realm Browser is a viewer and editor for .realm data store files. It allows developers implementing Realm in their apps to easily view and debug the contents of the .realm files their apps have created. Features: - View all of the objects in a .realm file apps.apple.com 맥용 Realm Browser 를 설치해 줍니다. 설치후 실행해 보면 아래와 같은..
API를 통해 들어온 데이터를 Codable 을 통해 Model 에 Mapping 시키고 다시 해당 데이터를 Realm에 바로 넣는 방법에 대해 알아 보겠습니다. 예시 Json Data 구조 입니다. { "string_data": "18C", "array_data1": [ { "language_code": "en", "name": "English" }, { "language_code": "ja", "name": "Japanese" } ], "array_in_object": { "array_data2" : [ { "title": "test1", "name": "test1 입니다." }, { "title": "test2", "name": "test2 입니다." } ] } } 이제 모델들을 정의 해보겠습니다...

AsyncSubject onComplete 호출 시점에 가장 마지막 값을 배출한다. PublishSubject 구독 시점에 이어지는 값들을 배출한다. BehaviorSubject 구독전 마지막 값과 구독후의 모든 값들을 배출한다. ReplaySubject 구독 시점과 상관 업이 모든 값을 다시 전달 한다. 참고 : http://reactivex.io/documentation/ko/subject.html

기존 Google Analytics 가 훨씬 다양한 기능과 세부적인 필터링이 가능하지만 지원 중단 대상이 되었습니다. 따라서 Firebase Analytics 로 포스트 작성 하였습니다. https://support.google.com/analytics/answer/9167112?hl=ko&ref_topic=2587085 Google 웹로그 분석 서비스 SDK 지원 중단 - 애널리틱스 고객센터 도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요 support.google.com App을 배포 하고 나서 사용자의 앱 반응이나, 각 기능별 활용도, 화면 별 사용률을 알수 있으면, 앱을 사용자의 편의성에 맞게 업데이트 하는데 유용한 정보가 될 것이다. 따라서 앱을 Tracking 하여 사용자의 앱 활..
요즘 어플리케이션은 대부분 수시로 추가되고 변하는 컨텐츠를 보여주는 방식이기 때문에 서버와의 통신이 불가피 하다. 따라서 오늘은 서버와 API 통신을 할수있게끔 도와주는 Alamofire 라이브러리를 적용해 보겠다. 1. 설치 Podfile에 pod 'Alamofire' 를 추가하고 터미널에서 해당 프로젝트 디렉토리 (Pod파일이 위치한 곳 )Pod install 을 입력해준다 2. 통신전 준비 - Model import Foundation struct BoardList: Codable { let idx: Int let title: String let content:String } - API Url 및 Param Code enum Result { case success(T) case error(Error..
1. Podfile에 pod 'RealmSwift' 2. 추가후 터미널에서 해당 프로젝트로 이동후 Pod Install 입력 3. Object 생성 예시) import RealmSwift class Person: Object { @objc dynamic var name = "" @objc dynamic var age = 0 } 4. 데이터 추가 (Create) let realm = try! Realm() let person = Person() person.name = "RealmTest" person.age = 10 try? realm.write { realm.add(person) } 5. 데이터 조회 (Read) - Realm에 저장된 모든 데이터 확인 let realm = try! Realm() le..

Crashlytics custom error 를 만들어 보겠습니다. 먼저 같이 사용하면 좋은 유용한 Crashlytics Method를 정리해 보겠습니다. 1. User Info Crashlytics.sharedInstance().setUserIdentifier("123456789") Crashlytics.sharedInstance().setUserEmail("person@domain.com") Crashlytics.sharedInstance().setUserName("Awesome AppUser") User Info 를 설정하는 Method 입니다. 위 처럼 설정하면 에러 이벤트 발생시 User Info 가 포함되어 보여집니다. Crashlytics 에 그림 1과 같이 User의 정보가 노출 됩니다. ..

이어서 fabric crashlytics install 과정을 시작하겠습니다. 일단 상단 메뉴에서 XCode -> Preferences 를 열어 줍니다. 다음으로 그림 1 처럼 Locations를 선택하고 Advanced 버튼을 클릭 해 줍니다. 그림 2 처럼 Custom 을 설정한후 Done 을 클릭후 설정창을 빠져 나옵니다. Xcode의 프로젝트 Navigator에서 프로젝트를 선택하고 그림 1처럼 보기 설정을 All, Combined 를 선택해 준후 Debug Information Format 를 검색하여 DWARF with dSYM File 로 설정을 변경해 준후 빌드를 해줍니다. 그럼 그림 2에 설정해보이는 Products 경로에 폴더가 생기는데 (-> 버튼을 눌러주면 Finder 가 열립니다 ..