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());
  }
}
1 回复

更多关于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 控制台中注册你的应用,并获取 PushyApp 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');
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!