Skip to content

Commit 5521cc9

Browse files
[FSSDK-9358] chore: add flutter specific client name support to track event (#72)
* Client depedency updated to 4.0.0 * PlatformService ready for clinet name * SDK client name and version injectecd to native SDK * Package info added * Remove unused code and file * clean up * Test case added * Clean up
1 parent 52b49ce commit 5521cc9

File tree

16 files changed

+142
-10
lines changed

16 files changed

+142
-10
lines changed

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ dependencies {
8383
implementation 'org.slf4j:slf4j-api:2.0.7'
8484

8585
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10"
86-
implementation "com.optimizely.ab:android-sdk:4.0.0-beta2"
86+
implementation "com.optimizely.ab:android-sdk:4.0.0"
8787
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.4'
8888
implementation ('com.google.guava:guava:19.0') {
8989
exclude group:'com.google.guava', module:'listenablefuture'

android/src/main/java/com/optimizely/optimizely_flutter_sdk/OptimizelyFlutterClient.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ public class OptimizelyFlutterClient {
7878

7979
protected void initializeOptimizely(@NonNull ArgumentsParser argumentsParser, @NonNull Result result) {
8080
String sdkKey = argumentsParser.getSdkKey();
81+
String sdkName = Utils.sdkName;
82+
String sdkVersion = argumentsParser.getSdkVersion();
8183
if (sdkKey == null) {
8284
result.success(createResponse(ErrorMessage.INVALID_PARAMS));
8385
return;
@@ -172,7 +174,8 @@ protected void initializeOptimizely(@NonNull ArgumentsParser argumentsParser, @N
172174
.withODPSegmentCacheTimeout(segmentsCacheTimeoutInSecs, TimeUnit.SECONDS)
173175
.withTimeoutForODPSegmentFetch(timeoutForSegmentFetchInSecs)
174176
.withTimeoutForODPEventDispatch(timeoutForOdpEventInSecs)
175-
.withSDKKey(sdkKey);
177+
.withSDKKey(sdkKey)
178+
.withClientInfo(sdkName, sdkVersion);
176179
if (disableOdp) {
177180
optimizelyManagerBuilder.withODPDisabled();
178181
}

android/src/main/java/com/optimizely/optimizely_flutter_sdk/helper_classes/ArgumentsParser.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ public ArgumentsParser(Map<String, ?> arguments) {
3131
public String getSdkKey() {
3232
return (String) arguments.get(Constants.RequestParameterKey.SDK_KEY);
3333
}
34+
35+
public String getSdkVersion() {
36+
return (String) arguments.get(Constants.RequestParameterKey.SDK_VERSION);
37+
}
3438

3539
public Integer getNotificationID() {
3640
return (Integer) arguments.get(Constants.RequestParameterKey.NOTIFICATION_ID);

android/src/main/java/com/optimizely/optimizely_flutter_sdk/helper_classes/Constants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public static class NotificationType {
5858

5959
public static class RequestParameterKey {
6060
public static final String SDK_KEY = "sdkKey";
61+
public static final String SDK_VERSION = "sdkVersion";
6162
public static final String USER_ID = "userId";
6263
public static final String USER_CONTEXT_ID = "userContextId";
6364
public static final String NOTIFICATION_ID = "id";

android/src/main/java/com/optimizely/optimizely_flutter_sdk/helper_classes/Utils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
import ch.qos.logback.classic.Logger;
3838

3939
public class Utils {
40-
40+
public static String sdkName = "flutter/android-sdk";
41+
4142
public static String getRandomUUID() {
4243
return UUID.randomUUID().toString();
4344
}

example/android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ buildscript {
1111
}
1212
}
1313
ext {
14-
android_sdk_version = "4.0.0-beta3"
14+
android_sdk_version = "4.0.0"
1515
}
1616
allprojects {
1717
repositories {

ios/Classes/HelperClasses/Constants.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ struct RequestParameterKey {
114114
static let timeoutForSegmentFetchInSecs = "timeoutForSegmentFetchInSecs"
115115
static let timeoutForOdpEventInSecs = "timeoutForOdpEventInSecs"
116116
static let disableOdp = "disableOdp"
117+
static let sdkVersion = "sdkVersion";
117118
}
118119

119120
struct ResponseKey {

ios/Classes/HelperClasses/Utils.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import Foundation
1818
import Optimizely
1919

2020
public class Utils: NSObject {
21-
21+
static var sdkName = "flutter/swift-sdk"
2222
/// Converts and returns dart map to native map
2323
static func getTypedMap(arguments: Any?) -> [String: Any]? {
2424
guard let args = arguments as? Dictionary<String, Any?> else {

ios/Classes/SwiftOptimizelyFlutterSdkPlugin.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@ public class SwiftOptimizelyFlutterSdkPlugin: NSObject, FlutterPlugin {
118118
var timeoutForSegmentFetchInSecs: Int = 10
119119
var timeoutForOdpEventInSecs: Int = 10
120120
var disableOdp: Bool = false
121+
var sdkVersion = parameters[RequestParameterKey.sdkVersion] as? String
122+
var sdkName = Utils.sdkName
123+
121124
if let sdkSettings = parameters[RequestParameterKey.optimizelySdkSettings] as? Dictionary<String, Any?> {
122125
if let cacheSize = sdkSettings[RequestParameterKey.segmentsCacheSize] as? Int {
123126
segmentsCacheSize = cacheSize
@@ -135,7 +138,7 @@ public class SwiftOptimizelyFlutterSdkPlugin: NSObject, FlutterPlugin {
135138
disableOdp = isOdpDisabled
136139
}
137140
}
138-
let optimizelySdkSettings = OptimizelySdkSettings(segmentsCacheSize: segmentsCacheSize, segmentsCacheTimeoutInSecs: segmentsCacheTimeoutInSecs, timeoutForSegmentFetchInSecs: timeoutForSegmentFetchInSecs, timeoutForOdpEventInSecs: timeoutForOdpEventInSecs, disableOdp: disableOdp)
141+
let optimizelySdkSettings = OptimizelySdkSettings(segmentsCacheSize: segmentsCacheSize, segmentsCacheTimeoutInSecs: segmentsCacheTimeoutInSecs, timeoutForSegmentFetchInSecs: timeoutForSegmentFetchInSecs, timeoutForOdpEventInSecs: timeoutForOdpEventInSecs, disableOdp: disableOdp, sdkName: sdkName, sdkVersion: sdkVersion)
139142

140143
// Datafile Download Interval
141144
var datafilePeriodicDownloadInterval = 10 * 60 // seconds

ios/optimizely_flutter_sdk.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Pod::Spec.new do |s|
1313
s.source = { :path => '.' }
1414
s.source_files = 'Classes/**/*'
1515
s.dependency 'Flutter'
16-
s.dependency 'OptimizelySwiftSDK', '4.0.0-beta'
16+
s.dependency 'OptimizelySwiftSDK', '4.0.0'
1717
s.platform = :ios, '10.0'
1818
# Flutter.framework does not contain a i386 slice.
1919
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }

0 commit comments

Comments
 (0)