Flutter消息推送插件fair_pushy的使用
Flutter消息推送插件fair_pushy的使用
引入SDK
使用git或者引入源码的方式:
fair_pushy:
git:
url: https://github.com/wuba/FairPushy.git
path: FairPushy/sdk
初始化SDK
在main()
函数中调用初始化方法:
FairPushy.init(
appID: '1001',
updateUrl: "https://fangfe.58.com/fairapp/module_patch_bundle",
debug: true);
- appid:web可视化平台中的项目id
- updateUrl:接入方获取补丁config文件的服务器地址
- debug:运行环境
热更新API
单module更新工程
a. 直接调用updateBundle接口:
FairPushy.updateBundle(bundleid: "6005")
- bundleid:可视化平台中模块对应的补丁唯一标识
b. 使用loading中间件,用FairPushyWidget替代根widget:
MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: FairPushyWidget(
bundleid: '6005',
targetWidgetBuilder: (context) => HomePage(),
));
多module工程
a. 进模块独立更新:
如果只使用更新API,业务方自己实现目标页loading过程,且需要目标页调用updateBundle
:
FairPushy.updateBundle(bundleid: "6005")
调用了loading中间件,需要在module间跳转的时候,可以先跳SDK中提供的中间件,中间件中实现了补丁的更新逻辑,走完更新补丁逻辑,会把目标页替换成传入的targetWidget
。
Navigator.push(context, MaterialPageRoute(builder: (context) {
return FairPushyWidget(
bundleid: BundleConst.car,
// targetPageName: "car_cate"
targetWidgetBuilder: (context) => CarCatePage());
}));
- targetPageName:module间跳转时的目标界面pagename,传入pagename需要在FairPushy中进行界面的注册,详见example示例工程
- targetWidgetBuilder:module间跳转时的目标界面widget
b. 进app全部更新:
如果接入方在多module的工程结构下,想进app就下载所有的补丁文件,可以调用getConfigs
接口获取appid对应项目下的所有补丁config信息,然后调用downloadConfig
方法进行下载。
FairPushy.getConfigs("https://fangfe.58.com/fairapp/module_patch_app").then((value) {
if (null != value && value.isNotEmpty) {
for (var i = 0; i < value.length; i++) {
FairPushy.downloadConfig(value[i]);
}
}
});
- url:业务方获取app所有资源文件的服务器地址
Fair调用
调用FairPushy.getFilePath
获取热更新文件:
FairWidget(
name: 'carcate',
path: FairPushy.getFilePath(bundleId: '6005', filename: 'car_cate'));
- filename:widget对应的文件名
完整示例Demo
以下是一个完整的示例代码,基于fair_pushy
插件的使用:
import 'package:flutter/material.dart';
import 'package:fair_pushy/fair_pushy.dart';
import 'package:fair/fair.dart';
import 'car_module/car_detail_delegate.dart';
import 'home.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化SDK
FairPushy.init(
appID: '1001',
updateUrl: "https://fangfe.58.com/fairapp/module_patch_bundle",
debug: true);
// 注册页面构建器
FairPushy.registerPageBuilders(
{"dynamic_page": (context, params) => FairWidget(path: params?['path'])});
// 启动应用
runApplication();
}
// 启动应用
void runApplication() {
FairApp.runApplication(
FairApp(
child: MyApp(),
delegate: {"car_detail": (_, data) => CarDetailDelegate()}),
plugins: {},
);
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomePage());
}
}
更多关于Flutter消息推送插件fair_pushy的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
fair_pushy
是一个用于 Flutter 应用的消息推送插件,它基于 Pushy
服务实现。Pushy
是一个跨平台的消息推送服务,支持 Android 和 iOS 设备。fair_pushy
插件可以帮助开发者轻松集成 Pushy
服务到 Flutter 应用中,实现消息推送功能。
以下是使用 fair_pushy
插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 fair_pushy
插件的依赖:
dependencies:
flutter:
sdk: flutter
fair_pushy: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 Pushy 服务
在应用的 main.dart
文件中初始化 Pushy
服务。通常,你需要在 main
函数中调用 Pushy.listen()
来启动推送服务。
import 'package:flutter/material.dart';
import 'package:fair_pushy/fair_pushy.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Pushy
await Pushy.listen();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Pushy Demo',
home: HomeScreen(),
);
}
}
3. 配置 Pushy
在 Pushy
控制台中注册你的应用,并获取 Pushy
的 App Token
。然后,在 Pushy.listen()
方法中传入 App Token
。
await Pushy.listen(appToken: 'YOUR_PUSHY_APP_TOKEN');
4. 处理推送消息
你可以通过 Pushy.setNotificationListener
来设置推送消息的监听器,处理接收到的推送消息。
Pushy.setNotificationListener((Map<String, dynamic> data) {
// 处理推送消息
print('Received notification: $data');
// 显示通知
Pushy.showNotification(
title: data['title'],
message: data['message'],
);
});
5. 注册设备
在应用启动时,你可以通过 Pushy.register
方法来注册设备,并获取设备的 Pushy Token
。这个 Pushy Token
可以用于向特定设备发送推送消息。
String pushyToken = await Pushy.register();
print('Pushy Token: $pushyToken');
6. 发送推送消息
你可以通过 Pushy
控制台或 API 向特定设备或所有设备发送推送消息。在 Pushy
控制台中,你可以选择目标设备并发送消息。
7. 处理点击通知
你可以通过 Pushy.setNotificationClickListener
来处理用户点击通知的事件。
Pushy.setNotificationClickListener((Map<String, dynamic> data) {
// 处理点击通知事件
print('Notification clicked: $data');
});
8. 处理后台消息
对于后台消息,你可以通过 Pushy.setBackgroundMessageHandler
来处理。
Pushy.setBackgroundMessageHandler((Map<String, dynamic> data) {
// 处理后台消息
print('Received background message: $data');
});
9. 处理错误
你可以通过 Pushy.setErrorListener
来监听 Pushy
服务的错误。
Pushy.setErrorListener((String error) {
// 处理错误
print('Pushy error: $error');
});