본문 바로가기

개발하자

Floter iOS RevenueCat 적발되지 않은 예외 'NS 내부 불일치 예외'

반응형

Floter iOS RevenueCat 적발되지 않은 예외 'NS 내부 불일치 예외'

콘솔에서 다음 오류가 발생했습니다:

[Purchases] - INFO: There is no singleton instance. Make sure you configure Purchases before trying to get the default instance.
*** Assertion failure in +[RCCommonFunctionality getPurchaserInfoWithCompletionBlock:], RCCommonFunctionality.m:118
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'You must call setup first.'
*** First throw call stack:
(0x1a0379654 0x1a009bbcc 0x1a027c6ec 0x1a06c216c 0x1032908ac 0x1032cdf9c 0x1032cc0d4 0x105c3ae30 0x1053ef758 0x1056d58b4 0x1053f90ec 0x1053fb818 0x1a02f8134 0x1a02f7e50 0x1a02f752c 0x1a02f253c 0x1a02f1ba8 0x1aa461344 0x1a442d3e4 0x102c4069c 0x1a01798f0)
libc++abi.dylib: terminating with uncaught exception of type NSException
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00000001a016ed88 libsystem_kernel.dylib`__pthread_kill + 8
libsystem_kernel.dylib`__pthread_kill:
->  0x1a016ed88 <+8>:  b.lo   0x1a016eda4               ; <+36>
    0x1a016ed8c <+12>: stp    x29, x30, [sp, #-0x10]!
    0x1a016ed90 <+16>: mov    x29, sp
    0x1a016ed94 <+20>: bl     0x1a014dad0               ; cerror_nocancel
Target 0: (Runner) stopped.
Lost connection to device.

그러나 이것은 간헐적인 문제이다(즉, 항상 발생하는 것은 아니다). 실제로 시작할 때 인스턴스를 설정했습니다(즉, 사용자가 인증되고 UID를 받은 직후):

 await Purchases.setDebugLogsEnabled(isDebugEnabled);
 await Purchases.setup(kRevenueCatApiKey, appUserId: uid);

제가 놓친 게 있나요? (그러나 대부분의 경우 작동)




문제를 발견했어요. 따라서 호출될 때마다 처리가 완료되지 않으면 이 예외가 발생합니다. 위의 @Cesar님의 댓글에 감사드립니다.

제 경우 문제는 다음과 같습니다:

  • IAP와 비즈니스 로직을 각각 처리하는 두 개의 블록이 있었습니다.
  • IAP는 사용자가 인증되면 바로 호출한다. 그러면 메인화면에서 비즈니스 로직이 서버로 로컬 데이터의 유효성을 확인합니다.
  • 문제는 인터넷 연결이 잘 되지 않아 처리가 끝나기 전에 비즈니스 로직 블록에 의해 해고될 때 발생한다.

그래서 내가 한 해결책은 IAP 블록이 끝나면 비즈니스 로직 블록이 초기화를 시작하도록 하는 것이었다. 예를 들어 각 프로세스를 기다리는 비동기 기능에 배치하는 것이다.




제 경우에는 전화를 하지 않았습니다:

await Purchases.configure(PurchasesConfiguration(_apiKey));

반응형