metriqus_flutter_sdk 1.0.6
metriqus_flutter_sdk: ^1.0.6 copied to clipboard
Metriqus Flutter SDK
Metriqus SDK for Flutter #
This is the Metriqus SDK for Flutter. Metriqus is a data analytic platform for web and mobile.
Compatibility #
- This SDK supports iOS 12 or later and Android API level 21 (Lollipop) or later.
- The SDK is compatible with Flutter 3.0.0 or later.
Installation #
To install the Metriqus SDK, choose one of the following methods.
1. Install via pub.dev #
To use the Metriqus SDK in your Flutter app, add it to your pubspec.yaml:
dependencies:
metriqus_flutter_sdk: ^1.0.0
Then run:
flutter pub get
Integrate the SDK #
The Metriqus SDK initialization is handled in your main.dart file. To set up the Metriqus SDK:
import 'package:metriqus_flutter_sdk/metriqus_flutter_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Setup SDK listeners
Metriqus.onLog.listen((logMessage) {
print('🔵 Metriqus Log: $logMessage');
});
Metriqus.onSdkInitialize.listen((isInitialized) {
print('🔧 SDK Initialization: ${isInitialized ? 'SUCCESS' : 'FAILED'}');
});
// Initialize SDK
final settings = MetriqusSettings(
clientKey: 'your_client_key',
clientSecret: 'your_client_secret',
environment: Environment.sandbox,
logLevel: LogLevel.verbose,
);
Metriqus.initSdk(settings);
runApp(MyApp());
}
To set up the Metriqus SDK, enter the following information:
- Client Key: Check your credentials to find your client key.
- Client Secret: Check your credentials to find your client secret.
- Environment:
- Choose
Environment.sandboxif you are testing your app and want to send test data. You need to enable sandbox mode in the dashboard to see test data. - Choose
Environment.productionwhen you have finished testing and are ready to release your app.
- Choose
- Log Level: This controls what logs you receive.
The Metriqus SDK starts automatically when initSdk() is called. You can also initialize manually by calling:
Metriqus.initSdk(metriqusSettings);
Metriqus SDK Tracking API #
The following functions allow you to track user events, ad revenue, and other analytics-related actions within your Flutter project.
Event Tracking Functions #
-
trackIAPEvent(MetriqusInAppRevenue metriqusEvent)
Tracks in-app purchase (IAP) events. -
trackCustomEvent(MetriqusCustomEvent customEvent)
Tracks custom events with user-defined parameters. -
trackPerformance(double fps)
Tracks FPS and other performance-related metrics. -
trackItemUsed(MetriqusItemUsedEvent itemEvent)
Tracks when an item (currency, equipment, etc.) is used. -
trackLevelStarted(MetriqusLevelStartedEvent levelEvent)
Tracks when a level starts. -
trackLevelCompleted(MetriqusLevelCompletedEvent levelEvent)
Tracks when a level is completed. -
trackCampaignAction(MetriqusCampaignActionEvent campaignEvent)
Tracks campaign-related actions such as "Showed", "Clicked", "Closed", or "Purchased". -
trackScreenView(String screenName)
Tracks when a user views a specific screen in the app. -
trackButtonClick(String buttonName)
Tracks button click events.
Ad Revenue Tracking Functions #
-
trackAdRevenue(MetriqusAdRevenue adRevenue)
Tracks general ad revenue. -
trackAdmobAdRevenue(MetriqusAdmobAdRevenue admobRevenue)
Tracks ad revenue from AdMob. -
trackApplovinAdRevenue(MetriqusApplovinAdRevenue applovinRevenue)
Tracks ad revenue from AppLovin.
User Attribute Functions #
-
setUserAttribute(TypedParameter parameter)
Sets a user attribute. -
getUserAttributes()
Retrieves all user attributes. -
removeUserAttribute(String key)
Removes a specific user attribute by key.
Device and System Information Functions #
-
getAdid()
Retrieves the Advertising ID (AdID) of the user. -
getDeviceInfo()
Retrieves device information. -
getUserId()
Retrieves the unique user identifier. -
getSessionId()
Retrieves the current session ID. -
getGeolocation()
Retrieves geolocation data. -
isFirstLaunch()
Checks if this is the first app launch. -
getUserFirstTouchTimestamp()
Retrieves the user's first touch timestamp.
SDK State and Control Functions #
-
isInitialized
Checks whether the Metriqus SDK is initialized. -
isTrackingEnabled
Checks whether tracking is enabled. -
getMetriqusSettings()
Retrieves the Metriqus SDK settings. -
verboseLog(String message)
Sends a manual debug log. -
updateIOSConversionValue(int value)(iOS Only)
Updates iOS conversion value. -
clearStorage()
Clears all cached data (for debugging).
Notes #
- These functions are designed for Flutter Android/iOS platforms.
- Ensure the SDK is initialized before calling any tracking functions.
- Use
Environment.sandboxfor testing andEnvironment.productionfor live apps. - All tracking functions are designed to work seamlessly across app sessions.
Usage Guide #
Initialization #
import 'package:metriqus_flutter_sdk/metriqus_flutter_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final settings = MetriqusSettings(
clientKey: 'your_client_key',
clientSecret: 'your_client_secret',
environment: Environment.sandbox,
logLevel: LogLevel.verbose,
);
Metriqus.initSdk(settings);
runApp(MyApp());
}
App Lifecycle Management #
class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.resumed:
Metriqus.onResume();
break;
case AppLifecycleState.paused:
Metriqus.onPause();
break;
case AppLifecycleState.detached:
Metriqus.onQuit();
break;
}
}
}
Event Tracking #
Track Custom Events
void trackCustomEvent() {
final customEvent = MetriqusCustomEvent('button_clicked');
customEvent.addParameter(TypedParameter.string('button_name', 'play_button'));
customEvent.addParameter(TypedParameter.string('screen', 'main_menu'));
customEvent.addParameter(TypedParameter.int('timestamp', MetriqusUtils.getCurrentUtcTimestampSeconds()));
customEvent.addParameter(TypedParameter.int('user_level', 5));
customEvent.addParameter(TypedParameter.string('test', 'test'));
customEvent.addParameter(TypedParameter.bool('test', true));
customEvent.addParameter(TypedParameter.int('test', 1));
customEvent.addParameter(TypedParameter.double('test', 1.0));
Metriqus.trackCustomEvent(customEvent);
}
Track In-App Purchases (IAP)
void trackIAPEvent() {
final iapRevenue = MetriqusInAppRevenue.withRevenue(4.99, 'USD');
iapRevenue.brand = 'metriqus';
iapRevenue.variant = 'premium';
iapRevenue.productId = 'premium_upgrade';
iapRevenue.name = 'Premium Upgrade';
iapRevenue.category = 'upgrade';
iapRevenue.category2 = 'upgrade';
iapRevenue.category3 = 'upgrade';
iapRevenue.category4 = 'upgrade';
iapRevenue.category5 = 'upgrade';
iapRevenue.price = 4.99;
iapRevenue.quantity = 1;
iapRevenue.refund = 0;
iapRevenue.coupon = 'TEST2025';
iapRevenue.affiliation = 'metriqus';
iapRevenue.locationId = 'location_123';
iapRevenue.listId = 'list_123';
iapRevenue.listName = 'list_123';
iapRevenue.listIndex = 1;
iapRevenue.promotionId = 'promo_123';
iapRevenue.promotionName = 'promo_123';
iapRevenue.creativeName = 'creative_123';
iapRevenue.creativeSlot = 'slot_123';
// Item parameters
iapRevenue.itemParams = [
TypedParameter.string('test', 'test'),
TypedParameter.bool('test', true),
TypedParameter.int('test', 1),
TypedParameter.double('test', 1.0),
];
iapRevenue.setTransactionId('txn_${MetriqusUtils.getCurrentUtcTimestampSeconds()}');
Metriqus.trackIAPEvent(iapRevenue);
}
Track Performance (FPS)
Metriqus.trackPerformance(60);
Track Item Usage
void trackItemUsed() {
final itemUsedEvent = MetriqusItemUsedEvent();
itemUsedEvent.itemName = 'health_potion';
itemUsedEvent.amount = 1.0;
itemUsedEvent.itemType = 'consumable';
itemUsedEvent.itemRarity = 'common';
itemUsedEvent.itemClass = 'healing';
itemUsedEvent.itemCategory = 'potion';
itemUsedEvent.reason = 'battle';
Metriqus.trackItemUsed(itemUsedEvent);
}
Track Level Start
void trackLevelStarted() {
final levelStartEvent = MetriqusLevelStartedEvent();
levelStartEvent.levelNumber = 5;
levelStartEvent.levelName = 'Dragon Valley';
levelStartEvent.map = 'fantasy_world';
Metriqus.trackLevelStarted(levelStartEvent);
}
Track Level Completion
void trackLevelCompleted() {
final levelCompletedEvent = MetriqusLevelCompletedEvent();
levelCompletedEvent.levelNumber = 5;
levelCompletedEvent.levelName = 'Dragon Valley';
levelCompletedEvent.map = 'fantasy_world';
levelCompletedEvent.duration = 240.0; // 4 minutes
levelCompletedEvent.levelProgress = 100.0;
levelCompletedEvent.levelReward = 15000;
levelCompletedEvent.levelReward1 = 500; // experience
levelCompletedEvent.levelReward2 = 200; // coins
Metriqus.trackLevelCompleted(levelCompletedEvent);
}
Track Campaign Actions
void trackCampaignAction() {
final campaignEvent = MetriqusCampaignActionEvent(
'summer_2024',
MetriqusCampaignActionType.click,
variantId: 'variant_a'
);
Metriqus.trackCampaignAction(campaignEvent);
}
Track Screen View
Metriqus.trackScreenView('MainMenu');
Track Button Click
Metriqus.trackButtonClick('PlayButton');
Track Ad Revenue (Generic, AdMob, AppLovin)
// General Ad Revenue
void trackAdRevenue() {
final adRevenue = MetriqusAdRevenue.withRevenue(0.15, 'USD', MetriqusAdUnit.banner, source: 'metriqus');
adRevenue.adRevenueNetwork = 'AdMob';
adRevenue.adRevenuePlacement = 'main_screen';
adRevenue.adImpressionsCount = 1;
Metriqus.trackAdRevenue(adRevenue);
}
// AdMob Ad Revenue
void trackAdmobRevenue() {
final admobRevenue = MetriqusAdmobAdRevenue.withRevenue(0.22, 'EUR', MetriqusAdUnit.interstitial);
admobRevenue.adRevenueNetwork = 'AdMob';
admobRevenue.adRevenuePlacement = 'interstitial';
admobRevenue.adImpressionsCount = 1;
Metriqus.trackAdmobAdRevenue(admobRevenue);
}
// AppLovin Ad Revenue
void trackApplovinRevenue() {
final applovinRevenue = MetriqusApplovinAdRevenue.withRevenue(0.18, 'USD', MetriqusAdUnit.rewarded);
applovinRevenue.adRevenueNetwork = 'AppLovin MAX';
applovinRevenue.adRevenuePlacement = 'level_complete';
applovinRevenue.adImpressionsCount = 1;
Metriqus.trackApplovinAdRevenue(applovinRevenue);
}
User Attributes #
Set User Attribute
Metriqus.setUserAttribute(TypedParameter.string('user_type', 'premium'));
Metriqus.setUserAttribute(TypedParameter.int('user_level', 25));
Metriqus.setUserAttribute(TypedParameter.bool('is_premium', true));
Get All User Attributes
final attributes = Metriqus.getUserAttributes();
Remove a User Attribute
Metriqus.removeUserAttribute('user_type');
User & Session Info #
Get Advertising ID
final adid = Metriqus.getAdid();
Get Device Info
final deviceInfo = Metriqus.getDeviceInfo();
Get Unique User ID
final userId = Metriqus.getUserId();
Get Session ID
final sessionId = Metriqus.getSessionId();
Get Geolocation
final geolocation = Metriqus.getGeolocation();
Check if First Launch
final isFirstLaunch = Metriqus.isFirstLaunch();
Get First Touch Timestamp
final timestamp = Metriqus.getUserFirstTouchTimestamp();
Utility Classes #
MetriqusOrderStatus
Constant values for order statuses:
// Successful order status
String orderStatus = MetriqusOrderStatus.success;
// Failed order status
String orderStatus = MetriqusOrderStatus.fail;
// Cancelled order status
String orderStatus = MetriqusOrderStatus.cancel;
MetriqusAdUnit
Enum values for ad unit types with type safety:
// Banner ad
MetriqusAdUnit adUnit = MetriqusAdUnit.banner;
// Interstitial ad
MetriqusAdUnit adUnit = MetriqusAdUnit.interstitial;
// Rewarded ad
MetriqusAdUnit adUnit = MetriqusAdUnit.rewarded;
// Rewarded interstitial ad
MetriqusAdUnit adUnit = MetriqusAdUnit.rewardedInterstitial;
// Native advanced ad
MetriqusAdUnit adUnit = MetriqusAdUnit.nativeAdvenced;
// App open ad
MetriqusAdUnit adUnit = MetriqusAdUnit.appOpen;
// Convert enum to string value
String adUnitString = MetriqusAdUnit.banner.value; // Returns "banner"
// Convert string to enum
MetriqusAdUnit? adUnit = MetriqusAdUnit.fromString("banner"); // Returns MetriqusAdUnit.banner
SDK Settings & Debugging #
Check Initialization
final isInitialized = Metriqus.isInitialized;
Check Tracking Enabled
final isTrackingEnabled = Metriqus.isTrackingEnabled;
Get Metriqus Settings
final settings = Metriqus.getMetriqusSettings();
Manual Debug Log
Metriqus.verboseLog('Hello Metriqus!');
iOS Conversion Value Update
(Only available on iOS builds)
Metriqus.updateIOSConversionValue(5);
Clear Storage (Debug)
Metriqus.clearStorage();
Running the Example #
cd example
flutter pub get
flutter run
License #
MIT