如何在 flutter 初始化 firebase 之前警告用户没有互联网连接
How to warn user about no internet connection before firebase initialization in flutter
我正在使用 firebase 进行推送 notification.To 这样做,我正在学习一个教程,他们说 Firebase.initializeApp();
必须在 runApp(MyApp());
之前声明。
推送通知场景工作正常,但问题是,如果没有互联网连接,应用程序会卡在启动画面中。
现在我想知道,是否有任何标准程序可以警告用户 runApp(MyApp());
之前没有互联网连接?或者规则“Firebase.initializeApp();
必须在 runApp(MyApp());
之前声明”我知道是错误的?
或者我遗漏了一些标准程序?
我的代码场景-
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
try {
await Firebase.initializeApp();
} on SocketException {
print('socket exception');
}
FirebaseMessaging.onBackgroundMessage(_firebaseMessegingBackgroundHandler);
await FirebaseMessaging.instance.subscribeToTopic('all');
// await FirebaseMessaging.instance.subscribeToTopic('fluttertest');
// runApp(MyApp());
await SentryFlutter.init(
(options) {
options.dsn =
'',
options.tracesSampleRate = 1.0;
},
appRunner: () => runApp(MyApp()),
);
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle.dark.copyWith(
systemNavigationBarColor: GlobalColor.primaryTitle,
statusBarColor: GlobalColor.statusBarColor,
),
);
await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()
.createNotificationChannel(channel);
await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(
alert: true,
badge: true,
sound: true,
);
}
请注意,我知道如何检查连接状态,我的目标是如何使用 firebase 实现它!
我的猜测是对 await FirebaseMessaging.instance.subscribeToTopic('all')
的调用只有在有互联网连接时才会成功。
如果您希望在连接可用后完成订阅,但在此之前继续正常使用该应用程序:从该调用中删除 await
。
如果您希望在现在没有互联网连接的情况下甚至不再尝试订阅,请检测是否有互联网连接(以您已经知道的方式)并跳过 subscribeToTopic
在没有互联网连接时调用。
我正在使用 firebase 进行推送 notification.To 这样做,我正在学习一个教程,他们说 Firebase.initializeApp();
必须在 runApp(MyApp());
之前声明。
推送通知场景工作正常,但问题是,如果没有互联网连接,应用程序会卡在启动画面中。
现在我想知道,是否有任何标准程序可以警告用户 runApp(MyApp());
之前没有互联网连接?或者规则“Firebase.initializeApp();
必须在 runApp(MyApp());
之前声明”我知道是错误的?
或者我遗漏了一些标准程序?
我的代码场景-
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
try {
await Firebase.initializeApp();
} on SocketException {
print('socket exception');
}
FirebaseMessaging.onBackgroundMessage(_firebaseMessegingBackgroundHandler);
await FirebaseMessaging.instance.subscribeToTopic('all');
// await FirebaseMessaging.instance.subscribeToTopic('fluttertest');
// runApp(MyApp());
await SentryFlutter.init(
(options) {
options.dsn =
'',
options.tracesSampleRate = 1.0;
},
appRunner: () => runApp(MyApp()),
);
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle.dark.copyWith(
systemNavigationBarColor: GlobalColor.primaryTitle,
statusBarColor: GlobalColor.statusBarColor,
),
);
await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()
.createNotificationChannel(channel);
await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(
alert: true,
badge: true,
sound: true,
);
}
请注意,我知道如何检查连接状态,我的目标是如何使用 firebase 实现它!
我的猜测是对 await FirebaseMessaging.instance.subscribeToTopic('all')
的调用只有在有互联网连接时才会成功。
如果您希望在连接可用后完成订阅,但在此之前继续正常使用该应用程序:从该调用中删除 await
。
如果您希望在现在没有互联网连接的情况下甚至不再尝试订阅,请检测是否有互联网连接(以您已经知道的方式)并跳过 subscribeToTopic
在没有互联网连接时调用。