Swift Module: Crash Reporter

Swift Module: Crash Reporter

by on ‎04-18-2018 10:57 AM - edited a week ago by (545 Views)

Purpose

Tealium Crash Reporter automatically tracks crashes in your app. Once the module is enabled and the accompanying frameworks are installed, a crash event is triggered if a crash occurs in your app.

Supported Platforms

  • iOS

Installation

There are three ways to add TealiumCrashReporteriOS.framework to your app.

CocoaPods

Framework will be auto-instantiated, so long as the pod is installed. Depends on TealiumCore and TealiumCrashReporteriOS pod. No additional import statements necessary.

  1. Use the following entry in your Podfile (see Swift CocoaPods Installation): pod tealium-swift/Crash
  2. Run pod install in your terminal window
    • This will automatically install the external TealiumCrashReporteriOS dependency, along with TealiumAppData, TealiumDeviceData, and Core modules.

Carthage

Framework will be auto-instantiated, so long as it is compiled into your app (included in "Embedded Binaries"). Depends on TealiumCore and TealiumCrashReporteriOS (external dependency).

  1. Follow the steps outlined in Swift Carthage Installation
  2. Run carthage update --platform iOS in your terminal window
    • this will produce
      • TealiumCore.framework + all standard Tealium frameworks
      • TealiumCrash.framework
      • TealiumCrashReporteriOS.framework
    • All these frameworks should be included in your app
  3. Be sure to follow the instructions listed in the Carthage Getting Started documentation to add the relevant Build Phases scripts, to ensure you don't run into any issues when submitting your app to the App Store

Manual

  1. Follow the steps outlined in Swift Manual Installation
  2. Download the TealiumCrashReporteriOS.framework from our Github repo
  3. Build the Tealium and TealiumCrash scheme
  4. Drag and drop the TealiumCore.framework, TealiumCrash.framework, TealiumAppData.framework, TealiumDeviceData.framework and TealiumCrashReporteriOS.framework to the Embedded Binaries section within Xcode

External Dependencies

TealiumCrashReporteriOS

Recommended Usage

Usage of this framework is recommended to get vital information regarding your app's crashes.

Included Variables

The following variables will be transmitted with each tracking call while the module is enabled:

Variable Name Description Example Value
crash_uuid Unique identifier for this specific crash CC2DA0E9-E544-429A-AC5E-A268FC62F02A
device_memory_usage Current memory used by the app on the device at the time of the crash 143.57MB
device_memory_available Free memory on device at the time of the crash 1068.88MB
device_os_build Current OS build number 15E217
crash_process_id PID of the app at time of crash 84351
crash_process_path Path the app was running under /DemoApp.app/DemoApp
crash_parent_process Parent process that launched the app launchd_sim
crash_parent_process_id Parent process PID 83183
crash_name Friendly name of the crash, if available Crash Name
crash_cause Cause of the crash Crash Reason
crash_signal_code Signal code causing the crash #0
crash_signal_name Signal name causing the crash SIGABRT
crash_signal_address Signal address of the crash 4572945982
crash_libraries List of loaded libraries at the time of the crash [{"baseAddress": "0xa3e0000", "codeType": { "arch": 64, "typeEncoding": "Mach"}, "imageName": "/Applications/Xcode9.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/dyld_sim", "imageSize": 212992, "imageUuid": "4015e9b70bde"}]
crash_threads Returns all active threads at the time of the crash {"crashed": 1,"registers": {"cs": "0x07"},"stack": {"instructionPointer": 4572945982,"symbolInfo": {"symbolName": "","symbolStartAddr": 0},"threadId": ""}}

Initialization

Once TealiumCrashReporteriOS.framework is added to your project, you don't have to do anything else. As long as the crash module is enabled and the Tealium SDK is initialized, when a crash is exhibited in your app, crash data will automatically be part of the tracking call.

Public API

// import area
// For Cocoapods
import TealiumSwift

// For Carthage or Manual installation
import TealiumCrash

// Invoke a crash
TealiumCrashReporter.invokeCrash(name: "TEST_CRASH_NAME", reason: "TEST_CRASH_REASON")

Future Improvements

No planned changes

Change Log

1.6.5

  • Module reinstated. Xcode 10 issues resolved.

1.6.2

  • Temporarily removed module to resolve issues with Xcode 10

1.5.0

  • Initial release