Skip to content

Commit 59dca1c

Browse files
authored
Merge pull request #4 from novas1r1/main
Basic cleanup, documentation corrections
2 parents 3d44bba + 7e7ee5a commit 59dca1c

18 files changed

+181
-123
lines changed

CHANGELOG.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
1-
## 0.3.0
1+
## 0.4.0
2+
- https://github.com/TelemetryDeck/FlutterSDK/releases/tag/0.4.0
3+
- Updated `flutter_lints` dependency
4+
- Updated package to make it compliant with flutter package rules
5+
- Made all calls in `Telemetrydecksdk` class static - no need to create an instance anymore
6+
- `additionalPayload` takes a `Map<String, dynamic>`now instead of a `Map<String, String>` and values will now be stringified automatically
27

8+
## 0.3.0
39
- https://github.com/TelemetryDeck/FlutterSDK/releases/tag/0.3.0
410

5-
611
## 0.2.0
7-
812
- https://github.com/TelemetryDeck/FlutterSDK/releases/tag/0.2.0
913

10-
1114
## 0.1.0
12-
1315
- TelemetryDeck SDK is now available for macOS apps
1416
- Improvements to documentation and pub.dev listing
1517

1618
## 0.0.5
17-
1819
- https://github.com/TelemetryDeck/FlutterSDK/releases/tag/0.0.5
1920

2021
## 0.0.4
21-
2222
- The initial release of TelemetryDeck SDK for Flutter
2323

2424
## 0.0.3
25-
2625
- The initial release of TelemetryDeck SDK for Flutter

README.md

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,12 @@ void main() {
1515
// ensure the platform channels are available
1616
WidgetsFlutterBinding.ensureInitialized();
1717
// configure and start the TelemetryClient
18-
Telemetrydecksdk.start(TelemetryManagerConfiguration(
19-
appID: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"));
18+
Telemetrydecksdk.start(
19+
TelemetryManagerConfiguration(
20+
appID: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
21+
),
22+
);
23+
2024
runApp(const MyApp());
2125
}
2226
```
@@ -42,17 +46,18 @@ Set the `com.apple.security.network.client` entitlement to `true` in the `macos/
4246
Send a signal using the following method:
4347

4448
```dart
45-
TelemetryManager.send("signal_type")
49+
Telemetrydecksdk.send("signal_type")
4650
```
4751

4852
## Signals with additional attributes
4953

5054
Append any number of custom attributes to a signal:
5155

5256
```dart
53-
TelemetryManager.send("signal_type",
54-
additionalPayload: {"attributeName": "value"});
55-
}
57+
Telemetrydecksdk.send(
58+
"signal_type",
59+
additionalPayload: {"attributeName": "value"},
60+
);
5661
```
5762

5863
The Flutter SDK uses the native SDKs for Android and iOS which offer a number of built-in attributes which are submitted with every signal. You can overwrite these attributes by providing a custom value with the same key. For more information on how each value is calcualted, check the corresponding platform library:
@@ -81,7 +86,7 @@ The Flutter SDK uses the native SDKs for Android and iOS which offer a number of
8186
Prevent signals from being sent using the stop method:
8287

8388
```dart
84-
TelemetryManager.stop()
89+
Telemetrydecksdk.stop()
8590
```
8691

8792
In order to restart sending events, you will need to call the `start` method again.
@@ -92,10 +97,13 @@ If your app's build configuration is set to "Debug", all signals sent will be ma
9297

9398
If you want to manually control whether test mode is active, you can set the `testMode` field:
9499

95-
```swift
96-
Telemetrydecksdk.start(TelemetryManagerConfiguration(
97-
appID: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
98-
testMode: true));
100+
```dart
101+
Telemetrydecksdk.start(
102+
TelemetryManagerConfiguration(
103+
appID: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
104+
testMode: true,
105+
),
106+
);
99107
```
100108

101109
[Getting started with Test Mode](https://telemetrydeck.com/docs/articles/test-mode/)
@@ -104,10 +112,13 @@ Telemetrydecksdk.start(TelemetryManagerConfiguration(
104112

105113
A very small subset of our customers will want to use a custom signal ingestion server or a custom proxy server. To do so, you can pass the URL of the custom server to the `TelemetryManagerConfiguration`:
106114

107-
```swift
108-
Telemetrydecksdk.start(TelemetryManagerConfiguration(
109-
appID: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
110-
apiBaseURL: "https://nom.telemetrydeck.com"));
115+
```dart
116+
Telemetrydecksdk.start(
117+
TelemetryManagerConfiguration(
118+
appID: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
119+
apiBaseURL: "https://nom.telemetrydeck.com",
120+
),
121+
);
111122
```
112123

113124
## Logging output
@@ -116,8 +127,11 @@ By default, some logs helpful for monitoring TelemetryDeck are printed out to th
116127

117128
```dart
118129
void main() {
119-
Telemetrydecksdk.start(TelemetryManagerConfiguration(
130+
Telemetrydecksdk.start(
131+
TelemetryManagerConfiguration(
120132
appID: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
121-
debug: true));
133+
debug: true,
134+
),
135+
);
122136
}
123137
```

analysis_options.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
include: package:flutter_lints/flutter.yaml
2-
32
# Additional information about this file can be found at
43
# https://dart.dev/guides/language/analysis-options

example/lib/main.dart

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1-
import 'package:flutter/material.dart';
21
import 'dart:async';
32

4-
import 'package:telemetrydecksdk/telemetry_manager_configuration.dart';
3+
import 'package:flutter/material.dart';
54
import 'package:telemetrydecksdk/telemetrydecksdk.dart';
65

76
void main() {
87
WidgetsFlutterBinding.ensureInitialized();
9-
Telemetrydecksdk.start(TelemetryManagerConfiguration(
10-
appID: "your TelemetryDeck App ID", debug: true, testMode: true));
8+
Telemetrydecksdk.start(
9+
const TelemetryManagerConfiguration(
10+
appID: "A4CAE055-857C-45F8-8C6B-335E3617050D",
11+
debug: true,
12+
testMode: true,
13+
),
14+
);
1115
runApp(const MyApp());
1216
}
1317

@@ -19,8 +23,6 @@ class MyApp extends StatefulWidget {
1923
}
2024

2125
class _MyAppState extends State<MyApp> {
22-
final _telemetrydecksdkPlugin = Telemetrydecksdk();
23-
2426
@override
2527
void initState() {
2628
super.initState();
@@ -47,16 +49,21 @@ class _MyAppState extends State<MyApp> {
4749
mainAxisSize: MainAxisSize.min,
4850
children: <Widget>[
4951
const Text('Hello !'),
50-
const SizedBox(height: 10),
52+
const SizedBox(height: 10), // Adds some space between the text and the button
5153
ElevatedButton(
5254
onPressed: () {
5355
// Send a signal type to TelemetryDeck
54-
_telemetrydecksdkPlugin.send("button_clicked");
56+
Telemetrydecksdk.send("button_clicked");
5557
// You can optionally attach parameters to the signal
56-
_telemetrydecksdkPlugin.send("button_clicked",
57-
clientUser: "user");
58-
_telemetrydecksdkPlugin.send("button_clicked",
59-
additionalPayload: {"mapKey": "mapValue"});
58+
Telemetrydecksdk.send(
59+
"button_clicked",
60+
clientUser: "user",
61+
);
62+
// Provide additional payload information
63+
Telemetrydecksdk.send(
64+
"button_clicked",
65+
additionalPayload: {"mapKey": "mapValue"},
66+
);
6067
},
6168
child: const Text('Press Me'),
6269
),
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import 'dart:io';
22

33
class DartVersionReader {
4+
const DartVersionReader();
5+
46
String readVersion() {
57
final version = Platform.version;
8+
69
return version.replaceAll("\"", "'");
710
}
811
}

lib/telemetry_manager_configuration.dart renamed to lib/src/telemetry_manager_configuration.dart

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
class TelemetryManagerConfiguration {
22
/// Your app's ID for Telemetry.
3-
String appID;
3+
final String appID;
44

55
/// The Telemetrydeck domain to send signals to.
6-
String? apiBaseURL;
6+
final String? apiBaseURL;
77

88
/// Instead of specifying a user identifier with each `send` call, you can set your user's name/email/identifier here.
99
/// The `defaultUser` value will be sent with every signal.
1010
///
1111
/// Note that just as with specifying the user identifier with the `send` call, the identifier will never leave the device.
1212
/// Instead it is used to create a hash, which is included in your signal to allow you to count distinct users.
13-
String? defaultUser;
13+
final String? defaultUser;
1414

1515
/// Log the current status to the signal cache to the console.
16-
bool? debug;
16+
/// Default is `false`.
17+
final bool? debug;
1718

1819
/// If `true` any signals sent will be marked as *Testing* signals.
19-
bool? testMode;
20+
/// Default is `false`.
21+
final bool? testMode;
2022

21-
TelemetryManagerConfiguration({
23+
const TelemetryManagerConfiguration({
2224
required this.appID,
2325
this.apiBaseURL,
2426
this.defaultUser,

lib/src/telemetry_provider.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import 'package:telemetrydecksdk/src/dart_version_reader.dart';
2+
import 'package:telemetrydecksdk/src/versions.dart';
3+
4+
class TelemetryProvider {
5+
final DartVersionReader versionReader;
6+
7+
const TelemetryProvider({
8+
this.versionReader = const DartVersionReader(),
9+
});
10+
11+
/// Adds Flutter specific payload attributes to outgoing signals before passing them to the native platform API.
12+
/// This method will overwrite the default `telemetryClientVersion`.
13+
Future<Map<String, dynamic>> enrich(Map<String, dynamic>? payload) async {
14+
Map<String, dynamic> result = payload ?? {};
15+
result['telemetryClientVersion'] = "Flutter $telemetryClientVersion";
16+
result['dartVersion'] = versionReader.readVersion();
17+
18+
return result;
19+
}
20+
}

lib/src/telemetrydecksdk.dart

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import 'dart:async';
2+
3+
import 'package:telemetrydecksdk/src/telemetry_manager_configuration.dart';
4+
import 'package:telemetrydecksdk/src/telemetry_provider.dart';
5+
6+
import 'telemetrydecksdk_platform_interface.dart';
7+
8+
abstract class Telemetrydecksdk {
9+
const Telemetrydecksdk._();
10+
11+
static const _telemetryProvider = TelemetryProvider();
12+
13+
static Future<void> start(TelemetryManagerConfiguration configuration) async {
14+
await TelemetrydecksdkPlatform.instance.start(configuration);
15+
}
16+
17+
static Future<void> stop() async {
18+
await TelemetrydecksdkPlatform.instance.stop();
19+
}
20+
21+
static Future<void> send(
22+
String signalType, {
23+
String? clientUser,
24+
Map<String, dynamic>? additionalPayload,
25+
}) async {
26+
final payload = await _telemetryProvider.enrich(additionalPayload);
27+
28+
final stringifiedPayload = payload.map(
29+
(key, value) => MapEntry(key, value.toString()),
30+
);
31+
32+
await TelemetrydecksdkPlatform.instance.send(
33+
signalType,
34+
clientUser: clientUser,
35+
additionalPayload: stringifiedPayload,
36+
);
37+
}
38+
39+
static Future<void> generateNewSession() async {
40+
await TelemetrydecksdkPlatform.instance.generateNewSession();
41+
}
42+
43+
static Future<void> updateDefaultUser(String clientUser) async {
44+
await TelemetrydecksdkPlatform.instance.updateDefaultUser(clientUser);
45+
}
46+
}

lib/telemetrydecksdk_method_channel.dart renamed to lib/src/telemetrydecksdk_method_channel.dart

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:flutter/foundation.dart';
22
import 'package:flutter/services.dart';
3-
import 'package:telemetrydecksdk/telemetry_manager_configuration.dart';
3+
import 'package:telemetrydecksdk/src/telemetry_manager_configuration.dart';
44

55
import 'telemetrydecksdk_platform_interface.dart';
66

@@ -21,13 +21,19 @@ class MethodChannelTelemetrydecksdk extends TelemetrydecksdkPlatform {
2121
}
2222

2323
@override
24-
Future<void> send(String signalType,
25-
{String? clientUser, Map<String, String>? additionalPayload}) async {
26-
await methodChannel.invokeMethod<void>('send', {
27-
'signalType': signalType,
28-
'clientUser': clientUser,
29-
'additionalPayload': additionalPayload
30-
});
24+
Future<void> send(
25+
String signalType, {
26+
String? clientUser,
27+
Map<String, String>? additionalPayload,
28+
}) async {
29+
await methodChannel.invokeMethod<void>(
30+
'send',
31+
{
32+
'signalType': signalType,
33+
'clientUser': clientUser,
34+
'additionalPayload': additionalPayload,
35+
},
36+
);
3137
}
3238

3339
@override

lib/telemetrydecksdk_platform_interface.dart renamed to lib/src/telemetrydecksdk_platform_interface.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
2-
import 'package:telemetrydecksdk/telemetry_manager_configuration.dart';
2+
import 'package:telemetrydecksdk/src/telemetry_manager_configuration.dart';
33

44
import 'telemetrydecksdk_method_channel.dart';
55

@@ -32,8 +32,11 @@ abstract class TelemetrydecksdkPlatform extends PlatformInterface {
3232
throw UnimplementedError('stop() has not been implemented.');
3333
}
3434

35-
Future<void> send(String signalType,
36-
{String? clientUser, Map<String, String>? additionalPayload}) async {
35+
Future<void> send(
36+
String signalType, {
37+
String? clientUser,
38+
Map<String, String>? additionalPayload,
39+
}) async {
3740
throw UnimplementedError('send() has not been implemented.');
3841
}
3942

0 commit comments

Comments
 (0)