Flutter极光推送插件jpush_flutter_plugin_android的使用

Flutter极光推送插件jpush_flutter_plugin_android的使用

pub package License: MIT

该插件是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

1 回复

更多关于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'),
      ),
    );
  }
}
回到顶部