Flutter中极光推送的使用----jpush_flutter

Flutter中集成极光推送的完整指南

1、申请极光账号和创建应用

极光推送(JPush)是国内领先的移动消息推送服务,为开发者提供稳定高效的推送解决方案。要使用极光推送服务,首先需要访问极光官网注册账号。

注册完成后,进入"服务中心"→"开发者平台",点击创建新应用。在创建应用时需要填写应用名称和上传应用图标。创建完成后,极光平台会提供两个关键信息:

  • appKey:移动客户端使用的key
  • Master Secret:服务端使用的key(仅服务端开发需要)

小技巧:如果你使用appuploader这类iOS开发工具,可以在配置推送证书时同步设置极光推送的相关参数,这样能提高开发效率。

2、添加项目依赖

极光推送为Flutter提供了官方插件jpush-flutter-plugin。在pubspec.yaml文件中添加以下依赖:

yaml 复制代码
dependencies:
  jpush_flutter: ^0.0.11

添加完成后,在Android Studio中执行"Packages get"下载依赖。

3、Android项目配置

打开android/app/src/build.gradle文件,在defaultConfig中添加以下配置:

groovy 复制代码
defaultConfig {
    applicationId "your.package.name"
    minSdkVersion 16
    targetSdkVersion 28
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
    
    ndk {
        abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64'
    }

    manifestPlaceholders = [
        JPUSH_PKGNAME: applicationId,
        JPUSH_APPKEY : "你的极光appKey",
        JPUSH_CHANNEL: "developer-default",
    ]
}

4、实现推送功能

基本推送实现

在main.dart中引入极光推送包并初始化:

dart 复制代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:jpush_flutter/jpush_flutter.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String debugLable = 'Unknown';
  final JPush jpush = JPush();
  
  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  Future<void> initPlatformState() async {
    try {
      jpush.addEventHandler(
        onReceiveNotification: (Map<String, dynamic> message) async {
          print("接收到推送: $message");
          setState(() {
            debugLable = "接收到推送: $message";
          });
        }
      );
    } on PlatformException {
      debugLable = '平台版本获取失败';
    }
  }
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('极光推送')),
        body: Center(
          child: Column(
            children: [
              Text('结果: $debugLable\n'),
              ElevatedButton(
                child: Text('发送测试推送'),
                onPressed: () {
                  var fireDate = DateTime.fromMillisecondsSinceEpoch(
                    DateTime.now().millisecondsSinceEpoch + 3000);
                  var localNotification = LocalNotification(
                    id: 234,
                    title: '测试标题',
                    buildId: 1,
                    content: '测试内容',
                    fireTime: fireDate,
                    subtitle: '子标题',
                  );
                  jpush.sendLocalNotification(localNotification);
                }
              ),
            ]
          )
        ),
      ),
    );
  }
}

高级功能实现

接收推送提醒
dart 复制代码
void _ReceiveNotification() async {
  jpush.addEventHandler(
    onReceiveNotification: (Map<String, dynamic> message) async {
      print("收到推送: $message");
    }
  );
}
处理推送点击事件
dart 复制代码
void _OpenNotification() async {
  jpush.addEventHandler(
    onOpenNotification: (Map<String, dynamic> message) async {
      print("用户点击了推送: $message");
      // 这里可以添加页面跳转逻辑
    }
  );
}
接收自定义消息
dart 复制代码
void _ReceiveCustomMsg() async {
  jpush.addEventHandler(
    onReceiveMessage: (Map<String, dynamic> message) async {
      print("收到自定义消息: $message");
    }
  );
}

5、iOS特殊配置

对于iOS平台,除了上述配置外,还需要:

  1. 在Xcode中启用Push Notifications能力
  2. 上传APNs证书到极光后台
  3. 在AppDelegate.swift中配置推送

提示:使用appuploader可以简化iOS推送证书的生成和管理过程,它提供了可视化的证书管理界面,避免手动操作的繁琐。

常见问题解决

  1. 收不到推送:检查appKey是否正确,确认设备网络正常,检查极光后台消息状态
  2. iOS推送不显示:确认证书类型匹配(开发/生产),检查设备通知权限
  3. Android推送延迟:检查设备后台进程是否被清理,确认集成正确

通过以上步骤,你应该已经成功在Flutter应用中集成了极光推送服务。极光推送提供了丰富的API和统计功能,可以帮助开发者更好地理解和优化推送效果。

相关推荐
写Cpp的小黑黑21 小时前
WebSocket 连通性测试方法
后端
开心就好202521 小时前
Windows 上传 IPA 到 App Store 的步骤讲解
后端·ios
听风者就是我21 小时前
混合检索:关键词 + 向量的最佳组合
后端·ai编程
Memory_荒年21 小时前
当餐厅后厨也懂分布式:SpringBoot中的重试、限流、熔断与幂等的“四重奏”
java·后端·spring
刘晓飞21 小时前
nestjs 中的 rxjs
后端
编码忘我1 天前
java策略模式实战之优惠券
java·后端
anzhxu1 天前
SpringBoot 3.x 整合swagger
java·spring boot·后端
青椒啊1 天前
DPDK入门到精通(一)
后端
小江的记录本1 天前
【Bean】JavaBean(原生规范)/ Spring Bean 【重点】/ 企业级Bean(EJB/Jakarta Bean)
java·数据库·spring boot·后端·spring·spring cloud·mybatis
中国胖子风清扬1 天前
Camunda 8 概念详解:梳理新一代工作流引擎的核心概念与组件
java·spring boot·后端·spring cloud·ai·云原生·spring webflux