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平台,除了上述配置外,还需要:
- 在Xcode中启用Push Notifications能力
- 上传APNs证书到极光后台
- 在AppDelegate.swift中配置推送
提示:使用appuploader可以简化iOS推送证书的生成和管理过程,它提供了可视化的证书管理界面,避免手动操作的繁琐。
常见问题解决
- 收不到推送:检查appKey是否正确,确认设备网络正常,检查极光后台消息状态
- iOS推送不显示:确认证书类型匹配(开发/生产),检查设备通知权限
- Android推送延迟:检查设备后台进程是否被清理,确认集成正确
通过以上步骤,你应该已经成功在Flutter应用中集成了极光推送服务。极光推送提供了丰富的API和统计功能,可以帮助开发者更好地理解和优化推送效果。