BlackBerry Dynamics SDK для iOS версии 8.1.0.37 и Firebase analytics приводят к сбою приложения на iOS 14

#ios #blackberry #blackberry-dynamics

#iOS #ежевика #blackberry-dynamics

Вопрос:

Мы интегрировали BlackBerry Dynamics SDK в наше приложение для iOS, которое также использует Firebase analytics. На устройствах под управлением iOS 12/13 все работает нормально, но на устройствах под управлением iOS 14 приложение вылетает при инициализации Firebase.

Авторизация BlackBerry проходит нормально, и как только пользователь авторизован, выполняется код, инициализирующий Firebase, и происходит сбой.

Версия BlackBerry Dynamics SDK 8.1.0.37, и мы используем динамическую библиотеку вместо статической библиотеки.

В документах BlackBerry Dynamics говорится следующее:

Для поддержки FirebaseCore для приложений на iOS 14 требуется SDK версии 8.1. FirebaseCore несовместим с SDK версии 8.0 или ниже на iOS 14. Модуль FirebaseCore следует удалить, если он не используется приложением.

Вот стек вызовов:

 #0  __exceptionPreprocess ()
#1  objc_exception_throw ()
#2  -[NSProxy methodSignatureForSelector:] ()
#3  ___forwarding___ ()
#4  _CF_forwarding_prep_0 ()
#5   [ACSubclasser wrapObjectIntoSubclass:] ()
#6   [NSURLSession(ACURLProtocol) ac_rawSessionWithConfiguration:delegate:delegateQueue:] ()
#7   [NSURLSession(ACURLProtocol) miac_sessionWithConfiguration:delegate:delegateQueue:] ()
#8  ___lldb_unnamed_symbol9442$$BlackBerryDynamics ()
#9  ___lldb_unnamed_symbol9444$$BlackBerryDynamics ()
#10 -[FIRInstallationsAPIService initWithAPIKey:projectID:]
#11 -[FIRInstallationsIDController initWithGoogleAppID:appName:APIKey:projectID:GCMSenderID:accessGroup:]
#12 -[FIRInstallations initWitAppOptions:appName:]
#13 -[FIRInstallations initWithApp:]
#14 __40 [FIRInstallations componentsToRegister]_block_invoke
#15 -[FIRComponentContainer instantiateInstanceForProtocol:withBlock:]
#16 -[FIRComponentContainer instanceForProtocol:]
#17  [FIRComponentType instanceForProtocol:inContainer:]
#18  [FIRInstallations installationsWithApp:]
#19  [FIRInstallations installations]
#20  [FIRAnalytics updateFirebaseInstallationID] ()
#21  [FIRAnalytics startWithConfiguration:options:] ()
#22 -[FIRApp configureCore]
#23  [FIRApp addAppToAppDictionary:]
#24  [FIRApp configureWithName:options:]
#25  [FIRApp configureWithOptions:]
#26  [FIRApp configure]
#27 -[MFAppDelegate finalizeApplicationLaunch]
#28 -[MFAppGDDelegate didAuthorize]
#29 -[MFAppGDDelegate onAuthorized:]
#30 -[MFAppGDDelegate handleEvent:]
#31 __NSThreadPerformPerform ()
#32 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#33 __CFRunLoopDoSource0 ()
#34 __CFRunLoopDoSources0 ()
#35 __CFRunLoopRun ()
#36 CFRunLoopRunSpecific ()
#37 GSEventRunModal ()
#38 -[UIApplication _run] ()
#39 UIApplicationMain ()
#40 main
#41 start ()
  

И вот что выводится на консоль:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSProxy methodSignatureForSelector:] called!'
*** First throw call stack:
(0x1a619d114 0x1b99c3cb4 0x1a745f3f8 0x1a619f2e4 0x1a61a16cc 0x1103d3540 0x11036960c 0x110369320 0x1042370f8 0x104237680 0x100e83ed4 0x100e896e8 0x100e825d4 0x100e82428 0x100e82320 0x100e35a50 0x100e35cd8 0x100e36358 0x100e82dd0 0x100e82d08 0x1015c3f84 0x1015c3eb0 0x100e30e74 0x100e309d4 0x100e2fd54 0x100e2f778 0x100e2f6cc 0x10087eeec 0x100b5e7a8 0x100b5eaf0 0x100b5e6ac 0x1a747cda0 0x1a611d240 0x1a611d140 0x1a611c488 0x1a6116a40 0x1a6116200 0x1bc211598 0x1a89dc004 0x1a89e15d8 0x1008a228c 0x1a5df5598)
libc  abi.dylib: terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSProxy methodSignatureForSelector:] called!'
terminating with uncaught exception of type NSException
  

Кто-нибудь знает, есть ли способ это исправить?

Ответ №1:

Мы выяснили, что сбой происходит только тогда, когда AppConnect SDK MobileIron также связан с приложением.

Таким образом, мы смогли решить проблему, удалив AppConnect SDK из версии BlackBerry Dynamics нашего приложения.

Ответ №2:

В этом случае dylib и static должны быть одинаковыми. Рекомендуем обратиться в службу поддержки BlackBerry, чтобы выяснить, сохраняется ли проблема.