Here are a list of questions we commonly receive along with their answers.
If you don’t see your question here, or would like more clarification on one please reach out to use on Slack
or email us at email@example.com.
We swizzle network-related classes to capture network requests (NSURLSession, NSURLConnection), web-related classes to capture taps (UIWindow) and web-view-related classes to capture web-view activity (UIWebView, WKWebView).
Do you capture WebViews and, if so, to what extent?#
Yes, and each WebView, whether built by you or a vendor (e.g. ads, promos and registration) are displayed on the User Timeline.
Embrace captures the network URL, the duration, as well as simultaneous native events.
Anything taking place exclusively within the WebView is not captured.
I don’t want to capture query params for webviews. How can I turn that off?#
In SDK version 3.2.6 and higher, you can set the WEBVIEW_STRIP_QUERYPARAMS boolean field in the Embrace-Info.plist to true.
While embedding Embrace in a separate framework is not a use case we officially support, there is no fundamental reason that this cannot be made to work.
Make sure to put the Embrace-Info.plist in the main bundle. (Embrace takes the plist from the mainBundle by default).
Does the SDK have to be started on the main thread?#
The Embrace SDK should be started on the main thread to ensure that data is consistently captured. We do not test the SDK’s behavior when not started on the main thread.
Can I initialize Embrace outside of didFinishLaunchingWithOptions or on a background thread?#
You can, but we highly recommend against it. There are some complications that may occur:
Embrace may not receive all session outcomes, including crashes
Embrace will not track the abandonment, stalls and durations of startups correctly
Embrace may not track the foreground and background states effectively on app start
Embrace may not track Views correctly as it may miss the first view loaded
Yes. The Embrace ID is accessible from the SDK. See the API Docs
What do you use the keychain for? Can I delete what is stored there?#
We store a unique device identifier (the Embrace ID) that is a random value we generate the first time the app starts with the Embrace SDK enabled.
Storing it in the keychain allows us to keep the same device ID if the app is uninstalled and reinstalled.
During development you can delete this value, but it is not recommended that this be deleted in a production environment.
If you have Bitcode-enabled builds, the dSYMs generated during the build process will not be what is needed to symbolicate data generated by apps installed from the App Store. You will need to download dSYMs from Apple and upload them in our dashboard.
If you have not enabled dSYM generation for your target and build type, you will get a warning message in your build log.
DEBUG_INFORMATION_FORMAT set to 'dwarf'. Skipping upload.
Set to 'dwarf-with-dsym' to generate a dSYM for your application
To enable dSYMs generation in XCode:
Select the Project Navigator
Select the project file
Select the appropriate target (you may have multiple targets to modify)
Select Build Settings
Search for debug information format
Modify both the Debugand Release settings as needed to select DWARF with dSYM File. If dSYM generation is not enabled for debug builds, the Embrace dashboard will not show symbolicated crashes and log stack traces for sessions from these builds.