Configuring Appdome Security Alerts with DEV-Events for Native Apps

Introduction

This Knowledge Base article reviews in detail how users can configure security alerts for native apps they Build on Appdome.

Appdome Security Alerts, DEV-Events™,  is part of the Appdome Mobile Security Suite.

We hope you find it useful and enjoy using Appdome!

Prerequisites

Before enabling DEV-Eventsfollow these steps below for iOS and Android apps to handle the incoming security events in your application:

You are welcome to view the source code of our sample app –BrowserAndroidWithDevEvents

Download the code –  Native Code Android

Add the following lines to your app which follow and receive Appdome Security Events: 

private final static String TAG = "Appdome DevEvent";
private final static String BLOCKED_KEYBOARD = "BlockedKeyboardEvent";
private final static String BLOCKED_CLIPBOARD = "BlockedClipboardEvent";
private final static String ROOTED_DEVICE = "RootedDevice";
private final static String UNKNOWN_SOURCES = "UnknownSourcesEnabled";
private final static String DEVELOPER_OPTIONS = "DeveloperOptionsEnabled";
private final static String EMULATOR = "EmulatorFound";
private final static String SSL_VALIDATION_FAILED = "SslCertificateValidationFailed";
private final static String SSL_CERT_PINNING_FAILED = "SslCertificatePinningFailed";
private final static String ACCCES_OUTSIDE_WHITELIST = "UrlWhitelistFailed";
private final static String SSL_INCOMPATIBLE_CIPHER = "SslIncompatibleCipher";
private final static String SSL_INCOMPATIBLE_TLS = "SslIncompatibleVersion";
private final static String SSL_INVALID_CA_CHAIN = "SslInvalidCertificateChain";
private final static String SSL_INVALID_RSA_SIGNATURE = "SslInvalidMinRSASignature";
private final static String SSL_INVALID_ECC_SIGNATURE = "SslInvalidMinECCSignature";
private final static String SSL_INVALID_DIGEST = "SslInvalidMinDigest";
private final static String BLOCKED_MANUFACTURER = "BannedManufacturer";

private BroadcastReceiver receiver;
private Context context;
public void init(Context context) {
this.context = context;
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
onEvent(intent);
}
};
context.registerReceiver(receiver, new IntentFilter(BLOCKED_KEYBOARD));
context.registerReceiver(receiver, new IntentFilter(BLOCKED_CLIPBOARD));
context.registerReceiver(receiver, new IntentFilter(ROOTED_DEVICE));
context.registerReceiver(receiver, new IntentFilter(UNKNOWN_SOURCES));
context.registerReceiver(receiver, new IntentFilter(DEVELOPER_OPTIONS));
context.registerReceiver(receiver, new IntentFilter(EMULATOR));
context.registerReceiver(receiver, new IntentFilter(SSL_VALIDATION_FAILED));
context.registerReceiver(receiver, new IntentFilter(SSL_CERT_PINNING_FAILED));
context.registerReceiver(receiver, new IntentFilter(ACCCES_OUTSIDE_WHITELIST));
context.registerReceiver(receiver, new IntentFilter(SSL_INCOMPATIBLE_CIPHER));
context.registerReceiver(receiver, new IntentFilter(SSL_INCOMPATIBLE_TLS));
context.registerReceiver(receiver, new IntentFilter(SSL_INVALID_CA_CHAIN));
context.registerReceiver(receiver, new IntentFilter(SSL_INVALID_RSA_SIGNATURE));
context.registerReceiver(receiver, new IntentFilter(SSL_INVALID_ECC_SIGNATURE));
context.registerReceiver(receiver, new IntentFilter(SSL_INVALID_DIGEST));
context.registerReceiver(receiver, new IntentFilter(BLOCKED_MANUFACTURER));
}
public void stop() {
context.unregisterReceiver(receiver);
}
private void onEvent(Intent intent) {
String action = intent.getAction();
String defaultMessage;
String internalError;
String deveventDetailedErrorMessage;
String host;
String certificateSHA1;
String certificateCN;
String incompatibleCipherId;
String incompatibleSslVersion;
String timeStamp;
String deviceID;
String deviceModel;
String osVersion;
String kernelInfo;
String deviceManufacturer;
String fusedAppToken;
String carrierPlmn;
String deviceBrand;
String deviceBoard;
String buildHost;
String buildUser;
String sdkVersion;
switch (action) {
case BLOCKED_KEYBOARD:
if(!intent.hasExtra("keyboard") || !intent.hasExtra("blocked") || !intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
String keyboardID = intent.getStringExtra("keyboard"); // java package of the keyboard
boolean keboardBlocked = intent.getStringExtra("blocked").contentEquals("True");
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case BLOCKED_CLIPBOARD:
if(!intent.hasExtra("action") || !intent.hasExtra("blocked") || !intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
String clipboardAction = intent.getStringExtra("action"); //copy, paste, cut, selectAll or unknown
boolean cliboardBlocked = intent.getStringExtra("blocked").contentEquals("True");
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case ROOTED_DEVICE:
if(!intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
internalError = intent.getStringExtra("internalError"); 
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case UNKNOWN_SOURCES:
if(!intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case DEVELOPER_OPTIONS:
if(!intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case EMULATOR:
if(!intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case SSL_VALIDATION_FAILED:
if(!intent.hasExtra("defaultMessage") || !intent.hasExtra("DeveventDetailedErrorMessage") || !intent.hasExtra("host") || !intent.hasExtra("certificateSHA1") || !intent.hasExtra("certificateCN") || !intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
deveventDetailedErrorMessage = intent.getStringExtra("DeveventDetailedErrorMessage"); // a detailed error message
host = intent.getStringExtra("host"); // the host on which the error occurred
certificateSHA1 = intent.getStringExtra("certificateSHA1"); // the certificate sha1 fingerprint
certificateCN = intent.getStringExtra("certificateCN"); // the certificate CN (common name)
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case SSL_CERT_PINNING_FAILED:
if(!intent.hasExtra("defaultMessage") || !intent.hasExtra("DeveventDetailedErrorMessage") || !intent.hasExtra("host") || !intent.hasExtra("certificateSHA1") || !intent.hasExtra("certificateCN") || !intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
deveventDetailedErrorMessage = intent.getStringExtra("DeveventDetailedErrorMessage"); // a detailed error message
host = intent.getStringExtra("host"); // the host on which the error occurred
certificateSHA1 = intent.getStringExtra("certificateSHA1"); // the certificate sha1 fingerprint
certificateCN = intent.getStringExtra("certificateCN"); // the certificate CN (common name)
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case ACCCES_OUTSIDE_WHITELIST:
if(!intent.hasExtra("defaultMessage") || !intent.hasExtra("timestamp") || !intent.hasExtra("host") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
timeStamp = intent.getStringExtra("timestamp");
host = intent.getStringExtra("host"); // the host on which the error occurred
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case SSL_INCOMPATIBLE_CIPHER:
if(!intent.hasExtra("defaultMessage") || !intent.hasExtra("host") || !intent.hasExtra("incompatibleCipherId") || !intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
host = intent.getStringExtra("host"); // the host on which the error occurred
incompatibleCipherId = intent.getStringExtra("incompatibleCipherId"); // the incompatible cipher id
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case SSL_INCOMPATIBLE_TLS:
if(!intent.hasExtra("defaultMessage") || !intent.hasExtra("host") || !intent.hasExtra("incompatibleSslVersion") || !intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
host = intent.getStringExtra("host"); // the host on which the error occurred
incompatibleSslVersion = intent.getStringExtra("incompatibleSslVersion"); // the incompatible SSL/TLS version
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case SSL_INVALID_CA_CHAIN:
if(!intent.hasExtra("defaultMessage") || !intent.hasExtra("DeveventDetailedErrorMessage") || !intent.hasExtra("host") || !intent.hasExtra("certificateSHA1") || !intent.hasExtra("certificateCN") || !intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
deveventDetailedErrorMessage = intent.getStringExtra("DeveventDetailedErrorMessage"); // a detailed error message
host = intent.getStringExtra("host"); // the host on which the error occurred
certificateSHA1 = intent.getStringExtra("certificateSHA1"); // the certificate sha1 fingerprint of the certificate causing the error
certificateCN = intent.getStringExtra("certificateCN"); // the certificate CN (common name)
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case SSL_INVALID_RSA_SIGNATURE:
if(!intent.hasExtra("defaultMessage") || !intent.hasExtra("DeveventDetailedErrorMessage") || !intent.hasExtra("host") || !intent.hasExtra("certificateSHA1") || !intent.hasExtra("certificateCN") || !intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
deveventDetailedErrorMessage = intent.getStringExtra("DeveventDetailedErrorMessage"); // a detailed error message
host = intent.getStringExtra("host"); // the host on which the error occurred
certificateSHA1 = intent.getStringExtra("certificateSHA1"); // the certificate sha1 fingerprint of the certificate causing the error
certificateCN = intent.getStringExtra("certificateCN"); // the certificate CN (common name)
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case SSL_INVALID_ECC_SIGNATURE:
if(!intent.hasExtra("defaultMessage") || !intent.hasExtra("DeveventDetailedErrorMessage") || !intent.hasExtra("host") || !intent.hasExtra("certificateSHA1") || !intent.hasExtra("certificateCN") || !intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
deveventDetailedErrorMessage = intent.getStringExtra("DeveventDetailedErrorMessage"); // a detailed error message
host = intent.getStringExtra("host"); // the host on which the error occurred
certificateSHA1 = intent.getStringExtra("certificateSHA1"); // the certificate sha1 fingerprint
certificateCN = intent.getStringExtra("certificateCN"); // the certificate CN (common name)
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case SSL_INVALID_DIGEST:
if(!intent.hasExtra("defaultMessage") || !intent.hasExtra("DeveventDetailedErrorMessage") || !intent.hasExtra("host") || !intent.hasExtra("certificateSHA1") || !intent.hasExtra("certificateCN") || !intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
deveventDetailedErrorMessage = intent.getStringExtra("DeveventDetailedErrorMessage"); // a detailed error message
host = intent.getStringExtra("host"); // the host on which the error occurred
certificateSHA1 = intent.getStringExtra("certificateSHA1"); // the certificate sha1 fingerprint
certificateCN = intent.getStringExtra("certificateCN"); // the certificate CN (common name)
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
case BLOCKED_MANUFACTURER:
if(!intent.hasExtra("timestamp") || !intent.hasExtra("deviceID") || !intent.hasExtra("deviceModel") || !intent.hasExtra("osVersion") || !intent.hasExtra("kernelInfo") || !intent.hasExtra("deviceManufacturer") || !intent.hasExtra("fusedAppToken") || !intent.hasExtra("carrierPlmn") || !intent.hasExtra("deviceBrand") || !intent.hasExtra("deviceBoard") || !intent.hasExtra("buildHost") || !intent.hasExtra("buildUser") || !intent.hasExtra("sdkVersion")){
Log.e(TAG, "illegal event recieved.");
return;
}
defaultMessage = intent.getStringExtra("defaultMessage"); // message specified during fusion
timeStamp = intent.getStringExtra("timestamp");
deviceID = intent.getStringExtra("deviceID");
deviceModel = intent.getStringExtra("deviceModel");
osVersion = intent.getStringExtra("osVersion");
kernelInfo = intent.getStringExtra("kernelInfo");
deviceManufacturer = intent.getStringExtra("deviceManufacturer");
fusedAppToken = intent.getStringExtra("fusedAppToken");
carrierPlmn = intent.getStringExtra("carrierPlmn");
deviceBrand= intent.getStringExtra("deviceBrand");
deviceBoard = intent.getStringExtra("deviceBoard");
buildHost = intent.getStringExtra("buildHost");
buildUser = intent.getStringExtra("buildUser");
sdkVersion = intent.getStringExtra("sdkVersion");
break;
default:
Log.e(TAG, "unknown event recieved " + action);
}
}

Download the code –  Native Code IOS

Add the following lines to your app which follow and receive Appdome Security Events: 

   [[NSNotificationCenter defaultCenter] addObserverForName: @"BlockedKeyboardEvent" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *blocked = [[note userInfo] objectForKey:@"blocked"]; // True/False
        NSString *keyboard = [[note userInfo] objectForKey:@"keyboard"]; // keyboard package
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"BlockedClipboardEvent" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *blocked = [[note userInfo] objectForKey:@"blocked"]; // True/false
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"JailbrokenDevice" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *internalError = [[note userInfo] objectForKey:@"internalError"]; // root detection cause
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"SslCertificateValidationFailed" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *deveventDetailedErrorMessage = [[note userInfo] objectForKey:@"DeveventDetailedErrorMessage"]; // detailed error message
        NSString *certificateSHA1 = [[note userInfo] objectForKey:@"certificateSHA1"]; // the certificate sha1 fingerprint
        NSString *certificateCN = [[note userInfo] objectForKey:@"certificateCN"]; // the certificate CN (common name)
        NSString *host = [[note userInfo] objectForKey:@"host"]; // the host on which the error occurred
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"SslServerCertificatePinningFailed" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *deveventDetailedErrorMessage = [[note userInfo] objectForKey:@"DeveventDetailedErrorMessage"]; // detailed error message
        NSString *certificateSHA1 = [[note userInfo] objectForKey:@"certificateSHA1"]; // the certificate sha1 fingerprint
        NSString *certificateCN = [[note userInfo] objectForKey:@"certificateCN"]; // the certificate CN (common name)
        NSString *host = [[note userInfo] objectForKey:@"host"]; // the host on which the error occurred
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"UrlWhitelistFailed" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *host = [[note userInfo] objectForKey:@"host"]; // the host on which the erro occurred
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"BlockedScreenCaptureEvent" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *context = [[note userInfo] objectForKey:@"context"]; // capturing event type
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"SslIncompatibleCipher" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *incompatibleCipherId = [[note userInfo] objectForKey:@"incompatibleCipherId"]; // the incompatible cipher id
        NSString *host = [[note userInfo] objectForKey:@"host"]; // the host on which the error occurred
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"SslIncompatibleVersion" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *incompatibleSslVersion = [[note userInfo] objectForKey:@"incompatibleSslVersion"]; // the incompatible SSL/TLS version
        NSString *host = [[note userInfo] objectForKey:@"host"]; // the host on which the error occurred
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"SslInvalidCertificateChain" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *deveventDetailedErrorMessage = [[note userInfo] objectForKey:@"DeveventDetailedErrorMessage"]; // detailed error message
        NSString *certificateSHA1 = [[note userInfo] objectForKey:@"certificateSHA1"]; // the certificate sha1 fingerprint
        NSString *certificateCN = [[note userInfo] objectForKey:@"certificateCN"]; // the certificate CN (common name)
        NSString *host = [[note userInfo] objectForKey:@"host"]; // the host on which the error occurred
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"SslInvalidMinRSASignature" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *deveventDetailedErrorMessage = [[note userInfo] objectForKey:@"DeveventDetailedErrorMessage"]; // detailed error message
        NSString *certificateSHA1 = [[note userInfo] objectForKey:@"certificateSHA1"]; // the certificate sha1 fingerprint
        NSString *certificateCN = [[note userInfo] objectForKey:@"certificateCN"]; // the certificate CN (common name)
        NSString *host = [[note userInfo] objectForKey:@"host"]; // the host on which the error occurred
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"SslInvalidMinECCSignature" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *deveventDetailedErrorMessage = [[note userInfo] objectForKey:@"DeveventDetailedErrorMessage"]; // detailed error message
        NSString *certificateSHA1 = [[note userInfo] objectForKey:@"certificateSHA1"]; // the certificate sha1 fingerprint
        NSString *certificateCN = [[note userInfo] objectForKey:@"certificateCN"]; // the certificate CN (common name)
        NSString *host = [[note userInfo] objectForKey:@"host"]; // the host on which the error occurred
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];
    [[NSNotificationCenter defaultCenter] addObserverForName: @"SslInvalidMinDigest" object:nil queue:nil usingBlock:^(NSNotification *note) {
        NSString *defaultMessage = [[note userInfo] objectForKey:@"defaultMessage"]; // message passed during fusion
        NSString *deveventDetailedErrorMessage = [[note userInfo] objectForKey:@"DeveventDetailedErrorMessage"]; // detailed error message
        NSString *certificateSHA1 = [[note userInfo] objectForKey:@"certificateSHA1"]; // the certificate sha1 fingerprint
        NSString *certificateCN = [[note userInfo] objectForKey:@"certificateCN"]; // the certificate CN (common name)
        NSString *host = [[note userInfo] objectForKey:@"host"]; // the host on which the error occurred
        NSString *timestamp = [[note userInfo] objectForKey:@"timestamp"]; // UNIX timestamp when event happened
        NSString *deviceID = [[note userInfo] objectForKey:@"deviceID"]; // unique mobile device identifier
        NSString *deviceModel = [[note userInfo] objectForKey:@"deviceModel"]; // mobile device model
        NSString *osVersion = [[note userInfo] objectForKey:@"osVersion"]; // The mobile device OS version
        NSString *kernelInfo = [[note userInfo] objectForKey:@"kernelInfo"]; // Kernel information and details
        NSString *deviceManufacturer = [[note userInfo] objectForKey:@"deviceManufacturer"]; // mobile device manufacturer
        NSString *fusedAppToken = [[note userInfo] objectForKey:@"fusedAppToken"]; // Built App Token
        NSString *carrierPlmn = [[note userInfo] objectForKey:@"carrierPlmn"]; // carrier identity number (PLMN code)

    }];

How to Add DEV-Events™ to Any Mobile App(s) on Appdome

Follow the step-by-step instructions in this knowledge base to add DEV-Events™ to your native mobile App.

That is it – Enjoy Appdome with DEV-Events™ in your app!

To zoom out on this topic, visit the Mobile App Security page on our website.

Thank you!

Thanks for visiting Appdome! Our mission is to make mobile integration easy. We hope we’re living up to the mission with your project. If you don’t already have an account, you can sign up for free.

Liron Dror

Have a question?

Ask an expert