Documentation Index
Fetch the complete documentation index at: https://moengage-crashes-in-debug-feedback.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Initializing MoEngage SDK
First, go to Build Settings of your App Target and ensure that DEBUG Preprocessor Macro is defined in Debug section as shown in the below image, if not present then add the same by entering DEBUG=1 in Debug section:
For Swift Project, In App Target Build Settings make sure -DDEBUG is added to Debug section in the Other Swift Flags as described in the image:
-
in to your MoEngage account, go to Settings in the left panel of the dashboard. Under General Settings, you will find your Workspace ID. Provide this Workspace ID along with the Datacenter while initializing the SDK with MoEngageSDKConfig instance . UseinitializeDefaultTestInstance(_:) and initializeDefaultLiveInstance(_:) methods as shown below.
import MoEngageSDK
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//Add your MoEngage Workspace ID and Data center.
let sdkConfig = MoEngageSDKConfig(appId: "YOUR WorkspaceID", dataCenter: DATA_CENTER);
// MoEngage SDK Initialization
// Separate initialization methods for Dev and Prod initializations
#if DEBUG
MoEngage.sharedInstance.initializeDefaultTestInstance(sdkConfig)
#else
MoEngage.sharedInstance.initializeDefaultLiveInstance(sdkConfig)
#endif
//Rest of the implementation of method
//-------
return true
}
-
In your MoEngage account, if your portfolio is configured with multiple projects, Provide the respective Project ID along with the Datacenter while initializing the SDK with MoEngageSDKConfig instance . Use initializeDefaultTestInstance(_:) and initializeDefaultLiveInstance(_:) methods as shown below:
let sdkConfig = MoEngageSDKConfig(appId: "YOUR WorkspaceID", dataCenter: DATA_CENTER)
sdkConfig.projectConfig = MoEngageProjectConfig(projectID: "YOUR ProjectID")
#if DEBUG
MoEngage.sharedInstance.initializeDefaultTestInstance(sdkConfig)
#else
MoEngage.sharedInstance.initializeDefaultLiveInstance(sdkConfig)
#endif
Validations during initializationThe MoEngage iOS SDK enforces the following checks while initializing. In DEBUG builds (SDK initialized with initializeDefaultTestInstance(_:) and the app running under Xcode), each of these throws a fatal exception and crashes the app. In Release and TestFlight builds, the invalid configuration or attribute is dropped silently and logged.
- Empty Workspace ID. Initializing
MoEngageSDKConfig with an empty appId is invalid.
- Portfolio attributes without
projectConfig. If you set any portfolio attribute without passing a non-empty projectID during SDK initialization, the SDK throws an exception, resulting in an application crash in DEBUG mode. If you are using portfolio attributes, you must provide the projectConfig.
- SDK version downgrade. Downgrading the MoEngage iOS SDK to a lower version than what the app was previously shipped with is not supported. The SDK detects the downgrade during initialization and crashes in
DEBUG builds.
- API calls before initialization. Calling MoEngage tracking APIs — for example, email click tracking, Live Activity, or analytics methods — before the SDK is initialized throws a fatal exception in
DEBUG builds. In Release and TestFlight builds, these calls are dropped silently. Initialize the SDK in application(_:didFinishLaunchingWithOptions:) before invoking any other MoEngage API.
Following details of the different data centers you need to set based on the dashboard hosts
| Data Center | Dashboard host |
|---|
| DataCenter.DATA_CENTER_1 | dashboard-01.moengage.com |
| DataCenter.DATA_CENTER_2 | dashboard-02.moengage.com |
| DataCenter.DATA_CENTER_3 | dashboard-03.moengage.com |
| DataCenter.DATA_CENTER_4 | dashboard-04.moengage.com |
| DataCenter.DATA_CENTER_5 | dashboard-05.moengage.com |
| DataCenter.DATA_CENTER_6 | dashboard-06.moengage.com |
For more information about the detailed list of possible configurations, refer to the API reference.
Notedata_center_06 is available from MoEngage-iOS-SDK version 9.17.3 onwards
ImportantMake sure to call the initialization method in applicationDidFinishLaunching(_:) method. In case if you are initializing the SDK at a later stage and not at launch then you will have to call all the notification related methods instead of just relying on AppDelegate Swizzling.
Test/Live Environment
As mentioned above while initializing the build, MoEngage SDK makes use of the DEBUG preprocessor macro to decide whether the build is meant for TEST/LIVE Environment. Therefore, you will have to take care of the same while generating the build and make sure that the Build Configuration of the App’s target is set as mentioned below:
- For Development Build: Build Configuration should be set to Debug (Data will be tracked in TEST Environment)
- For AdHoc Build/App Store Build: Build Configuration should be set to Release (Data will be tracked in LIVE Environment)
What if Build Configuration is not set correctly?If the build configuration is not set correctly following might happen:
- You will see the data from the development build in LIVE environment
- OR data from AdHoc/Production Build in TEST environment
- You will get Bad Device Token error while trying to send a push notification to the device
How to set Build Configuration?
Build Configuration on Running the app from Xcode:
Whenever you run the app directly from Xcode without archiving, make sure the build configuration of Run mode of the App Target in Edit Scheme is set to Debug(set by default settings). Doing this will make sure data is tracked in TEST Environment.
Build Configuration on Exporting the build:
While exporting the build make sure you set the correct Build Configuration. By default for Archive section in Edit Scheme the Build Configuration will be set to Release, but for a development build make sure its changed to Debug before exporting the build. To set the Build Configuration of the build in your Xcode project go to App Target > Edit Scheme > Archive > Build Configuration and set the configuration to Debug/Release(depending on the type of build). Refer to the image as described:
Switching Environment in Dashboard
In the MoEngage dashboard you can switch between test and live environment for your app.
TEST Environment is used for all the development and testing-related uses and LIVE environment is used for running all the campaigns for AppStore Builds for your app’s user base.