Hemos integrado BlackBerry Dynamics SDK a nuestra aplicación iOS, que también utiliza análisis de Firebase. Todo funciona bien en dispositivos con iOS 12/13, pero en dispositivos con iOS 14, la aplicación falla al inicializar Firebase.

La autorización de BlackBerry funciona bien y una vez que el usuario está autorizado, el código que inicializa Firebase se está ejecutando y ocurre un bloqueo.

La versión de BlackBerry Dynamics SDK es 8.1.0.37 y estamos utilizando la biblioteca dinámica en lugar de la biblioteca estática.

BlackBerry Dynamics docs dice lo siguiente:

Se requiere la versión 8.1 del SDK para admitir FirebaseCore para aplicaciones en iOS 14. FirebaseCore no es compatible con la versión 8.0 o inferior del SDK en iOS 14. El pod de FirebaseCore debe eliminarse si la aplicación no lo está utilizando.

Aquí está la pila de llamadas:

#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 ()

Y esto es lo que se imprime en la consola:

*** 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

¿Alguien sabe si hay alguna forma de solucionar este problema?

2
Jari Koivisto 25 sep. 2020 a las 15:31

2 respuestas

La mejor respuesta

Descubrimos que el bloqueo ocurre solo cuando el AppConnect SDK de MobileIron también se vincula a la aplicación.

De modo que pudimos resolver el problema eliminando AppConnect SDK de la versión de BlackBerry Dynamics de nuestra aplicación.

1
Jari Koivisto 7 oct. 2020 a las 05:00

El dylib y el static deberían ser iguales en este caso. Recomiende ponerse en contacto con el equipo de soporte de BlackBerry para investigar si el problema persiste.

0
Harry J 29 sep. 2020 a las 16:03