Skip to content

Commit 372eecf

Browse files
authored
feat: add getSessionId for all platforms (#237)
* feat: add getSessionId for all platforms * remove null fix to put in different pr * just leave feteched session id as blank as toString() is never null
1 parent 9197d45 commit 372eecf

File tree

7 files changed

+71
-0
lines changed

7 files changed

+71
-0
lines changed

android/src/main/kotlin/com/amplitude/amplitude_flutter/AmplitudeFlutterPlugin.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,13 @@ class AmplitudeFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
122122
result.success("setDeviceId called..")
123123
}
124124

125+
"getSessionId" -> {
126+
val sessionId = amplitude.sessionId
127+
amplitude.logger.debug("Get sessionId: $sessionId")
128+
129+
result.success(sessionId)
130+
}
131+
125132
"reset" -> {
126133
amplitude.reset()
127134
amplitude.logger.debug("Reset userId and deviceId.")

darwin/Classes/SwiftAmplitudeFlutterPlugin.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ import AmplitudeSwift
118118

119119
result("setDeviceId called..")
120120

121+
case "getSessionId":
122+
let sessionId = amplitude?.getSessionId()
123+
amplitude?.logger?.debug(message: "Get sessionId: \(String(describing: sessionId))")
124+
125+
result(sessionId)
126+
121127
case "reset":
122128
amplitude?.reset()
123129
amplitude?.logger?.debug(message: "Reset userId and deviceId.")

example/lib/my_app.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import 'group_identify_form.dart';
1515
import 'identify_form.dart';
1616
import 'reset.dart';
1717
import 'revenue_form.dart';
18+
import 'session_id.dart';
1819
import 'user_id_form.dart';
1920

2021
class MyApp extends StatefulWidget {
@@ -84,6 +85,8 @@ class _MyAppState extends State<MyApp> {
8485
divider,
8586
ResetForm(),
8687
divider,
88+
SessionIdForm(),
89+
divider,
8790
EventForm(),
8891
divider,
8992
IdentifyForm(),

example/lib/session_id.dart

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import 'package:flutter/material.dart';
2+
import 'app_state.dart';
3+
4+
class SessionIdForm extends StatefulWidget {
5+
@override
6+
State<SessionIdForm> createState() => _SessionIdFormState();
7+
}
8+
9+
class _SessionIdFormState extends State<SessionIdForm> {
10+
int? _sessionId;
11+
12+
@override
13+
Widget build(BuildContext context) {
14+
return Column(
15+
crossAxisAlignment: CrossAxisAlignment.start,
16+
children: <Widget>[
17+
Text('Session Id', style: Theme.of(context).textTheme.headlineSmall),
18+
const SizedBox(height: 10),
19+
ElevatedButton(
20+
onPressed: () async {
21+
final newSessionId =
22+
await AppState.of(context).analytics.getSessionId();
23+
setState(() {
24+
_sessionId = newSessionId;
25+
});
26+
},
27+
child: Text('Get Session Id'),
28+
),
29+
Row(
30+
children: [
31+
Text('Fetched Session Id: ',
32+
style: Theme.of(context).textTheme.bodyMedium),
33+
const SizedBox(height: 10),
34+
Text(_sessionId.toString(),
35+
style: Theme.of(context).textTheme.bodyMedium),
36+
],
37+
),
38+
],
39+
);
40+
}
41+
}

lib/amplitude.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,15 @@ class Amplitude {
228228
return await _channel.invokeMethod('setDeviceId', properties);
229229
}
230230

231+
/// Get the current session ID.
232+
///
233+
/// ```
234+
/// final sessionId = await amplitude.getSessionId();
235+
/// ```
236+
Future<int?> getSessionId() async {
237+
return await _channel.invokeMethod('getSessionId');
238+
}
239+
231240
/// Web only.
232241
/// Disables tracking.
233242
///

lib/amplitude_web.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ class AmplitudeFlutterPlugin {
7070
String deviceId = call.arguments['setDeviceId'];
7171
amplitude.setDeviceId(deviceId.toJS);
7272
}
73+
case "getSessionId":
74+
{
75+
return amplitude.getSessionId()?.toDartInt;
76+
}
7377
case "reset":
7478
{
7579
amplitude.reset();

lib/web/amplitude_js.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ extension type Amplitude(JSObject _) implements JSObject {
99
external void setUserId(JSString userId);
1010
external JSString? getDeviceId();
1111
external void setDeviceId(JSString devideId);
12+
external JSNumber? getSessionId();
1213
external void setOptOut(bool enabled);
1314
external void reset();
1415
external void flush();

0 commit comments

Comments
 (0)