I'm testing the usage of Citrix sdk for my app, importing CTXMAMCore, everything worked fine for some day, suddenly, on multiple versions of my App, even the one in obj-c they included in their framework, I started getting some strange message in console. For simple testing now I just have an app with a WKWebView, using UIKit. It seems The app is still working, launching the "secure hub" app they require to be used. But I prefer understand what is happening in order to prevent possible issues.
some notes:
- if I put a breakpoint inside the if cases in CTXMAMCore.initializeSDKs closure, they won't be called.
- testing on real device iPhone 11, iOS 16.1
- following more generic question I tried to make framework optional in targets / BuildPhases / Link Binary with library but it is not working.
- not working with pods, I followed their guide on the site. so simply added frameworks
my AppDelegate
import UIKit
import CTXMAMCore
@main
class AppDelegate: UIResponder, UIApplicationDelegate, CTXMAMCoreSdkDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
CTXMAMCore.setDelegate(self)
CTXMAMCore.initializeSDKs { (nilOrError) in
if let error = nilOrError {
let alertMsg = "❌ Error initializing SDKs -> -> \(error)"
print(alertMsg)
self.showAlertMsg(alertMsg, isFatal: false)
} else {
let alertMsg = "✅ SDKs initialized and ready"
print(alertMsg)
self.showAlertMsg(alertMsg, isFatal: false)
}
}
return true
}
the message (partial, since very long)
objc[79194]: Class ClassProperty is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMLocalAuth.framework/CTXMAMLocalAuth (0x10288f428) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed0c78). One of the two will be used. Which one is undefined.
objc[79194]: Class CtxApplicationPrefixProvider is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bc9ee8) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6498). One of the two will be used. Which one is undefined.
objc[79194]: Class CtxAsyncOperationObjC is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bc9f10) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed64c0). One of the two will be used. Which one is undefined.
objc[79194]: Class CtxAsyncServiceObjC is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bc9f60) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6510). One of the two will be used. Which one is undefined.
objc[79194]: Class CtxAtomicWorkflowService is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bc9fb0) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6560). One of the two will be used. Which one is undefined.
objc[79194]: Class CtxDevice is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca000) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed65b0). One of the two will be used. Which one is undefined.
objc[79194]: Class PodsDummy_CtxiOSSDK is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca078) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6628). One of the two will be used. Which one is undefined.
objc[79194]: Class CtxJSONAPIOperation is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca0a0) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6650). One of the two will be used. Which one is undefined.
objc[79194]: Class CtxMainThreadRunner is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca168) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed66c8). One of the two will be used. Which one is undefined.
objc[79194]: Class CtxObfuscator is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca190) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed66f0). One of the two will be used. Which one is undefined.
objc[79194]: Class CtxRunLoopSemaphore is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca208) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6768). One of the two will be used. Which one is undefined.
objc[79194]: Class CtxSdkLogger is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca280) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6790). One of the two will be used. Which one is undefined.
objc[79194]: Class CtxUrlSessionTaskOperationObjC is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca370) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed67e0). One of the two will be used. Which one is undefined.
objc[79194]: Class MockCtxNSFileCoordinator is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca528) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6858). One of the two will be used. Which one is undefined.
objc[79194]: Class MockCtxNSFileManager is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca5c8) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed68a8). One of the two will be used. Which one is undefined.
objc[79194]: Class MockCtxNSHTTPCookieStorage is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca5f0) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed68d0). One of the two will be used. Which one is undefined.
objc[79194]: Class MockCtxNSItemProvider is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca668) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6948). One of the two will be used. Which one is undefined.
objc[79194]: Class MockCtxNSNotificationCenter is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca6b8) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6998). One of the two will be used. Which one is undefined.
objc[79194]: Class MockCtxNSOperationQueue is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca708) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed69e8). One of the two will be used. Which one is undefined.
objc[79194]: Class MockCtxNSString is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca758) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6a38). One of the two will be used. Which one is undefined.
objc[79194]: Class MockCtxNSUserDefaults is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca7a8) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6a88). One of the two will be used. Which one is undefined.
objc[79194]: Class MockCtxWKHTTPCookieStore is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca8e8) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6ad8). One of the two will be used. Which one is undefined.
objc[79194]: Class MockUNNotification is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca938) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6b28). One of the two will be used. Which one is undefined.
objc[79194]: Class MockUNNotificationResponse is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca988) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6b78). One of the two will be used. Which one is undefined.
objc[79194]: Class MockUNTextInputNotificationResponse is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bca9d8) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6bc8). One of the two will be used. Which one is undefined.
objc[79194]: Class _TtC9CtxiOSSDK17CtxAsyncOperation is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bcaeb0) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed6c80). One of the two will be used. Which one is undefined.
objc[79194]: Class _TtC9CtxiOSSDK15CtxAsyncService is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103beeaf0) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102f1b1f8). One of the two will be used. Which one is undefined.
objc[79194]: Class _TtC9CtxiOSSDK17CtxSwiftSdkLogger is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103beebd8) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102f1b2b0). One of the two will be used. Which one is undefined.
objc[79194]: Class _TtC9CtxiOSSDK26CtxUrlSessionTaskOperation is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bcb1a8) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed7178). One of the two will be used. Which one is undefined.
objc[79194]: Class _TtC9CtxiOSSDK32MockCtxHttpHeaderProviderService is implemented in both /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMCore.framework/CTXMAMCore (0x103bcb790) and /private/var/containers/Bundle/Application/81FDDC8D-0A1F-46E8-BF75-B7C76378C620/sempliceWKWebView.app/Frameworks/CTXMAMAppCore.framework/CTXMAMAppCore (0x102ed7378). One of the two will be used. Which one is undefined.
2023-11-15 09:02:59.415880+0100 sempliceWKWebView[79194:22268895] CTXLogger : User preferences are not yet available. Returning from Logger initializer..
2023-11-15 09:02:59.416443+0100 sempliceWKWebView[79194:22268895] CTXMAMCoreFramework, 3, 1, /Users/jenkins/jenkins/workspace/ossdk_ctxmamcore_Release_23.10.0/CTXMAMCore/CTXMAMConfigurationManager/CTXMAMConfigManager.m, -[CTXMAMConfigManager hubAppInfo], 990, hubAppInfo is nil.
2023-11-15 09:02:59.416481+0100 sempliceWKWebView[79194:22268895] CTXLogger : User preferences are not yet available. Returning from Logger initializer..
2023-11-15 09:02:59.416507+0100 sempliceWKWebView[79194:22268895] CTXMAMCoreFramework, 3, 1, /Users/jenkins/jenkins/workspace/ossdk_ctxmamcore_Release_23.10.0/CTXMAMCore/CTXMAMConfigurationManager/CTXMAMConfigManager.m, -[CTXMAMConfigManager hubAppInfo], 990, hubAppInfo is nil.
2023-11-15 09:02:59.416536+0100 sempliceWKWebView[79194:22268895] CTXLogger : User preferences are not yet available. Returning from Logger initializer..
2023-11-15 09:02:59.416547+0100 sempliceWKWebView[79194:22268895] CTXLogger : User preferences are not yet available. Returning from Logger initializer..
2023-11-15 09:02:59.416569+0100 sempliceWKWebView[79194:22268895] CTXMAMCoreFramework, 4, 1, /Users/jenkins/jenkins/workspace/ossdk_ctxmamcore_Release_23.10.0/CTXMAMCore/CTXMAMLogger/CTXMAMLogger.m, CTXMAMLOG_Initialize, 61, Applying log settings from policy. LoggingBlocked: 0; fileSize: 0; fileCount: 0; logLevel: 0; target: (null)(1).
another portion
2023-11-15 09:29:31.141851+0100 sempliceWKWebView[79247:22280047] CTXLogger : User preferences are not yet available. Returning from Logger initializer..
2023-11-15 09:29:31.142343+0100 sempliceWKWebView[79247:22280047] CTXMAMCoreFramework, 3, 1, /Users/jenkins/jenkins/workspace/ossdk_ctxmamcore_Release_23.10.0/CTXMAMCore/CTXMAMConfigurationManager/CTXMAMConfigManager.m, -[CTXMAMConfigManager hubAppInfo], 990, hubAppInfo is nil.
another portion
2023-11-15T09:29:31.154+0100 sempliceWKWebView[CTXMAMCoreFramework:INFO:com.apple.main-thread:103]-:-[CTXMAMDataStorage p_initializeStorageData:]: ConfigManagerAuthVault: Read the data written by other app(s) running with XenMobile policyMode.
2023-11-15 09:29:31.157201+0100 sempliceWKWebView[79247:22280075] [CTXMAMCoreFramework:INFO:com.citrix.ctxmamcore.mamAppInfoQueue:1803]-:-[CTXMAMAppsInfo printMAMAppInfo]: CTX MAM App Info: {"CTXMAMCore":"23.10.0+1"; "CTXMAMCompliance":"23.10.0+2"; "CitrixLogger":"23.10.0+1"; "CTXMAMNetwork":"23.10.0+1"; "CTXMAMLocalAuth":"23.10.0+1"; "CTXMAMAppCore":"23.10.0+1"; "CTXMAMContainment":"23.10.0+1"} {"CGPrep Toolkit Version & Build":"23.10.0"; "Is MAMCore Debug Build?":"No"; "lib-ctxlogger":"2.3.9"; "App Type":"SDK-CitrixMAM(5)"} Device: iPhone12,1 iOS: 16.1
2023-11-15T09:29:31.154+0100 sempliceWKWebView[CTXMAMCoreFramework:INFO:com.citrix.ctxmamcore.mamAppInfoQueue:1803]-:-[CTXMAMAppsInfo printMAMAppInfo]: CTX MAM App Info: {"CTXMAMCore":"23.10.0+1"; "CTXMAMCompliance":"23.10.0+2"; "CitrixLogger":"23.10.0+1"; "CTXMAMNetwork":"23.10.0+1"; "CTXMAMLocalAuth":"23.10.0+1"; "CTXMAMAppCore":"23.10.0+1"; "CTXMAMContainment":"23.10.0+1"} {"CGPrep Toolkit Version & Build":"23.10.0"; "Is MAMCore Debug Build?":"No"; "lib-ctxlogger":"2.3.9"; "App Type":"SDK-CitrixMAM(5)"} Device: iPhone12,1 iOS: 16.1