ios 파이어베이스 크래시틱스 비정상종료 GetDeviceToken

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 :
  • 프로젝트명 : 히어로원정대
  • 스테이터스 코드 :
  • 에러 코드 :

iOSInstance.GetDeviceToken

SIGABRT (ABORT)

  Crashed: com.apple.main-thread

0 libsystem_kernel.dylib 0xa974 __pthread_kill + 8
1 libsystem_pthread.dylib 0x60ec pthread_kill + 268
2 libsystem_c.dylib 0x75b80 abort + 180
3 libsystem_malloc.dylib 0x2bc68 malloc_vreport + 896
4 libsystem_malloc.dylib 0x2be4c malloc_report + 64
5 libsystem_malloc.dylib 0x6390 find_zone_and_free + 528
6 HeroKingdom 0x50d2524 iOSInstance.GetDeviceToken (TheBackend.iOS.cpp)
7 HeroKingdom 0x32769c4 iOSInstance.tkvS7Yaj2S (Backend__1.cpp)
8 HeroKingdom 0x3276fd4 d.5_MoveNext (il2cpp-codegen-il2cpp.h)
9 HeroKingdom 0x3500dd0 AsyncVoidMethodBuilderStart<d__5> (GenericMethods__19.cpp)
10 HeroKingdom 0x32768f0 iOSInstance.PutDeviceToken (Backend__1.cpp)
11 HeroKingdom 0x32402d4 z3m2GHjHp9y3JZ8EmQH.Y7fjPiakEP (Backend.cpp)
12 HeroKingdom 0x30d9038 NetworkMgr.Update (Assembly-CSharp__12.cpp)
13 UnityFramework 0x2fb8974 il2cpp::vm::Runtime::InvokeWithThrow(MethodInfo const*, void*, void**) + 606 (Runtime.cpp:606)
14 UnityFramework 0x2fb88bc il2cpp::vm::Runtime::Invoke(MethodInfo const*, void*, void**, Il2CppException**) + 600 (Runtime.cpp:600)
15 UnityFramework 0x2081ab4 scripting_method_invoke + 290 (ScriptingApi_Il2Cpp.cpp:290)
16 UnityFramework 0x208f01c Invoke + 298 (ScriptingInvocation.cpp:298)
17 UnityFramework 0x209e110 CallUpdateMethod + 583 (MonoBehaviour.cpp:583)
18 UnityFramework 0x1ee57f8 CommonUpdate + 180 (Behaviour.cpp:180)
19 UnityFramework 0x1f8bc74 ExecutePlayerLoop + 393 (PlayerLoop.cpp:393)
20 UnityFramework 0x1f8bcb4 ExecutePlayerLoop + 417 (PlayerLoop.cpp:417)
21 UnityFramework 0x1f8bf88 PlayerLoop + 527 (PlayerLoop.cpp:527)
22 UnityFramework 0x256b764 UnityPlayerLoopImpl + 342 (LibEntryPoint.mm:342)
23 UnityFramework 0x18060 UnityRepaint + 215 (UnityAppController+Rendering.mm:215)
24 QuartzCore 0x2fd50 CA::Display::DisplayLinkItem::dispatch
(CA::SignPost::Interval<(CA::SignPost::CAEventCode)835322056>&) + 48
25 QuartzCore 0x32f30 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 868
26 QuartzCore 0x2fee8 display_timer_callback(__CFMachPort*, void*, long, void*) + 372
27 CoreFoundation 0x36324 __CFMachPortPerform + 176
28 CoreFoundation 0x36260 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION + 60
29 CoreFoundation 0x34ce4 __CFRunLoopDoSource1 + 524
30 CoreFoundation 0x34310 __CFRunLoopRun + 2244
31 CoreFoundation 0x33968 CFRunLoopRunSpecific + 608
32 GraphicsServices 0x34e0 GSEventRunModal + 164
33 UIKitCore 0x22aedc -[UIApplication _run] + 888
34 UIKitCore 0x22a518 UIApplicationMain + 340
35 UnityFramework 0x17c94 -[UnityFramework runUIApplicationMainWithArgc:argv:] + 96 (main.mm:96)
36 HeroKingdom 0x412c main + 28 (main.mm:28)
37 ??? 0x1b0896d84 (누락)

  • 에러 메시지 :
    6 HeroKingdom 0x50d2524 iOSInstance.GetDeviceToken (TheBackend.iOS.cpp)
    여기에서 토큰을 못불러오는거같습니다.
    테스트하는 폰에서는 에러가 발생하지 않지만, 유저분들의 휴대폰에서 크래시가 발생하여 파이어베이스에 기록됩니다.
    업데이트를 진행하고 발생한 [새로운 문제] 로 되어있습니다

안녕하세요, 개발자님.
문의하신 내용은 확인 후 안내드리도록 하겠습니다.

ios에서 푸시 크래시가 발생하는 경우 Mobile Notification을 사용하여 해결이 가능합니다.
푸시 설정 관련 개발자 문서가 업데이트 되었으니 아래 정보를 확인하여 시도해 주시면 감사하겠습니다.

Mobile Notification 를 설정하라고 하셔서 설정했고
뒤끝 버전을 5.11.4 → 5.11.5 로 바꾸었습니다.

게임이 종료되지는 않지만 해당 에러가 게임 실행시 계속 발생합니다.

Attempting to complete future before FCM initialized

해결방법이 있을까요?

뒤끝에서는 iOS 환경의 경우 APNs 를 사용하고 있어
파이어 베이스 푸시 서비스와는 연관이 없습니다.

iOS 빌드 내 파이어베이스 초기화와 관련된 코드가 사용되고 있다면
확인하여 적절히 조치해 주시면 감사하겠습니다.

public static void Init()
        {
#if ENABLE_DEBUG
            Debug.Log("========== FirebaseAnalyticsMgr Init");
#endif
            if (IsInitializing)
                return;

            IsInitializing = true;
            IsInitialized = false;

            FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
            {
                DependencyStatus dependencyStatus = task.Result;
                if (dependencyStatus == DependencyStatus.Available)
                {
                    // Create and hold a reference to your FirebaseApp, i.e.
                    //   app = Firebase.FirebaseApp.DefaultInstance;
                    // where app is a Firebase.FirebaseApp property of your application class.

                    // When this property is set to true, Crashlytics will report all
                    // uncaught exceptions as fatal events. This is the recommended behavior.
                    //Firebase.Crashlytics.ReportUncaughtExceptionsAsFatal = true;

                    // Set a flag here indicating that Firebase is ready to use by your
                    // application.

                    IsInitialized = true;
                    Crashlytics.ReportUncaughtExceptionsAsFatal = true;

                    //Firebase.Analytics.FirebaseAnalytics.SetUserProperty("SystemLanguage", Application.systemLanguage.ToString());
                    //Firebase.Analytics.FirebaseAnalytics.LogEvent("SystemLanguage", "SystemLanguage", Application.systemLanguage.ToString());

#if ENABLE_DEBUG
                    Debug.Log("========== FirebaseAnalyticsMgr IsInitialized true");
#endif
                }
                else
                {
#if ENABLE_DEBUG
                    Debug.Log("$========== FirebaseAnalyticsMgr Could not resolve all Firebase dependencies : {dependencyStatus}");
                    // Firebase Unity SDK is not safe to use here.
#endif
                }
            });
        }

이것이 파이어베이스 초기화 부분입니다.
이 초기화를 하지말라는 말씀이신가요?

해당 에러메시지는 FCM이 완전히 초기화되기 전에 관련 함수를 호출하려고 할 때 발생합니다.
특히, FirebaseApp.CheckAndFixDependenciesAsync 가 완료되기 이전 FCM 관련 작업을 시도하는 경우가 문제가 될 수 있습니다.

파이어베이스를 사용하시는 상황이라면, 파이어베이스와 관련된 호출을 점검해 주세요.

감사합니다 감사합니다