Flutter Firebase应用安装跟踪插件firebase_app_installations的使用
Flutter Firebase应用安装跟踪插件firebase_app_installations的使用
Firebase Installations Plugin for Flutter
这是一个用于Flutter的插件,它允许你使用Firebase Installations API。该插件当前版本可以在pub.dev上查看。
Getting Started
开始使用Firebase Installations for Flutter,请参考官方文档进行设置。
Usage 示例
下面是一个完整的示例demo,演示了如何使用firebase_app_installations
插件来获取和管理Firebase Installation ID和Auth Token。
代码实现
// Copyright 2023, the Chromium project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:developer';
import 'package:firebase_app_installations/firebase_app_installations.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'firebase_options.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.amber),
home: Scaffold(
appBar: AppBar(
title: const Text('Firebase Installations'),
),
body: const InstallationsCard(),
),
);
}
}
class InstallationsCard extends StatefulWidget {
const InstallationsCard({super.key});
@override
State<InstallationsCard> createState() => _InstallationsCardState();
}
class _InstallationsCardState extends State<InstallationsCard> {
String id = 'None';
String authToken = 'None';
@override
void initState() {
super.initState();
init();
// 监听ID变化
FirebaseInstallations.instance.onIdChange.listen((event) {
setState(() {
id = event;
});
// 确保在Installation Id更新后刷新Auth Token
getAuthToken();
// 忽略:同步使用build_context
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
content: Text('New Firebase Installations Id generated 🎉'),
backgroundColor: Colors.green,
));
}).onError((error) {
log("$error");
});
}
Future<void> init() async {
await getId();
await getAuthToken();
}
Future<void> deleteId() async {
try {
await FirebaseInstallations.instance.delete();
setState(() {
id = 'None';
});
} catch (e) {
log('$e');
}
}
Future<void> getId() async {
try {
final newId = await FirebaseInstallations.instance.getId();
setState(() {
id = newId;
});
} catch (e) {
log('$e');
}
}
Future<void> getAuthToken([forceRefresh = false]) async {
try {
final token = await FirebaseInstallations.instance.getToken(forceRefresh);
setState(() {
authToken = token;
});
} catch (e) {
log('$e');
}
}
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 500),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
width: double.infinity,
child: Card(
margin: EdgeInsets.zero,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Expanded(
child: Text("Installation Id: "),
),
Expanded(
flex: 2,
child: Text(id),
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Expanded(
child: Text("Auth Token: "),
),
Expanded(
flex: 2,
child: Text(authToken),
),
],
),
],
),
),
),
),
const SizedBox(height: 20),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () => getAuthToken(true),
child: const Text("Force update token"),
),
),
const SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Expanded(
child: ElevatedButton(
onPressed: deleteId,
child: const Text("Delete ID"),
),
),
const SizedBox(width: 20),
Expanded(
child: ElevatedButton(
onPressed: getId,
child: const Text("Get ID"),
),
)
],
)
],
),
),
),
);
}
}
Issues and feedback
如果你遇到了与FlutterFire相关的问题、错误或有功能请求,请在我们的issue tracker中提交。
对于非FlutterFire特定的插件问题,可以在Flutter issue tracker中提交。
如果你想为这个插件贡献代码,请查看我们的contribution guide,并打开一个pull request。
希望这个帖子能帮助你了解如何在Flutter项目中使用firebase_app_installations
插件。如果有任何问题或需要进一步的帮助,请随时提问!
更多关于Flutter Firebase应用安装跟踪插件firebase_app_installations的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Firebase应用安装跟踪插件firebase_app_installations的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter应用中使用firebase_app_installations
插件来跟踪应用安装的示例代码。firebase_app_installations
插件允许你获取Firebase应用安装的唯一标识符,这对于安装跟踪和用户行为分析非常有用。
首先,确保你已经在pubspec.yaml
文件中添加了firebase_core
和firebase_app_installations
依赖项:
dependencies:
flutter:
sdk: flutter
firebase_core: ^x.y.z # 请替换为最新版本号
firebase_app_installations: ^x.y.z # 请替换为最新版本号
然后,运行flutter pub get
来安装这些依赖项。
接下来,你需要配置Firebase项目。确保你的Flutter应用已经在Firebase控制台中注册,并下载了google-services.json
文件(对于Android)和GoogleService-Info.plist
文件(对于iOS),并将它们放置在项目的android/app/
和ios/Runner/
目录下。
在你的Flutter应用中,你可以使用以下代码来获取Firebase应用安装标识符:
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_app_installations/firebase_app_installations.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Firebase应用
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String installationId = '';
@override
void initState() {
super.initState();
// 获取Firebase应用安装标识符
_getInstallationId();
}
Future<void> _getInstallationId() async {
try {
final Installation installation = await FirebaseAppInstallations.instance.getId();
setState(() {
installationId = installation.id;
});
print('Firebase Installation ID: ${installation.id}');
} catch (e) {
print('Error getting Firebase Installation ID: $e');
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Firebase App Installations Example'),
),
body: Center(
child: Text('Firebase Installation ID: $installationId'),
),
),
);
}
}
在上面的代码中,我们首先初始化了Firebase应用,然后在_MyAppState
类的initState
方法中调用_getInstallationId
函数来获取Firebase应用安装标识符。获取到的标识符会被保存在installationId
变量中,并在UI中显示。
注意:
FirebaseAppInstallations.instance.getId()
方法返回一个包含安装ID的Installation
对象。- 在实际使用中,你可能会希望将这个安装ID发送到你的后端服务器进行进一步的处理和分析。
- 请确保你的Firebase项目配置正确,并且Flutter应用具有访问Firebase服务的权限。
这样,你就可以在Flutter应用中使用firebase_app_installations
插件来跟踪应用安装了。