Flutter推送通知插件jpush_flutter_plugin的使用
Flutter推送通知插件jpush_flutter_plugin的使用
jpush_flutter_plugin
Requirement
| Android | iOS | |
|---|---|---|
| 支持 | SDK 21+ | 12.0+ |
Usage
dart
在main()函数中初始化插件并配置相关参数:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await setDebugMode(debugMode: true); // 开启调试模式
await setAuth(auth: true); // 设置认证
await init('your appkey', 'your channel', (call) {
print('[method]: ${call.method}'); // 回调方法
});
/// 其他代码...
runApp(const MyApp());
}
Android
在pubspec.yaml中添加依赖:
dependencies:
flutter:
sdk: flutter
jpush_flutter_plugin: latest
在AndroidManifest.xml中添加必要的权限和配置:
<manifest
xmlns:tools="http://schemas.android.com/tools"
>
<!-- 添加自定义权限 -->
<permission
android:name="yourpackage.permission.JPUSH_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="yourpackage.permission.JPUSH_MESSAGE" />
<!-- 必需的网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Android 13及以上版本需要的通知权限 -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<application
tools:replace="android:label"
>
<activity>
<!-- 其他Activity配置 -->
</activity>
<!-- 配置发布渠道 -->
<meta-data
android:name="JPUSH_CHANNEL"
android:value="developer-default" />
<!-- 配置AppKey -->
<meta-data
android:name="JPUSH_APPKEY"
android:value="your appkey" />
</application>
</manifest>
在build.gradle中配置NDK选项:
android {
// ...
defaultConfig {
// ...
ndk {
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}
packagingOptions {
pickFirst 'lib/x86/libjcore336.so'
pickFirst 'lib/x86_64/libjcore336.so'
pickFirst 'lib/arm64-v8a/libjcore336.so'
pickFirst 'lib/armeabi/libjcore336.so'
pickFirst 'lib/armeabi-v7a/libjcore336.so'
}
}
iOS
在Info.plist中添加必要的键值对:
<dict>
<key>NSUserTrackingUsageDescription</key>
<string>申请访问Tracking权限</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
</dict>
在Xcode中启用以下功能:
- Access WiFi Information
- Push Notification
完整示例Demo
以下是一个完整的示例代码,展示如何使用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:jpush_flutter_plugin/jpush_flutter_plugin.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await setDebugMode(debugMode: true); // 开启调试模式
await setAuth(auth: true); // 设置认证
await init('3d3593296cc489e91041f7b8', 'app-store', (call) {
print('[method]: ${call.method}'); // 回调方法
});
// 设置别名(可选)
Future.delayed(const Duration(seconds: 5), () async {
await setAlias(0, 'gqwyudagdasgcygewyufdgewyuqgdfqwgf');
});
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('JpushFlutterPlugin Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (_platformName == null)
const SizedBox.shrink()
else
Text(
'Platform Name: $_platformName',
style: Theme.of(context).textTheme.headline5,
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () async {
try {
final result = await getPlatformName();
setState(() => _platformName = result);
} catch (error) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
backgroundColor: Theme.of(context).primaryColor,
content: Text('$error'),
),
);
}
},
child: const Text('Get Platform Name'),
),
],
),
),
);
}
}
更多关于Flutter推送通知插件jpush_flutter_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter推送通知插件jpush_flutter_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
jpush_flutter_plugin 是一个用于在 Flutter 应用中集成极光推送(JPush)的插件。通过这个插件,你可以轻松地在 Flutter 应用中实现推送通知功能。以下是使用 jpush_flutter_plugin 的基本步骤:
1. 添加依赖
首先,在你的 pubspec.yaml 文件中添加 jpush_flutter_plugin 依赖:
dependencies:
jpush_flutter_plugin: ^version_number
将 version_number 替换为最新的插件版本号。
2. 配置 Android 项目
在 android/app/build.gradle 文件中,添加以下配置:
android {
...
defaultConfig {
...
manifestPlaceholders = [
JPUSH_PKGNAME: applicationId,
JPUSH_APPKEY : "your_jpush_appkey", // 替换为你的极光推送 AppKey
JPUSH_CHANNEL: "developer-default", // 默认渠道
]
}
...
}
3. 配置 iOS 项目
在 ios/Runner/Info.plist 文件中,添加以下配置:
<key>JPUSH_APPKEY</key>
<string>your_jpush_appkey</string> <!-- 替换为你的极光推送 AppKey -->
<key>CHANNEL</key>
<string>developer-default</string> <!-- 默认渠道 -->
<key>APS_FOR_PRODUCTION</key>
<string>0</string> <!-- 0 表示开发环境,1 表示生产环境 -->
4. 初始化 JPush
在你的 Dart 代码中,初始化 JPush:
import 'package:jpush_flutter_plugin/jpush_flutter_plugin.dart';
final JPush jpush = JPush();
void initJPush() async {
jpush.setup(
appKey: "your_jpush_appkey", // 替换为你的极光推送 AppKey
channel: "developer-default",
production: false, // 开发环境为 false,生产环境为 true
debug: true, // 设置为 true 以打印调试日志
);
jpush.applyPushAuthority(
JPushNotificationSettingsIOS(
sound: true,
alert: true,
badge: true,
),
);
jpush.getRegistrationID().then((rid) {
print("Registration ID: $rid");
});
jpush.setEventHandler(
onReceiveNotification: (Map<String, dynamic> message) async {
print("收到通知: $message");
},
onOpenNotification: (Map<String, dynamic> message) async {
print("点击通知: $message");
},
onReceiveMessage: (Map<String, dynamic> message) async {
print("收到自定义消息: $message");
},
);
}
void main() {
WidgetsFlutterBinding.ensureInitialized();
initJPush();
runApp(MyApp());
}

