iOS/트러블 슈팅 14

트러블슈팅) iOS. APNS 등록 후 "didRegisterForRemoteNotificationsWithDeviceToken" 함수 실행 안됨.

문제 APNS 등록 후 didRegisterForRemoteNotificationsWithDeviceToken 호출이 안되는 문제 발생 그로 인해 deviceToken 값을 가져오지 못함 해결 info.plist에 FirebaseAppDelegateProxyEnabled 추가 후 type: "Boolean", value: "NO" 추가 해결과정 FirebaseApp.configure() 실행 시 FIRMessaging으로 인해 APNS가 자동으로 설정되어 함수 호출이 안된 것 같다. 그래서 FirebaseAppDelegateProxyEnabled는 Application delegate이 받은 APNS를 설정하는데 사용된다. 값을 "NO"로 하게 되면 APNS가 수동으로 설정되어 didRegisterFor..

트러블슈팅) iOS. 무결성을 확인할 수 없기 떄문에 이 앱을 설치할 수 없습니다.

문제 iPhone 15에서 기존에 배포되어 있던 앱을 다운로드 시, "무결성을 확인할 수 없기 떄문에 이 앱을 설치할 수 없습니다."라는 문제가 나왔다. Apple 커뮤니티 - iPhone 15, iOS 17에서 무결성 해제 방법 알려주실 수 있을까요? 비슷한 문제를 가지고 계신분들이 있는 것 같다.. 해결과정 구글링을 해보니 앱 버전과, 빌드 버전를 업데이트 해보라는 글이 많아 수정해서 배포하려고 했다. 일단 재 배포하기 위해 ipa파일을 생성 한 후 dropbox에 업로드 했다.(dropbox로 배포하는 방식으로 하는 중이다.) 절차대로 manifast 수정하고 웹 코드도 수정했지만, 다운로드 반응이 없었다.(보통 dropbox 링크 문제인 경우이다.) 이전 공유 링크 url과 비교해보니 url중간에..

SwiftUI Core Data & Realm Preview crash 해결

CoreData 또는 Realm의 구조 변경 시 앱을 실행시키면 형식에 맞지 않아 crash 현상이 발생된다. 시뮬레이터인 경우 해당 앱을 삭제 후 다시 빌드를 하면 되지만, SwiftUI의 Preview인 경우 직접적으로 해당 앱을 삭제 하지 못한다. Xcode를 강제종료해서 재 빌드를 해보았지만 여전히 동일한 문제가 발생되었고, 구글링 중 스택오브플로우 자료를 참고해서 적용해보니 잘 작동되었다. 시도한 방법은 터미널을 열어서 xcrun simctl --set previews delete all 명령하는 것이다. 아래 사진처럼 Using Previews Device Set: ... 나오면 정상으로 초기화 된 것으로 보인다. 참고링크 https://stackoverflow.com/questions/667..

Realm 채팅 앱 개발 중 메세지 삭제 에러

에러 메세지 삭제 시 RLMException: Object has been deleted or invalidated 에러 메세지가 나오면서 앱이 꺼지는 현상 발생 원인 메세지로그의 변화를 감지하기 위해 Realm의 observe 사용하고 있었다. observe에 짧게 알아 보자면 조금더 자세한 내용은 문서 참조 https://www.mongodb.com/docs/realm/sdk/swift/react-to-changes/ 문서에서 컬렉션 변화에 감지하는 리스너를 등록이라고 설명되어 있다. -> 컬렉션의 데이터 변경이 되면 호출되는 메서드 인 것 같다. 다시 돌아와서 메세지 삭제 시 해당 컬렉션의 데이터를 Realm 호출해 삭제 시키고 있는데 다시 한번더 해당 컬렉션의 데이터를 참조? 값을 찾을려고 하니 ..

Error: "Swinject: Resolution failed. Expected registration"

Swinject: Resolution failed. Expected registration: { Service: RecentMessageListenerRepositoryProtocol, Factory: Resolver -> RecentMessageListenerRepositoryProtocol } Available registrations:-> 주어진 로그 메시지를 보면, Swinject가 RecentMessageListenerRepositoryProtocol에 대한 등록을 찾지 못해 해결할 수 없다는 것을 나타냅니다. 컨테이너에 등록된 의존성을 해결하지 못했을 때 발생합니다. 이런 경우, Swinject 컨테이너에 필요한 의존성 등록을 추가하거나 문제가 있는 의존성을 수정하여 해결할 수 있습니다. 현재..

Realm) Error - "Provided schema version 0 is less than last set version 1." 해결

발생 새로 앱을 실행시키거나 모델 업데이트 시 Realm version 에러가 발생했다. 이유 에러 발생 이유로는 schema version 설정 전에 Object에 접근해서 빌드 시 에러가 발생되었다. 해결 앱 실행 후 처음 접근 전에 Realm을 configuration을 하면 해결 되었다. 저는 RealmDB객체를 init에서 선언해주어 생성과 동시에 configuratuion 해주었다. let config = Realm.Configuration( schemaVersion: 1, migrationBlock: { migration, oldSchemaVersion in if (oldSchemaVersion < 1) { } }) Realm.Configuration.defaultConfiguration =..

TableView, CollectionView Cell클릭 흔적 없애는 방법

애플 공식문서에 지원하는 메서드를 활용해 보자 설명은 "지정된 인덱스에서 항목을 선택 취소합니다".라고 되어 있다. 실제 적용해 보자. func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { } 함수에서 아래 코드 추가해준다 self.collectionView.deselectItem(at: indexPath, animated: true) 이렇게 되면 다시 돌아와있을때 선택한 셀에 선택한 효과가 없어져 있다.