Flutter极光推送插件jpush_flutter_plugin_android的使用
Flutter极光推送插件jpush_flutter_plugin_android的使用
该插件是jpush_flutter_plugin
在Android平台上的实现。
使用
这个包是经过官方推荐的,这意味着你可以直接使用jpush_flutter_plugin
。当你这样做时,这个包会自动包含在你的应用中。
以下是完整的示例代码:
// Copyright (c) 2022, Kimmy
// https://kimmy.me
//
// Use of this source code is governed by an MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT.
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:jpush_flutter_plugin_platform_interface/jpush_flutter_plugin_platform_interface.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// 启用调试模式
await JpushFlutterPluginPlatform.instance.setDebugMode(debugMode: true);
// 设置认证
await JpushFlutterPluginPlatform.instance.setAuth(auth: true);
// 初始化插件
await JpushFlutterPluginPlatform.instance.init('', '', (MethodCall call) async {
print('[method]: ${call.method}');
});
// 延迟5秒后设置别名
Future.delayed(const Duration(seconds: 5), () async {
await JpushFlutterPluginPlatform.instance.setAlias(0, 'gqwyudagdasgcygewyufdgewyuqgdfqwgd');
});
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return const MaterialApp(home: HomePage());
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
[@override](/user/override)
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String? _platformName;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('JpushFlutterPluginAndroid 示例')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 如果平台名称为空,则不显示任何内容
if (_platformName == null)
const SizedBox.shrink()
else
Text(
'平台名称: $_platformName',
style: Theme.of(context).textTheme.headline5,
),
const SizedBox(height: 16),
// 按钮用于获取平台名称
ElevatedButton(
onPressed: () async {
try {
final result = await JpushFlutterPluginPlatform.instance.getPlatformName();
setState(() => _platformName = result);
} catch (error) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
backgroundColor: Theme.of(context).primaryColor,
content: Text('$error'),
),
);
}
},
child: const Text('获取平台名称'),
),
],
),
),
);
}
}
更多关于Flutter极光推送插件jpush_flutter_plugin_android的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter极光推送插件jpush_flutter_plugin_android的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中使用极光推送(JPush)插件 jpush_flutter_plugin_android
可以帮助你轻松实现消息推送功能。以下是使用该插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 jpush_flutter_plugin_android
插件的依赖:
dependencies:
flutter:
sdk: flutter
jpush_flutter_plugin_android: ^version_number # 替换为最新版本号
然后运行 flutter pub get
来获取依赖。
2. 配置 Android 项目
在 Android 项目中,你需要进行一些配置才能正常使用极光推送。
修改 AndroidManifest.xml
在 android/app/src/main/AndroidManifest.xml
文件中添加以下配置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yourapp">
<application
android:name=".MyApplication" <!-- 如果你有自定义的Application类 -->
android:label="YourApp"
android:icon="@mipmap/ic_launcher">
<!-- 极光推送配置 -->
<meta-data
android:name="JPUSH_CHANNEL"
android:value="developer-default" />
<meta-data
android:name="JPUSH_APPKEY"
android:value="your_jpush_appkey" /> <!-- 替换为你的极光推送AppKey -->
<!-- 其他配置 -->
...
</application>
</manifest>
配置 build.gradle
在 android/app/build.gradle
文件中,确保 minSdkVersion
至少为 16:
android {
defaultConfig {
minSdkVersion 16
...
}
...
}
3. 初始化极光推送
在 Flutter 应用的 main.dart
文件中,初始化极光推送插件:
import 'package:flutter/material.dart';
import 'package:jpush_flutter_plugin_android/jpush_flutter_plugin_android.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化极光推送
JPush jpush = JPush();
await jpush.setup(
appKey: 'your_jpush_appkey', // 替换为你的极光推送AppKey
channel: 'developer-default',
production: false, // 是否为生产环境
debug: true, // 是否开启调试模式
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('JPush Example'),
),
body: Center(
child: Text('Hello, JPush!'),
),
);
}
}
4. 监听推送消息
你可以通过监听事件来处理收到的推送消息:
import 'package:flutter/material.dart';
import 'package:jpush_flutter_plugin_android/jpush_flutter_plugin_android.dart';
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
JPush jpush = JPush();
String _message = 'No message';
[@override](/user/override)
void initState() {
super.initState();
// 监听接收到的消息
jpush.addEventHandler(onReceiveMessage: (Map<String, dynamic> message) {
setState(() {
_message = message['message'];
});
});
// 监听点击通知栏事件
jpush.addEventHandler(onOpenNotification: (Map<String, dynamic> message) {
setState(() {
_message = message['message'];
});
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('JPush Example'),
),
body: Center(
child: Text('Message: $_message'),
),
);
}
}