Flutter推送通知插件jpush_flutter_android的使用
Flutter推送通知插件jpush_flutter_android的使用
简介
集成极光推送的 Android 厂商通道 SDK 的 Flutter 插件。
环境要求
需与 jpush_flutter 3.1.8
插件配合使用。
版本对应关系
jpush_flutter | jpush_flutter_android |
---|---|
3.1.8 | 0.0.3 |
3.0.9-3.1.7 | 0.0.1 |
快速开始
添加依赖
将 jpush_flutter_android
添加至 pubspec.yaml
引用:
dependencies:
jpush_flutter_android: ^latest_version
# jpush_android:
# huawei:
# enable: false # 默认为true,可不写
# xiaomi:
# enable: false # 默认为true,可不写
# meizu:
# enable: false # 默认为true,可不写
# vivo:
# enable: false # 默认为true,可不写
# oppo:
# enable: false # 默认为true,可不写
# honor:
# enable: false # 默认为true,可不写
相关配置
配置参数
在 build.gradle
中添加如下参数:
android {
......
defaultConfig {
applicationId = "xx.xx.xx"
......
manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "你的 Appkey", // JPush 上注册的包名对应的 Appkey.
JPUSH_CHANNEL : "developer-default", // 暂时填写默认值即可.
XIAOMI_APPKEY : "您的应用对应的小米的APPKEY",
XIAOMI_APPID : "您的应用对应的小米的APPID",
MEIZU_APPKEY : "MZ-您的应用对应的魅族的APPKEY",
MEIZU_APPID : "MZ-您的应用对应的魅族的APPID",
VIVO_APPKEY : "您的应用对应的VIVO的APPKEY",
VIVO_APPID : "您的应用对应的VIVO的APPID",
OPPO_APPKEY : "OP-您的应用对应的OPPO的APPKEY",
OPPO_APPID : "OP-您的应用对应的OPPO的APPID",
OPPO_APPSECRET : "OP-您的应用对应的OPPO的APPSECRET",
HONOR_APPID : "您的应用对应的Honor的APPID"
]
}
}
后续可能会支持在
pubspec.yaml
中添加这些参数,暂不支持。
配置代码混淆
代码混淆已集成在插件内,无须额外配置。
配置权限
所需的基础权限已经集成在配置的 jar 文件包内,无须额外配置。
配置华为推送
配置 agconnect-services.json
文件
参考 厂商通道参数申请指南 获取 agconnect-services.json
文件,并配置到 app 目录下。
完整示例 Demo
以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 jpush_flutter_android
插件:
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:jpush_flutter_android/jpush_flutter_android.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
final _jPushFlutterAndroidPlugin = JPushFlutterAndroid();
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
}
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> initPlatformState() async {
String platformVersion;
// Platform messages may fail, so we use a try/catch PlatformException.
// We also handle the message potentially returning null.
try {
platformVersion =
await _jPushFlutterAndroidPlugin.getPlatformVersion() ?? 'Unknown platform version';
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Text('Running on: $_platformVersion\n'),
),
),
);
}
}
更多关于Flutter推送通知插件jpush_flutter_android的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter推送通知插件jpush_flutter_android的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用jpush_flutter_android
插件来实现推送通知的一个代码案例。请注意,这个例子假设你已经有一个基本的Flutter项目结构,并且已经完成了Android的基本配置。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加jpush_flutter_android
依赖:
dependencies:
flutter:
sdk: flutter
jpush_flutter_android: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Android项目
2.1 在android/app/src/main/AndroidManifest.xml
中添加必要的权限和JPush的配置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yourapp">
<!-- 添加必要的权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- JPush Service -->
<service
android:name="cn.jpush.android.service.DownloadService"
android:enabled="true"
android:exported="false" >
</service>
<service
android:name="cn.jpush.android.service.PushService"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="cn.jpush.android.intent.REGISTER" />
<action android:name="cn.jpush.android.intent.UNREGISTER" />
<action android:name="cn.jpush.android.intent.UPDATE_REGISTRATION" />
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
<action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" />
<category android:name="com.example.yourapp" />
</intent-filter>
</service>
<receiver android:name="cn.jpush.android.api.JPushReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="cn.jpush.android.intent.REGISTRATION" />
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPEN" />
<action android:name="cn.jpush.android.intent.CONNECTION" />
</intent-filter>
</receiver>
<!-- 其他配置 -->
</manifest>
2.2 在android/app/build.gradle
中添加JPush的Maven仓库和依赖:
allprojects {
repositories {
google()
jcenter()
maven { url 'https://registry.jpush.io/repository/maven-releases/' }
}
}
dependencies {
implementation 'cn.jiguang.sdk:jpush:3.9.3' // 请替换为实际的最新版本号
implementation 'cn.jiguang.sdk:jcore:2.8.5' // 请替换为实际的最新版本号
}
3. 初始化JPush
在你的Flutter项目的main.dart
文件中初始化JPush:
import 'package:flutter/material.dart';
import 'package:jpush_flutter_android/jpush_flutter_android.dart';
void main() {
runApp(MyApp());
// 初始化JPush
_initJPush();
}
void _initJPush() async {
// 在这里替换为你的AppKey
String appKey = "your_app_key_here";
bool result = await JPushFlutterAndroid.init(appKey);
if (result) {
print("JPush 初始化成功");
} else {
print("JPush 初始化失败");
}
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: Text('Hello, Flutter with JPush!'),
),
);
}
}
4. 处理推送通知
为了处理接收到的推送通知,你可以使用JPushFlutterAndroid.addNotificationListener
来添加一个监听器:
void _initJPush() async {
String appKey = "your_app_key_here";
bool result = await JPushFlutterAndroid.init(appKey);
if (result) {
print("JPush 初始化成功");
// 添加通知监听器
JPushFlutterAndroid.addNotificationListener((message) {
print("Received notification: $message");
// 在这里处理你的通知逻辑
});
} else {
print("JPush 初始化失败");
}
}
总结
以上代码展示了如何在Flutter项目中使用jpush_flutter_android
插件来实现推送通知的基本步骤。这包括添加依赖、配置Android项目、初始化JPush以及处理接收到的推送通知。请确保你替换了your_app_key_here
为你的实际JPush AppKey,并根据需要调整代码。