The Kongregate SDK wraps the Swrve SDK. In addition to analytics, Swrve includes features for managing push notifications, in-app messaging and running A/B tests. Details of these features may be found on Swrves Documentation Site. This page shows how to setup some of these features through the Kong SDK.
To enalbe Swrve you simply need to include Kongregate API settings for KONGREGATE_OPTION_SWRVE_APP_ID
and KONGREGATE_OPTION_SWRVE_APP_KEY
as specified in the initialization sections for each platform.
All automatic events will be fired to Swrve. Events may also be added to Swrve using the Analytics.AddEvent(event_name, fields)
method. By default events added in this will include all automatic and common callback fields. They will also be renamed Kongregate.Raw.<event_name>
when viewed in the Swrve dashboard. This is the method you will use for most events you plan to perform detailed analysis on.
There may be cases where you only want to use events as triggers for various Swrve features, such as In-App Messaging or the Push Notification Permission. For these case, you want to fire Swrve only events, that will not include the added overhead of collecting automatic and common fields. To do this, prefix the event name you pass to AddEvent
with swrve.<event_name>
. IMPORTANT NOTE: these events are renamed Kongregate.<event_name>
when they are sent to swrve. This is the format you will use when scheduling them as triggers.
Of course, you may also use the defauls Kongregate.Raw.<event_name>
or any of the built-in swrve.<event_name>
events as triggers as well.
If you wish to pass virtual economy events to Swrve, you may use the following special event names. These will essentially pass through directly to the SWRVE API calls descriped here: Swrve Virtual Economy Events.
Dictionary<string,object> purchasePayload = new Dictionary<string,object>()
{
{ Kongregate.Analytics.SWRVE_VIRTUAL_ECONOMY_PARAM_ITEM, "an_item" },
{ Kongregate.Analytics.SWRVE_VIRTUAL_ECONOMY_PARAM_CURRENCY, "hard_currency_change" },
{ Kongregate.Analytics.SWRVE_VIRTUAL_ECONOMY_PARAM_COST, 100 },
{ Kongregate.Analytics.SWRVE_VIRTUAL_ECONOMY_PARAM_QUANTITY, 5 }
};
KongregateAPI.GetAPI().Analytics.AddEvent(Kongregate.Analytics.SWRVE_VIRTUAL_ECONOMY_EVENT_PURCHASE, purchasePayload);
Dictionary<string,object> giftPayload = new Dictionary<string,object>()
{
{ Kongregate.Analytics.SWRVE_VIRTUAL_ECONOMY_PARAM_CURRENCY, "soft_currency_change" },
{ Kongregate.Analytics.SWRVE_VIRTUAL_ECONOMY_PARAM_AMOUNT, 4.99 }
};
KongregateAPI.GetAPI().Analytics.AddEvent(Kongregate.Analytics.SWRVE_VIRTUAL_ECONOMY_EVENT_GIFT, giftPayload);
User attributes may be used to create segments when targeting some Swrve features, such as in-app messages. Our SDK automatically populates the following user attributes.
total_spent_in_usd
event_time
irst_play_time
num_sessions
days_retained
device_type
client_os_type
client_os_version
country_code
kong_username
ession_id
idfa
idfv
client_version
You may add you own custom user attributes with the following Analytics.gameUserUpdate()
method. Note, Swrve expects all values to be Strings.
Dictionary<string,object> gameUserProps = new Dictionary<string, object>()
{
{ "level", "1" },
};
KongregateAPI.GetAPI().Analytics.GameUserUpdate(gameUserProps);
[KongregateAPI.instance.analytics gameUserUpdate:@{ @"level" : @"1"}];
Map<String,String> gameUserData = new HashMap<String, String>();
gameUserData.put("level", "1");
APIBootstrap.getInstance().analytics().gameUserUpdate(gameUserData);
Swrve may be used to manage Push Notifications. See the Push Notification Documentation for integration details.
By default Swrve will request the Push Notification permission when the app comes to the foreground. You may change this behavior to have the dialog be displayed in response to a specific event. Note, this is an iOS only feature.
To set this up you must do 2 things. First, initialize the SDK with the events that should trigger the permission dialog, replacing the default behavior. Second, you must fire an event that triggers the notification at the approptiate time.
// initialize Swrve with the set of events that will initiate the permission request.
KongregateAPI.Settings.SwrveConfig = new Dictionary<string, object>() {
{ KongregateAPI.KONGREGATE_SWRVE_PUSH_NOTIFICATION_EVENTS,
new String[] { "Kongregate.pushNotificationPermission" }
}
};
// this event will trigger the permission dialog. Note, the prefix differs (see below)
KongregateAPI.GetAPI().Analytics.AddEvent("swrve.pushNotificationPermission", new Dictionary<string,object>(0));
// initialize Swrve with the set of events that will initiate the permission request.
NSDictionary* apiSettings = @{
KONGREGATE_SWRVE_PUSH_NOTIFICATION_EVENTS: [NSSet setWithArray:@[@"Kongregate.pushNotificationPermission"]],
// other settings
};
[KongregateAPI initialize:gameId apiKey:apiKey withSettings:apiSettings];
// this event triggers the permission dialog. Note, the prefix differs (see below)
[KongregateAPI.instance.analytics addEvent:@{} toCollection:@"swrve.pushNotificationPermission"];
IMPORTANT NOTE: when an event is added to Kongregate with the swrve.
prefix, the prefix will change to Kongregate.
when it’s sent to Swrve. This is the setup and add event steps above have different prefixes. This is done because the Kongregate AddEvent call may send the event through various wrapped SDK (e.g. Keen, Swrve), the swrve.
prefix tells the Kong SDK to only route it to Swrve.
Testing the push notification permission dialog can be tricky. iOS will only ask once at most once a day. To test the timings of the dialog, you can work around this by changing the date to more than 1 day in advance, restart the device, and relaunch your app.
Swrve may be used to send in-app messages. See Swrve In-App Messaging documentation for details. No special client side setup is needed for either iOS or Android to enable in-app messaging. However, you may choose to trigger in-app messages in response to Swrve events, rather than displaying them as soon as possible. These are the two options when configuring in-app messages in the Swrve dashboard. Similar to the push notification permission event above, you way want to use Swrve only events for this purpose. These events will be more streamlined and willnot include properties from automatic and game callbacks.
KongregateAPI.GetAPI().Analytics.AddEvent("swrve.inAppMessage", new Dictionary<string,object>(0));
[KongregateAPI.instance.analytics addEvent:@{} toCollection:@"swrve.inAppMessage"];
APIBootstrap.getInstance().analytics().addEvent("swrve.inAppMessage",event);
In the Swrve dashboard you may specify an action
or deep link
to be fired when a user presses a button to dismiss the In-App Message dialog. To use this feature you must specify a method to handle these actions. This is done as follows.
// here KongGameObject is a game object with the method HandleSwrveAction, which will be invoked
// when the Swrve action is fired.
KongregateAPI.GetAPI().Analytics.SetSwrveButtonListener("KongGameObject", "HandleSwrveAction");
// You can see the method receives a single string parameter, which will be whatever you set as the
// Action in the Swrve dashboard
void HandleSwrveAction(String action) {
Debug.Log("swrve action: " + action);
}
See KongregateGameObject-Example.cs
for another Unity code sample.
// Set a block to receive the Action
[[[KongregateAPI instance] analytics] setSwrveButtonCallback:^(NSString * action) {
NSLog(@"swrve button callback: %@", action);
}];
// set an `ISwrveCustomButtonListener` implementation to handle the action.
mAPI.analytics().setSwrveCustomButtonListener(new ISwrveCustomButtonListener() {
@Override
public void onAction(String action) {
android.util.Log.d("your_app", "Swrve Action: " + action);
}
});
The Kongregate SDK will automatically handle deep links with the format kong_panel [TARGET]
, where [TARGET]
is one of the valid panel targets. For example, kong_panel registration
opens the Kongregate registration. Deep links that do not follow this format are passed on to your custom action button callback, if set, or fallback to the default behavoir of opening a URI.
Your game may leverage Swrve to run A/B tests. The Swrve docs site includes a detailed reference on how to setup and run an A/B Test (see Integating Resource A/B Testing). This document outlines how to access the Swrve resources through the Kongregate Client SDK.
SWRVE_APP_ID
and SWRVE_API_KEY
options as specified in the platform initialization sections: Android, iOS, Unity.KongregateAPI kongApi = APIBootstrap.getInstance();
kongApi.analytics().getResourceAsString("a_resource", "a_string_attr", "n/a"));
kongApi.analytics().getResourceAsInt("a_resource", "an_int_attr", 0));
kongApi.analytics().getResourceAsFloat("a_resource", "a_float_attr", 0));
kongApi.analytics().getResourceAsBool("a_resource", "a_bool_attr", false));
These methods are available in Unity/C#, Android/Java, and iOS/Objective-C. See the respective API documentation for details. They all take a resource
, attribute
, and default_value
parameter and return a value of the specified type. Be sure the Kongregate SDK is initialized before using these methods. If the SDK is not yet initalized, they will simply return the default value. You may also see the KongregateGameObject-Exampe.cs
file for a Unity implementation.
When a Swrve resource changes, your Kongregate Event Handler will receive the SWRVE_RESOURCES_UPDATES
event.
mAPI.addEventListener(new KongregateEventListener() {
@Override
public void onEvent(String event) {
if (KongregateEvent.SWRVE_RESOURCES_UPDATES.equals(event)) {
// get resource values for the active player
String monsterName = mAPI.analytics().getResourceAsString("monster_config", "name", "jake");
}
}
Similar events are fired for Objective-c (KONGREGATE_EVENT_SWRVE_RESOURCES_UPDATED
) and C# (KongregateAPI.KONGREGATE_EVENT_SWRVE_RESOURCES_UPDATES
) clients.
The default SWRVE configuration may be overridden by passing any of the following API options with the apiSettings when you initialize the Kongregate SDK. Most games do not need to override any of the default Swrve settings.
KONGREGATE_SWRVE_AUTO_COLLECT_DEVICE_TOKEN
: flag to auto collect push device token (default @YES
).KONGREGATE_SWRVE_PUSH_ENABLED
: flag if push notifications are enabled (default @YES
).KONGREGATE_SWRVE_PUSH_NOTIFICATION_EVENTS
- Set of events that will trigger push notifications (default @["Swrve.session.start"]
).KONGREGATE_SWRVE_AUTO_SHOW_MESSAGE_AFTER_DOWNLOAD_EVENTS
: Set of events used to auto show messages (default @[Swrve.Messages.campaigns_downloaded]
).KONGREGATE_SWRVE_TALK_ENABLED
: flag to enable Swrve Talk campaigns (default @NO
).KONGREGATE_SWRVE_AUTO_DOWNLOAD
: flag to enable auto talk campaign downloads (default @YES
).KONGREGATE_SWRVE_MAX_CONCURRENT_DOWNLOADS
: number of simultaneous asset downloads for talk campaigns (default @2
).KONGREGATE_SWRVE_APP_VERSION
: string to override the app version (default is bundle id).KONGREGATE_SWRVE_LINK_TOKEN
: override unique ID to identify the users apps (default is IDFV).KONGREGATE_SWRVE_LANGUAGE
: override language for the device (default is preferred language).