Xamarin

Xamarin

Deliver native Android and iOS apps with a single shared .NET code base.

OpenBack Xamarin Plugin

The OpenBack Xamarin plugin makes it possible for your Xamarin application to interact with the OpenBack library. The plugin is available for iOS and Android.

info

A sample application is available on Github here.

Getting started

Install the OpenBack NuGet package in your Xamarin application:

Nuget

The package contains:

  • .NetStandard 2.0 shared API for Xamarin Forms
  • MonoAndroid 4.1 API implemention for Android and native Bindings
  • Xamarin.iOS 1.0 API implemention for iOS and native Bindings

Using Xamarin Forms

Make sure to select all the projects that will be using OpenBack:

Nuget

Setup and start OpenBack in the main application constructor.

namespace XamarinSampleApp
{
public partial class App : Application
{
public App()
{
InitializeComponent();
SetupOpenBack();
MainPage = new MainPage();
}
private void SetupOpenBack()
{
switch (Device.RuntimePlatform)
{
case Device.iOS:
OpenBack.Instance.AppCode = "YOUR_IOS_APPCODE";
break;
case Device.Android:
OpenBack.Instance.AppCode = "YOUR_ANDROID_APPCODE";
break;
}
OpenBack.Instance.Start();
}
}
}

Xamarin Forms OpenBack API

The OpenBack Xamarin plugin uses the OpenBackSdk and OpenBackSdk.Interfaces namespaces and OpenBack class.

using OpenBackSdk;
using OpenBackSdk.Interfaces; // For enums

Instance

public static OpenBack Instance { get; }

Returns the shared OpenBack instance to be used for API calls.

Example:

OpenBack openBack = OpenBack.Instance;

AppCode

string AppCode { get; set; }

Set your OpenBack App Code.

Example:

OpenBack.Instance.AppCode = "YOUR_APP_CODE";

CoppaCompliant

bool CoppaCompliant { get; set; }

If your application needs COPPA to be enabled, set the COPPA compliant status with this function. If COPPA is enabled, messages will not run unless compliant is set to true.

Example:

OpenBack.Instance.CoppaCompliant = true;

GdprForgetUser

bool GdprForgetUser { get; set; }

When your user requests that all the data should be erased, set this value to true. It will inform the OpenBack server to remove all logs for the current user. All future logs will be erased after processing. If you wish to be fully GDPR complient, you also need to enable GDPR in your application settings on the OpenBack Dashboard.

Example:

OpenBack.Instance.GdprForgetUser = true;

SdkVersion

string SdkVersion { get; }

Returns the current OpenBack SDK version.

Example:

string version = OpenBack.Instance.SdkVersion;

IsStarted

bool IsStarted { get; }

Returns true if the OpenBack engine is running.

Example:

bool started = OpenBack.Instance.IsStarted;s

Start

void Start();

Start the OpenBack engine. You need to have the app code set before calling Start()

Example:

OpenBack.Instance.AppCode = "YOUR_APP_CODE";
OpenBack.Instance.Start();

Stop

void Stop();

Stop the OpenBack engine.

Example:

OpenBack.Instance.Stop();

LogGoal

void LogGoal(string goal, uint step, double value);

At any point, you can log a goal that is associated with a message. Make sure to use the Goal code, not the Goal name.

Example:

OpenBack.Instance.LogGoal("test", 1, 12.3);

SetCustomTrigger

void SetCustomTrigger(CustomTrigger trigger, object value);

Set a custom trigger value. Value can be string, int or double. For the trigger index, use CustomTrigger1 to CustomTrigger10 defined in OpenBackSdk.Interfaces.

Example:

OpenBack.Instance.SetCustomTrigger(CustomTrigger.CustomTrigger1, "Test");
OpenBack.Instance.SetCustomTrigger(CustomTrigger.CustomTrigger3, 1.13);

UserInfo

Dictionary<string, string> UserInfo { set; }

The application can pass some extra user information using a simple dictionary object by setting the following fields:

NameTypeDescription
addressLine1stringAddress line 1
addressLine2stringAddress line 2
advertisingIdstringAdvertising identifier set by the application
agestringAge
citystringCity
countrystringCountry
countryCodestringISO-2 country code
dateOfBirthstringDate of birth YYYY-MM-DD
emailAddressstringEmail Address
firstNamestringFirst name
genderstringGender
optInUpdatesstringOpting in for message updates "true"/"false"
phoneNumberstringPhone Number (international format)
postCodestringPostal code
professionstringProfession
statestringState
surnamestringSurname
titlestringTitle
identity1stringCustom user identifier 1
identity2stringCustom user identifier 2
identity3stringCustom user identifier 3
identity4stringCustom user identifier 4
identity5stringCustom user identifier 5
Note on Custom User Identifiers

Identity is for use with the OpenBack API. If you are not an OpenBack API client, don't use them. Identities are bound to the current OpenBack user, so changing any one of them will reset user and campaign usage. A usage example: when your application has users that can login and logout, you can set one of the Identity to a token used in your system to identify that user. Later on, using the OpenBack API, you can fetch details from that user.

Example:

OpenBack.Instance.UserInfo = new System.Collections.Generic.Dictionary<string, string>
{
{ "firstName", "John" },
{ "lastName", "Dow" }
};

Using Xamarin Native

If you prefer to use the native bindings, use the same NuGet package.

Android Native Bindings

The namespace for the Android bindings is OpenBackSdk.Android.Bindings and the API is the same as the Android native API.

It is recommended to start OpenBack in the application OnCreate like this:

[Application]
public class MainApp : Application
{
public MainApp(IntPtr javaReference, Android.Runtime.JniHandleOwnership transfer) : base(javaReference, transfer)
{
}
public override void OnCreate()
{
base.OnCreate();
// Setup OpenBack
OpenBack openBack = OpenBack.Instance;
openBack.AppCode = "YOUR_APP_CODE";
openBack.Start();
}
}

You can customize the notification icon and sound using the openback.json file that you put in the Assets folder.

iOS Native Bindings

The API is similar as the iOS native API - you can find the original API commented above the exported methods and fields.

ApiDefnition.cs

using System;
using ObjCRuntime;
using Foundation;
namespace OpenBackSdk.iOS.Bindings
{
// @interface OpenBack : NSObject
[BaseType(typeof(NSObject))]
interface OpenBack
{
// +(BOOL)setupWithConfig:(NSDictionary * _Nullable)config error:(NSError * _Nullable * _Nullable)error;
[Static]
[Export("setupWithConfig:error:")]
bool SetupWithConfig([NullAllowed] NSDictionary config, [NullAllowed] out NSError error);
// +(BOOL)setUserInfo:(NSDictionary * _Nullable)userInfo error:(NSError * _Nullable * _Nullable)error;
[Static]
[Export("setUserInfo:error:")]
bool SetUserInfo([NullAllowed] NSDictionary userInfo, [NullAllowed] out NSError error);
// +(BOOL)setValue:(id _Nullable)value forCustomTrigger:(OBKCustomTriggerType)trigger error:(NSError * _Nullable * _Nullable)error;
[Static]
[Export("setValue:forCustomTrigger:error:")]
bool SetValue([NullAllowed] NSObject value, OBKCustomTriggerType trigger, [NullAllowed] out NSError error);
// +(BOOL)start:(NSError * _Nullable * _Nullable)error;
[Static]
[Export("start:")]
bool Start([NullAllowed] out NSError error);
// +(BOOL)stop:(NSError * _Nullable * _Nullable)error;
[Static]
[Export("stop:")]
bool Stop([NullAllowed] out NSError error);
// +(BOOL)isStarted;
[Static]
[Export("isStarted")]
bool IsStarted { get; }
// +(BOOL)gdprForgetUser:(BOOL)forgetUser error:(NSError * _Nullable * _Nullable)error;
[Static]
[Export("gdprForgetUser:error:")]
bool GdprForgetUser(bool forgetUser, [NullAllowed] out NSError error);
// +(void)coppaCompliant:(BOOL)compliant;
[Static]
[Export("coppaCompliant:")]
void CoppaCompliant(bool compliant);
// +(BOOL)logGoal:(NSString * _Nonnull)goal step:(NSUInteger)step value:(double)value error:(NSError * _Nullable * _Nullable)error;
[Static]
[Export("logGoal:step:value:error:")]
bool LogGoal(string goal, nuint step, double value, [NullAllowed] out NSError error);
// +(BOOL)resetAll:(NSError * _Nullable * _Nullable)error;
[Static]
[Export("resetAll:")]
bool ResetAll([NullAllowed] out NSError error);
// +(OpenBackAppInbox * _Nullable)appInbox;
[Static]
[NullAllowed, Export("appInbox")]
OpenBackAppInbox AppInbox { get; }
}
[Static]
partial interface Constants
{
// extern NSString *const _Nonnull kOBKFrameworkVersion;
[Field("kOBKFrameworkVersion", "__Internal")]
NSString kOBKFrameworkVersion { get; }
// extern NSString *const _Nonnull kOBKConfigAppCode;
[Field("kOBKConfigAppCode", "__Internal")]
NSString kOBKConfigAppCode { get; }
// extern NSString *const _Nonnull kOBKConfigAdvertisingId;
[Field("kOBKConfigAdvertisingId", "__Internal")]
NSString kOBKConfigAdvertisingId { get; }
// extern NSString *const _Nonnull kOBKConfigUseDevServer;
[Field("kOBKConfigUseDevServer", "__Internal")]
NSString kOBKConfigUseDevServer { get; }
// extern NSString *const _Nonnull kOBKConfigUserInfo;
[Field("kOBKConfigUserInfo", "__Internal")]
NSString kOBKConfigUserInfo { get; }
// extern NSString *const _Nonnull kOBKConfigLogLevel;
[Field("kOBKConfigLogLevel", "__Internal")]
NSString kOBKConfigLogLevel { get; }
// extern NSString *const _Nonnull kOBKConfigNotificationSound;
[Field("kOBKConfigNotificationSound", "__Internal")]
NSString kOBKConfigNotificationSound { get; }
// extern NSString *const _Nonnull kOBKConfigEnableAlertNotifications;
[Field("kOBKConfigEnableAlertNotifications", "__Internal")]
NSString kOBKConfigEnableAlertNotifications { get; }
// extern NSString *const _Nonnull kOBKConfigEnableInAppNotifications;
[Field("kOBKConfigEnableInAppNotifications", "__Internal")]
NSString kOBKConfigEnableInAppNotifications { get; }
// extern NSString *const _Nonnull kOBKConfigEnablePopupNotifications;
[Field("kOBKConfigEnablePopupNotifications", "__Internal")]
NSString kOBKConfigEnablePopupNotifications { get; }
// extern NSString *const _Nonnull kOBKConfigEnableRemoteNotifications;
[Field("kOBKConfigEnableRemoteNotifications", "__Internal")]
NSString kOBKConfigEnableRemoteNotifications { get; }
// extern NSString *const _Nonnull kOBKConfigEnableProximity;
[Field("kOBKConfigEnableProximity", "__Internal")]
NSString kOBKConfigEnableProximity { get; }
// extern NSString *const _Nonnull kOBKConfigEnableMotionCoprocessor;
[Field("kOBKConfigEnableMotionCoprocessor", "__Internal")]
NSString kOBKConfigEnableMotionCoprocessor { get; }
// extern NSString *const _Nonnull kOBKConfigEnableMicrophone;
[Field("kOBKConfigEnableMicrophone", "__Internal")]
NSString kOBKConfigEnableMicrophone { get; }
// extern NSString *const _Nonnull kOBKConfigEnableLocation;
[Field("kOBKConfigEnableLocation", "__Internal")]
NSString kOBKConfigEnableLocation { get; }
// extern NSString *const _Nonnull kOBKConfigEnableLocationWhenInUse;
[Field("kOBKConfigEnableLocationWhenInUse", "__Internal")]
NSString kOBKConfigEnableLocationWhenInUse { get; }
// extern NSString *const _Nonnull kOBKConfigRequestAlertNotificationsAuthorization;
[Field("kOBKConfigRequestAlertNotificationsAuthorization", "__Internal")]
NSString kOBKConfigRequestAlertNotificationsAuthorization { get; }
// extern NSString *const _Nonnull kOBKConfigRequestMotionCoprocessorAuthorization;
[Field("kOBKConfigRequestMotionCoprocessorAuthorization", "__Internal")]
NSString kOBKConfigRequestMotionCoprocessorAuthorization { get; }
// extern NSString *const _Nonnull kOBKConfigRequestMicrophoneAuthorization;
[Field("kOBKConfigRequestMicrophoneAuthorization", "__Internal")]
NSString kOBKConfigRequestMicrophoneAuthorization { get; }
// extern NSString *const _Nonnull kOBKConfigRequestLocationAlwaysAuthorization;
[Field("kOBKConfigRequestLocationAlwaysAuthorization", "__Internal")]
NSString kOBKConfigRequestLocationAlwaysAuthorization { get; }
// extern NSString *const _Nonnull kOBKConfigRequestLocationWhenInUseAuthorization;
[Field("kOBKConfigRequestLocationWhenInUseAuthorization", "__Internal")]
NSString kOBKConfigRequestLocationWhenInUseAuthorization { get; }
// extern NSString *const _Nonnull kOBKConfigMinimumBackgroundFetchInterval;
[Field("kOBKConfigMinimumBackgroundFetchInterval", "__Internal")]
NSString kOBKConfigMinimumBackgroundFetchInterval { get; }
// extern NSString *const _Nonnull kOBKUserInfoAddressLine1;
[Field("kOBKUserInfoAddressLine1", "__Internal")]
NSString kOBKUserInfoAddressLine1 { get; }
// extern NSString *const _Nonnull kOBKUserInfoAddressLine2;
[Field("kOBKUserInfoAddressLine2", "__Internal")]
NSString kOBKUserInfoAddressLine2 { get; }
// extern NSString *const _Nonnull kOBKUserInfoAdvertisingId;
[Field("kOBKUserInfoAdvertisingId", "__Internal")]
NSString kOBKUserInfoAdvertisingId { get; }
// extern NSString *const _Nonnull kOBKUserInfoAge;
[Field("kOBKUserInfoAge", "__Internal")]
NSString kOBKUserInfoAge { get; }
// extern NSString *const _Nonnull kOBKUserInfoCity;
[Field("kOBKUserInfoCity", "__Internal")]
NSString kOBKUserInfoCity { get; }
// extern NSString *const _Nonnull kOBKUserInfoCountry;
[Field("kOBKUserInfoCountry", "__Internal")]
NSString kOBKUserInfoCountry { get; }
// extern NSString *const _Nonnull kOBKUserInfoCountryCode;
[Field("kOBKUserInfoCountryCode", "__Internal")]
NSString kOBKUserInfoCountryCode { get; }
// extern NSString *const _Nonnull kOBKUserInfoDateOfBirth;
[Field("kOBKUserInfoDateOfBirth", "__Internal")]
NSString kOBKUserInfoDateOfBirth { get; }
// extern NSString *const _Nonnull kOBKUserInfoEmailAddress;
[Field("kOBKUserInfoEmailAddress", "__Internal")]
NSString kOBKUserInfoEmailAddress { get; }
// extern NSString *const _Nonnull kOBKUserInfoFirstName;
[Field("kOBKUserInfoFirstName", "__Internal")]
NSString kOBKUserInfoFirstName { get; }
// extern NSString *const _Nonnull kOBKUserInfoGender;
[Field("kOBKUserInfoGender", "__Internal")]
NSString kOBKUserInfoGender { get; }
// extern NSString *const _Nonnull kOBKUserInfoPhoneNumber;
[Field("kOBKUserInfoPhoneNumber", "__Internal")]
NSString kOBKUserInfoPhoneNumber { get; }
// extern NSString *const _Nonnull kOBKUserInfoOptInUpdates;
[Field("kOBKUserInfoOptInUpdates", "__Internal")]
NSString kOBKUserInfoOptInUpdates { get; }
// extern NSString *const _Nonnull kOBKUserInfoPostCode;
[Field("kOBKUserInfoPostCode", "__Internal")]
NSString kOBKUserInfoPostCode { get; }
// extern NSString *const _Nonnull kOBKUserInfoProfession;
[Field("kOBKUserInfoProfession", "__Internal")]
NSString kOBKUserInfoProfession { get; }
// extern NSString *const _Nonnull kOBKUserInfoState;
[Field("kOBKUserInfoState", "__Internal")]
NSString kOBKUserInfoState { get; }
// extern NSString *const _Nonnull kOBKUserInfoSurname;
[Field("kOBKUserInfoSurname", "__Internal")]
NSString kOBKUserInfoSurname { get; }
// extern NSString *const _Nonnull kOBKUserInfoTitle;
[Field("kOBKUserInfoTitle", "__Internal")]
NSString kOBKUserInfoTitle { get; }
// extern NSString *const _Nonnull kOBKUserInfoIdentity1;
[Field("kOBKUserInfoIdentity1", "__Internal")]
NSString kOBKUserInfoIdentity1 { get; }
// extern NSString *const _Nonnull kOBKUserInfoIdentity2;
[Field("kOBKUserInfoIdentity2", "__Internal")]
NSString kOBKUserInfoIdentity2 { get; }
// extern NSString *const _Nonnull kOBKUserInfoIdentity3;
[Field("kOBKUserInfoIdentity3", "__Internal")]
NSString kOBKUserInfoIdentity3 { get; }
// extern NSString *const _Nonnull kOBKUserInfoIdentity4;
[Field("kOBKUserInfoIdentity4", "__Internal")]
NSString kOBKUserInfoIdentity4 { get; }
// extern NSString *const _Nonnull kOBKUserInfoIdentity5;
[Field("kOBKUserInfoIdentity5", "__Internal")]
NSString kOBKUserInfoIdentity5 { get; }
// extern NSString *const _Nonnull kOBKErrorDomain;
[Field("kOBKErrorDomain", "__Internal")]
NSString kOBKErrorDomain { get; }
// extern NSString *const _Nonnull kOBKAppInboxMessageNotification;
[Field("kOBKAppInboxMessageNotification", "__Internal")]
NSString kOBKAppInboxMessageNotification { get; }
// extern NSString *const _Nonnull kOBKAppInboxMessageRead;
[Field("kOBKAppInboxMessageRead", "__Internal")]
NSString kOBKAppInboxMessageRead { get; }
// extern NSString *const _Nonnull kOBKAppInboxMessageAdded;
[Field("kOBKAppInboxMessageAdded", "__Internal")]
NSString kOBKAppInboxMessageAdded { get; }
// extern NSString *const _Nonnull kOBKAppInboxMessageExpired;
[Field("kOBKAppInboxMessageExpired", "__Internal")]
NSString kOBKAppInboxMessageExpired { get; }
// extern NSString *const _Nonnull kOBKAppInboxMessageUpdated;
[Field("kOBKAppInboxMessageUpdated", "__Internal")]
NSString kOBKAppInboxMessageUpdated { get; }
}
// @interface OpenBackAppInboxMessage : NSObject
[BaseType(typeof(NSObject))]
interface OpenBackAppInboxMessage : INativeObject
{
// @property (readonly, getter = isRead, nonatomic) BOOL read;
[Export("read")]
bool Read { [Bind("isRead")] get; }
// @property (readonly, getter = isActionable, nonatomic) BOOL actionable;
[Export("actionable")]
bool Actionable { [Bind("isActionable")] get; }
// @property (readonly, nonatomic) uint64_t deliveryTime;
[Export("deliveryTime")]
ulong DeliveryTime { get; }
// @property (readonly, copy, nonatomic) NSString * _Nonnull title;
[Export("title")]
string Title { get; }
// @property (readonly, copy, nonatomic) NSString * _Nonnull content;
[Export("content")]
string Content { get; }
// @property (readonly, copy, nonatomic) NSString * _Nonnull payload;
[Export("payload")]
string Payload { get; }
}
// @protocol OpenBackAppInboxDelegate <NSObject>
[Protocol, Model(AutoGeneratedName = true)]
[BaseType(typeof(NSObject))]
interface OpenBackAppInboxDelegate
{
// @optional -(void)appInboxMessageAdded:(OpenBackAppInboxMessage * _Nonnull)inboxMessage;
[Export("appInboxMessageAdded:")]
void AppInboxMessageAdded(OpenBackAppInboxMessage inboxMessage);
// @optional -(void)appInboxMessageRead:(OpenBackAppInboxMessage * _Nonnull)inboxMessage;
[Export("appInboxMessageRead:")]
void AppInboxMessageRead(OpenBackAppInboxMessage inboxMessage);
// @optional -(void)appInboxMessageExpired:(OpenBackAppInboxMessage * _Nonnull)inboxMessage;
[Export("appInboxMessageExpired:")]
void AppInboxMessageExpired(OpenBackAppInboxMessage inboxMessage);
// @optional -(void)appInboxMessageUpdated:(OpenBackAppInboxMessage * _Nonnull)inboxMessage;
[Export("appInboxMessageUpdated:")]
void AppInboxMessageUpdated(OpenBackAppInboxMessage inboxMessage);
}
// @interface OpenBackAppInbox : NSObject
[BaseType(typeof(NSObject))]
interface OpenBackAppInbox
{
[Wrap("WeakDelegate")]
[NullAllowed]
OpenBackAppInboxDelegate Delegate { get; set; }
// @property (weak) id<OpenBackAppInboxDelegate> _Nullable delegate;
[NullAllowed, Export("delegate", ArgumentSemantic.Weak)]
NSObject WeakDelegate { get; set; }
// -(void)getMessageCount:(void (^ _Nonnull)(NSUInteger))completion;
[Export("getMessageCount:")]
void GetMessageCount(Action<nuint> completion);
// -(void)getUnreadMessageCount:(void (^ _Nonnull)(NSUInteger))completion;
[Export("getUnreadMessageCount:")]
void GetUnreadMessageCount(Action<nuint> completion);
// -(void)getAllMessages:(void (^ _Nonnull)(NSArray<OpenBackAppInboxMessage *> * _Nonnull))completion;
[Export("getAllMessages:")]
void GetAllMessages(Action<NSArray<OpenBackAppInboxMessage>> completion);
// -(void)getReadMessages:(void (^ _Nonnull)(NSArray<OpenBackAppInboxMessage *> * _Nonnull))completion;
[Export("getReadMessages:")]
void GetReadMessages(Action<NSArray<OpenBackAppInboxMessage>> completion);
// -(void)getUnreadMessages:(void (^ _Nonnull)(NSArray<OpenBackAppInboxMessage *> * _Nonnull))completion;
[Export("getUnreadMessages:")]
void GetUnreadMessages(Action<NSArray<OpenBackAppInboxMessage>> completion);
// -(void)markMessageAsRead:(OpenBackAppInboxMessage * _Nonnull)inboxMessage completion:(void (^ _Nullable)(NSError * _Nullable))completion;
[Export("markMessageAsRead:completion:")]
void MarkMessageAsRead(OpenBackAppInboxMessage inboxMessage, [NullAllowed] Action<NSError> completion);
// -(void)markMessagesAsRead:(NSArray<OpenBackAppInboxMessage *> * _Nonnull)inboxMessages completion:(void (^ _Nullable)(NSError * _Nullable))completion;
[Export("markMessagesAsRead:completion:")]
void MarkMessagesAsRead(OpenBackAppInboxMessage[] inboxMessages, [NullAllowed] Action<NSError> completion);
// -(void)markAllMessagesAsRead:(void (^ _Nullable)(NSError * _Nullable))completion;
[Export("markAllMessagesAsRead:")]
void MarkAllMessagesAsRead([NullAllowed] Action<NSError> completion);
// -(void)removeMessage:(OpenBackAppInboxMessage * _Nonnull)inboxMessage completion:(void (^ _Nullable)(NSError * _Nullable))completion;
[Export("removeMessage:completion:")]
void RemoveMessage(OpenBackAppInboxMessage inboxMessage, [NullAllowed] Action<NSError> completion);
// -(void)removeMessages:(NSArray<OpenBackAppInboxMessage *> * _Nonnull)inboxMessages completion:(void (^ _Nullable)(NSError * _Nullable))completion;
[Export("removeMessages:completion:")]
void RemoveMessages(OpenBackAppInboxMessage[] inboxMessages, [NullAllowed] Action<NSError> completion);
// -(void)removeAllMessages:(void (^ _Nullable)(NSError * _Nullable))completion;
[Export("removeAllMessages:")]
void RemoveAllMessages([NullAllowed] Action<NSError> completion);
// -(void)executeMessage:(OpenBackAppInboxMessage * _Nonnull)inboxMessage completion:(void (^ _Nullable)(NSError * _Nullable))completion;
[Export("executeMessage:completion:")]
void ExecuteMessage(OpenBackAppInboxMessage inboxMessage, [NullAllowed] Action<NSError> completion);
}
}

Enums.cs

using System;
using Foundation;
using ObjCRuntime;
namespace OpenBackSdk.iOS.Bindings
{
[Native]
public enum OBKLogLevel : ulong
{
None = 0,
Error = 1,
Warning = 2,
Info = 3,
Debug = 4,
Verbose = 5
}
[Native]
public enum OBKCustomTriggerType : ulong
{
kOBKCustomTrigger1 = 0,
kOBKCustomTrigger2 = 1,
kOBKCustomTrigger3 = 2,
kOBKCustomTrigger4 = 3,
kOBKCustomTrigger5 = 4,
kOBKCustomTrigger6 = 5,
kOBKCustomTrigger7 = 6,
kOBKCustomTrigger8 = 7,
kOBKCustomTrigger9 = 8,
kOBKCustomTrigger10 = 9
}
[Native]
public enum OBKErrors : long
{
AlreadyStarted = 1,
AlreadyStopped = 2,
AlreadySetup = 3,
NotSetup = 4,
InvalidAppCode = 100,
InvalidConfiguration = 101,
InvalidEnvironment = 102,
UnkownCustomTrigger = 200,
InvalidCustomTrigger = 201,
UnkownCustomLog = 202,
InvalidCustomLog = 203,
InvalidUserInfo = 204,
InvalidGoalCode = 300,
FatalException = 999
}
}