Skip to content

Commit ea3034d

Browse files
authored
feat(analytics)!: remove deprecated methods for breaking change release (#17560)
BREAKING CHANGE: Removes deprecated methods from firebase_analytics package - Removed `setCurrentScreen()` method (deprecated in favor of `logScreenView()`) - Removed `logSetCheckoutOption()` method (deprecated and unsupported in Enhanced Ecommerce reports) ## Migration Guide ### Replace `setCurrentScreen()` with `logScreenView()` **Before:** ```dart await FirebaseAnalytics.instance.setCurrentScreen( screenName: 'home_screen', screenClassOverride: 'HomeScreen', ); ``` **After:** ```dart await FirebaseAnalytics.instance.logScreenView( screenName: 'home_screen', screenClass: 'HomeScreen', ); ``` ### Remove `logSetCheckoutOption()` calls The `logSetCheckoutOption()` method has been completely removed as it's unsupported in updated Enhanced Ecommerce reports. If you were using this method, consider using alternative ecommerce tracking methods or consult the Firebase Analytics documentation for current best practices.
1 parent 67017fd commit ea3034d

File tree

9 files changed

+6
-167
lines changed

9 files changed

+6
-167
lines changed

packages/firebase_analytics/firebase_analytics/lib/src/firebase_analytics.dart

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -188,40 +188,6 @@ class FirebaseAnalytics extends FirebasePluginPlatform {
188188
await _delegate.setUserId(id: id, callOptions: callOptions);
189189
}
190190

191-
/// Sets the current [screenName], which specifies the current visual context
192-
/// in your app.
193-
///
194-
/// This helps identify the areas in your app where users spend their time
195-
/// and how they interact with your app.
196-
///
197-
/// The class name can optionally be overridden by the [screenClassOverride]
198-
/// parameter.
199-
///
200-
/// The [screenName] and [screenClassOverride] remain in effect until the
201-
/// current `Activity` (in Android) or `UIViewController` (in iOS) changes or
202-
/// a new call to [setCurrentScreen] is made.
203-
///
204-
/// Setting a null [screenName] clears the current screen name.
205-
///
206-
/// See also:
207-
///
208-
/// * https://firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics.html#setCurrentScreen(android.app.Activity, java.lang.String, java.lang.String)
209-
/// * https://firebase.google.com/docs/reference/ios/firebaseanalytics/api/reference/Classes/FIRAnalytics#setscreennamescreenclass
210-
@Deprecated(
211-
'setCurrentScreen() has been deprecated. Please use logScreenView()',
212-
)
213-
Future<void> setCurrentScreen({
214-
required String? screenName,
215-
String screenClassOverride = 'Flutter',
216-
AnalyticsCallOptions? callOptions,
217-
}) async {
218-
await _delegate.setCurrentScreen(
219-
screenName: screenName,
220-
screenClassOverride: screenClassOverride,
221-
callOptions: callOptions,
222-
);
223-
}
224-
225191
static final RegExp _nonAlphaNumeric = RegExp('[^a-zA-Z0-9_]');
226192
static final RegExp _alpha = RegExp('[a-zA-Z]');
227193

@@ -661,26 +627,6 @@ class FirebaseAnalytics extends FirebasePluginPlatform {
661627
);
662628
}
663629

664-
/// Logs the standard `set_checkout_option` event. This event has been deprecated and is unsupported in updated Enhanced Ecommerce reports.
665-
/// See: https://firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics.Event.html#SET_CHECKOUT_OPTION
666-
@Deprecated('logSetCheckoutOption() has been deprecated.')
667-
Future<void> logSetCheckoutOption({
668-
required int checkoutStep,
669-
required String checkoutOption,
670-
Map<String, Object>? parameters,
671-
}) {
672-
_assertParameterTypesAreCorrect(parameters);
673-
674-
return _delegate.logEvent(
675-
name: 'set_checkout_option',
676-
parameters: filterOutNulls(<String, Object?>{
677-
_CHECKOUT_STEP: checkoutStep,
678-
_CHECKOUT_OPTION: checkoutOption,
679-
if (parameters != null) ...parameters,
680-
}),
681-
);
682-
}
683-
684630
/// Logs the standard `login` event.
685631
///
686632
/// Apps with a login feature can report this event to signify that a user
@@ -1601,9 +1547,3 @@ const String _PROMOTION_ID = 'promotion_id';
16011547

16021548
/// The name of a product promotion
16031549
const String _PROMOTION_NAME = 'promotion_name';
1604-
1605-
/// The checkout step (1..N).
1606-
const String _CHECKOUT_STEP = 'checkout_step';
1607-
1608-
/// Some option on a step in an ecommerce flow.
1609-
const String _CHECKOUT_OPTION = 'checkout_option';

packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/method_channel/method_channel_firebase_analytics.dart

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -133,25 +133,6 @@ class MethodChannelFirebaseAnalytics extends FirebaseAnalyticsPlatform {
133133
}
134134
}
135135

136-
@override
137-
Future<void> setCurrentScreen({
138-
String? screenName,
139-
String? screenClassOverride,
140-
AnalyticsCallOptions? callOptions,
141-
}) {
142-
try {
143-
return _api.logEvent(<String, Object?>{
144-
'eventName': 'screen_view',
145-
'parameters': <String, String?>{
146-
'screen_name': screenName,
147-
'screen_class': screenClassOverride,
148-
},
149-
});
150-
} catch (e, s) {
151-
convertPlatformException(e, s);
152-
}
153-
}
154-
155136
@override
156137
Future<void> setUserProperty({
157138
required String name,

packages/firebase_analytics/firebase_analytics_platform_interface/lib/src/platform_interface/platform_interface_firebase_analytics.dart

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -138,19 +138,6 @@ abstract class FirebaseAnalyticsPlatform extends PlatformInterface {
138138
throw UnimplementedError('setUserId() is not implemented');
139139
}
140140

141-
/// Sets the current screen name, which specifies the current visual context
142-
/// in your app.
143-
///
144-
/// Setting a null [screenName] clears the current screen name.
145-
/// [callOptions] are for web platform only.
146-
Future<void> setCurrentScreen({
147-
String? screenName,
148-
String? screenClassOverride,
149-
AnalyticsCallOptions? callOptions,
150-
}) {
151-
throw UnimplementedError('setCurrentScreen() is not implemented');
152-
}
153-
154141
/// Sets a user property to the given value.
155142
/// Setting a null [value] removes the user property.
156143
/// [callOptions] are for web platform only.

packages/firebase_analytics/firebase_analytics_platform_interface/test/platform_interface_tests/platform_interface_analytics_test.dart

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:firebase_core/firebase_core.dart';
65
import 'package:firebase_analytics_platform_interface/src/platform_interface/platform_interface_firebase_analytics.dart';
6+
import 'package:firebase_core/firebase_core.dart';
77
import 'package:flutter_test/flutter_test.dart';
88
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
99

@@ -115,21 +115,6 @@ void main() {
115115
);
116116
});
117117

118-
test('throws if .setCurrentScreen() not implemented', () async {
119-
await expectLater(
120-
() => firebaseAnalyticsPlatform.setCurrentScreen(
121-
screenName: 'test screen',
122-
),
123-
throwsA(
124-
isA<UnimplementedError>().having(
125-
(e) => e.message,
126-
'message',
127-
'setCurrentScreen() is not implemented',
128-
),
129-
),
130-
);
131-
});
132-
133118
test('throws if .setUserProperty() not implemented', () async {
134119
await expectLater(
135120
() => firebaseAnalyticsPlatform.setUserProperty(

packages/firebase_analytics/firebase_analytics_web/lib/firebase_analytics_web.dart

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -118,20 +118,6 @@ class FirebaseAnalyticsWeb extends FirebaseAnalyticsPlatform {
118118
});
119119
}
120120

121-
@override
122-
Future<void> setCurrentScreen({
123-
String? screenName,
124-
String? screenClassOverride,
125-
AnalyticsCallOptions? callOptions,
126-
}) async {
127-
return convertWebExceptions(() {
128-
return _delegate.setCurrentScreen(
129-
screenName: screenName,
130-
callOptions: callOptions,
131-
);
132-
});
133-
}
134-
135121
@override
136122
Future<void> resetAnalyticsData() async {
137123
throw UnimplementedError('resetAnalyticsData() is not supported on Web.');

packages/firebase_analytics/firebase_analytics_web/lib/interop/analytics.dart

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -102,18 +102,6 @@ class Analytics extends JsObjectWrapper<analytics_interop.AnalyticsJsImpl> {
102102
);
103103
}
104104

105-
void setCurrentScreen({
106-
String? screenName,
107-
AnalyticsCallOptions? callOptions,
108-
}) {
109-
return analytics_interop.logEvent(
110-
jsObject,
111-
'screen_view'.toJS,
112-
{'firebase_screen': screenName}.jsify(),
113-
callOptions?.asMap().jsify() as JSObject?,
114-
);
115-
}
116-
117105
void setUserId({
118106
String? id,
119107
AnalyticsCallOptions? callOptions,

packages/firebase_analytics/firebase_analytics_web/test/firebase_analytics_web_test.dart

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,6 @@ void main() {
4242
verifyNoMoreInteractions(analytics);
4343
});
4444

45-
test('setCurrentScreen', () {
46-
const screenName = 'screenName';
47-
// screenClassOverride is discarded in web.
48-
analytics.setCurrentScreen(
49-
screenName: screenName,
50-
);
51-
verify(analytics.setCurrentScreen(screenName: screenName));
52-
verifyNoMoreInteractions(analytics);
53-
});
54-
5545
test('setAnalyticsCollectionEnabled', () {
5646
analytics.setAnalyticsCollectionEnabled(true);
5747
verify(analytics.setAnalyticsCollectionEnabled(true));

packages/firebase_analytics/firebase_analytics_web/test/firebase_analytics_web_test.mocks.dart

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -214,26 +214,6 @@ class MockFirebaseAnalyticsWeb extends _i1.Mock
214214
returnValueForMissingStub: _i5.Future<void>.value(),
215215
) as _i5.Future<void>);
216216

217-
@override
218-
_i5.Future<void> setCurrentScreen({
219-
String? screenName,
220-
String? screenClassOverride,
221-
_i3.AnalyticsCallOptions? callOptions,
222-
}) =>
223-
(super.noSuchMethod(
224-
Invocation.method(
225-
#setCurrentScreen,
226-
[],
227-
{
228-
#screenName: screenName,
229-
#screenClassOverride: screenClassOverride,
230-
#callOptions: callOptions,
231-
},
232-
),
233-
returnValue: _i5.Future<void>.value(),
234-
returnValueForMissingStub: _i5.Future<void>.value(),
235-
) as _i5.Future<void>);
236-
237217
@override
238218
_i5.Future<void> resetAnalyticsData() => (super.noSuchMethod(
239219
Invocation.method(

tests/integration_test/firebase_analytics/firebase_analytics_e2e_test.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,12 @@ void main() {
177177
);
178178
});
179179

180-
test('setCurrentScreen', () async {
180+
test('logScreenView', () async {
181181
await expectLater(
182-
// ignore: deprecated_member_use
183-
FirebaseAnalytics.instance.setCurrentScreen(screenName: 'screen-name'),
182+
FirebaseAnalytics.instance.logScreenView(
183+
screenName: 'screen-name',
184+
screenClass: 'TestScreen',
185+
),
184186
completes,
185187
);
186188
});

0 commit comments

Comments
 (0)