Question #1.Library (iOS SDK 17.3.2) has not been updated since 2017.
What’s the state of the SDK? Is it under active development? Are there any new versions to be expected soon?
Answer:
AXA 17.3.2 on-premise does not have the latest iOS SDK version 18.3, it is highly recommended to use the SaaS version.
You can request a SaaS tenant for evaluation from below urls:
https://learn.broadcom.com/dx-apm-saas-starter-editionhttps://www.ca.com/us/trials/digital-experience-insights.html
Question #2.Missing nullability annotations for Swift use
In order to use the SDK with Swift, the Objective-C Headers have to be annotated.
https://developer.apple.com/documentation/swift/objective-c_and_c_code_customization/designating_nullability_in_objective-c_apis
Answer :
For tracking we are not given any optionals parameters for method calls. Instead of it we have separately giving another method to pass extra parameters.
Ex: Let’s say we have 2 methods for “startTransaction” with serviceName and without serviceName as well as “stopTransaction” with failure and without failure. If you want to set failure string while stoping the transaction then you can use “stopTransaction:withFailure” method.
Question #3.Open Sources Licenses are not included, only referenced.
For legal issues we need to know, which open source libraries are used by the SDK and those need to be included in the SDK!
Please provide the exact versions of the libraries used - an their license texts.
Answer :
We are using PLCrashReporter version 1.3 — You can check for license text in repo : https://github.com/plausiblelabs/plcrashreporter/blob/master/LICENSE
Question #4.Sample Code is broken at some places and not up to date:
https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-enterprise-software/it-operations-management/app-experience-analytics/17-3/configuring/collect-data-from-ios-applications.html
Answer:
We have provided that examples to swift 3.2 but later apple has released swift versions with updated signatures so, please change the method signatures based on your version.
Question #5.SDK demands access to the user’s location (activated by default)
[CA MAA] Requesting Authorization for Location Tracking …….. 2019-06-18 13:24:38.259500+0200 Documents2[2278:6086904] This app has attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must contain both “NSLocationAlwaysAndWhenInUseUsageDescription” and “NSLocationWhenInUseUsageDescription” keys with string values explaining to the user how the app uses this data
Risk: App could crash at launch in future iOS releases.
How is this planned to be handled by the SDK in the future?
Answer:
If you didn’t set these keys in app’s Info.plist it won’t show the current location in AXA cloud but it won’t crash.
Until user approves the permission for location tracking AXA sdk can’t able to collect the location info.
Question #6.Access of undefined third party classes
2019-06-18 13:28:36.184867+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] IBM WorkLight class not found
Why is this happening? Is this needed?
Answer:
It's meant to see if any IBM mobile frameworks are present. Ignore it. We will remove this message in future.
Question #7.Use of key value coding to access private APIs
2019-06-18 16:03:30.629933+0200 Documents2[1876:1753003] [ERROR] [CA MAA] Could not get signal strength: [<UIStatusBar_Modern 0x104a0a570>
valueForUndefinedKey:]: this class is not key value coding-compliant for the key foregroundView.
Will this change in planned, future releases?
Answer:
DE426209 - We are facing this issue in iPhone X only, however, this issue is fixed in APM 11.1.1 and SaaS
Question #8.iOS System APIs are not used properly (main thread checker):
================================================================= Main Thread Checker: UI API called on a background thread: -[UIApplication statusBarOrientation] PID: 1893, TID: 1755817, Thread name: (none), Queue name: NSOperationQueue 0x2800612c0 (QOS: UNSPECIFIED), QoS: 0 Backtrace: 4 Documents2 0x0000000105112af4 +[CAMDOUtils deviceOrientation] + 52 5 Documents2 0x00000001050fc7b0 __38-[UIControlTarget logEvent:withValue:]_block_invoke + 648 6 Foundation 0x0000000191e36b6c <redacted> + 16 7 Foundation 0x0000000191d3ecc8 <redacted> + 72 8 Foundation 0x0000000191d3e19c <redacted> + 740 9 Foundation 0x0000000191e38a40 <redacted> + 272 10 libdispatch.dylib 0x000000010915f840 _dispatch_call_block_and_release + 24 11 libdispatch.dylib 0x0000000109160de4 _dispatch_client_callout + 16 12 libdispatch.dylib 0x00000001091641e0 _dispatch_continuation_pop + 528 13 libdispatch.dylib 0x0000000109163620 _dispatch_async_redirect_invoke + 632 14 libdispatch.dylib 0x00000001091721f8 _dispatch_root_queue_drain + 376 15 libdispatch.dylib 0x0000000109172be4 _dispatch_worker_thread2 + 156 16 libsystem_pthread.dylib 0x0000000190fc5190 _pthread_wqthread + 472 17 libsystem_pthread.dylib 0x0000000190fc7d00 start_wqthread + 4
Will this change in planned, future releases?
Answer
DE426209 - We are planning to fix this issue in a future release
Question #9.Use of Swizzling to gather analytics data (high risk of undefined behavior/crashes):
2019-06-18 13:28:36.168112+0200 Documents2[10335:6118692] [INFO] [CA MAA] CAMAA iOS SDK Build Version = 17.3.2 Sep 5, 2018 2019-06-18 13:28:36.168490+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] Swizzling WKWebView 2019-06-18 13:28:36.168670+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] WKWebview methods are swizzled 2019-06-18 13:28:36.168801+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] Swizzling UIActivityIndicatorView 2019-06-18 13:28:36.168902+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] Swizzling UIApplication 2019-06-18 13:28:36.174919+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] Swizzling UIWebView 2019-06-18 13:28:36.175080+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] Swizzling WCSession 2019-06-18 13:28:36.175310+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] ### CA MAA SDK enabled - 1
2019-06-18 13:30:55.222133+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] Swizzled_ViewDidDisAppear 2019-06-18 13:30:55.223096+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] swizzled_viewDidDisappear = ADNavigationController == 2019-06-18 13:30:55.223313+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] current time: 1560857455223, last update time: 0 2019-06-18 13:30:55.223579+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] Swizzled_ViewDidDisAppear 2019-06-18 13:30:55.223738+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] swizzled_viewDidDisappear = Documents2.SourcesTableViewController == 2019-06-18 13:30:55.225119+0200 Documents2[10335:6118692] [VERBOSE] [CA MAA] current time: 1560857455225, last update time: 0
Will this change in planned, future releases?
Answer:
To collect the analytics of controls we are enabling swizzling for those. Please check the CAMDOReporter.h file for this interception techniques.
"You can override AXA SDK behavior to disable the Interceptors, need to place in App's Info.plist as below
Key : "AXADisabledInterceptors"; Array : NSURLConnection ,NSURLSession ,UIActivityIndicatorView ,UIApplication ,UIWebView , WKWebView , Gestures , Touch ;"
Question #10.Is there an API for submitting metrics with timers?
Answer:
No
Question #11.Is there an API for logs (to integrate with custom logger)?
We want to forward the logs from CA APM to our own logging infrastructure, we propose using a closure/block (in CAMDOReporter):
/// Logging has to be configured for privacy concerns.
/// All logs from the CA APM SDK are forwarded to this closure
public static var log: (String -> Void)?
Answer :
As described in the API specification the iOS SDK should have the capability to forward logs as Strings, so they can be integrated with the app’s existing logging infrastructure.
Question #12.API for Text Metrics is unclear, what characters can be used as keys? (dots are apparently not allowed)
The API takes a key/value pair with metadata. How are values and metadata visualized on the web frontend?
Empty/nil values are not accepted, this behavior is not documented, why does the API behave this way?
Answer:
https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-enterprise-software/it-operations-management/app-experience-analytics/17-3/using/using-apis/ios-custom-apis.html#concept.dita_28b4442624ac31bc16205183f72a89dc105a25c5_CustomEventsMetricsandTransactions
You can check name and value of Metrics in AXA/Kibana.
In AXA - If we select Custom Metrics from AXA dashboard then you can see metric event as well as metadata in event details
In Kibana - In Discover tab add the filter as custom.custom_field_name exists then you can see
Question #13.How can the SDK be configured in code without the Plist?
Answer :
Yes you can intigrate _camdo.plist file to application plist or configDetails (CA_MAA_SETTINGS). Please refer to this doc — https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-enterprise-software/it-operations-management/app-experience-analytics/17-3/configuring/collect-data-from-ios-applications.html#concept.dita_a3b99786afd6e47be9cc7d8264577cff7ec609dc_Step2IntegrateYourApplicationwithSDK
Question #14.(void) initializeSDKWithOptions:(SDKOptions) options configDetails:(NSDictionary *)configDetails completionHandler:(void(^)(BOOL completed, NSError *error)) completionBlock; configDetails is not documented.
Can you provide some documentation for this?
Answer:
Config details are nothing but CA_MAA_SETTINGS dictionary, by using these configDetails we can configured the SDK in code without the plist file. You can get complete details about it in below page:
https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-enterprise-software/it-operations-management/app-experience-analytics/17-3/using/using-apis/ios-custom-apis.html
For configdetails you can refer to: https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-enterprise-software/it-operations-management/app-experience-analytics/17-3/configuring/collect-data-from-ios-applications.html#concept.dita_a3b99786afd6e47be9cc7d8264577cff7ec609dc_Step2IntegrateYourApplicationwithSDK
Question #15. Some Network requests (using NSURLSession) take a very long time (sometimes more than 30 seconds) until a response is received.
Some Network requests will never return a response (see Question #13). When Network Swizzling is deactivated the requests work as intended.
Is this fixed in the current release of the SDK?
Answer :
DE426209 - Yes fixed in APM 11.1+ and SaaS
Question #16. We are using the SDK in several iOS Extensions (Action Extensions).
The Plist is read, and the SDK is configured, but when we try to upload the analytics data we get the following undocumented error:
Received Error Error Domain=CAMDOErrorDomain Code=2112 "The policy is not yet applied, the upload will not happen at this time." UserInfo={NSLocalizedDescription=The policy is not yet applied, the upload will not happen at this time.}
Answer:
DE424880 - Extensions are not supported in SDK
We are starting our sdk policy and sending AXA metrics from UIApplication states but 'sharedApplication' is unavailable in App Extension. So If Customer wants AXA support in iOS extensions then we need to add extra conditional check through out the SDK code
Question #17. When using the SDK with Network Swizzling activated, WKWebView does not load any websites, delegate methods are never called.
Is this fixed in the current release of the SDK?
Answer:
DE426209 - Yes fixed in APM 11.1+ and SaaS
Question #18. When a system crash appears, call trace and the reason of the crash is not shown because of swizzling.
Answer:
DE426209 - Yes in debug console it won’t come, but we see those details in AXA dashboard if we upload DYSM file in AXA. Click on any crash from “APP Crashes” then you can see complete details about it in thread view, full view and you can find the Symbolicated doc. Please see attached image and Symbolicated doc for your reference.