Flutter教程Android极光推送的配置

在Flutter项目中配置Android极光推送时,遇到了几个问题需要请教:

  1. 按照官方文档集成JPush插件后,Android端始终收不到推送通知,但iOS正常。已在AndroidManifest.xml中配置了AppKey和渠道,是否需要额外设置?
  2. 测试推送时,后台显示消息已送达,但手机状态栏不显示通知。是否必须配置NotificationChannel?如何正确设置优先级和分类?
  3. 在华为设备上,关闭应用后无法接收推送(其他品牌正常),是否需要单独集成华为推送通道?具体如何兼容?
  4. 本地调试时Logcat打印Registration ID为空,但未发现明显错误日志。可能是什么原因导致的?

更多关于Flutter教程Android极光推送的配置的实战教程也可以访问 https://www.itying.com/category-92-b0.html

3 回复

首先,在极光推送官网注册账号并创建应用,获取AppKey。接着,在Flutter项目中添加flutter_local_notificationsjpush_flutter插件。

  1. 初始化:在主文件中调用JPUSH.init()初始化推送服务。
  2. 设置别名与标签:通过JPUSH.setAlias()JPUSH.setTags()设置用户相关信息。
  3. 接收通知:重写onReceiveNotificationMessage方法处理通知。
  4. Android配置
    • AndroidManifest.xml中添加权限与服务。
    • 设置<meta-data android:name="JPUSH_APPKEY" ... />
    • 配置android:protectionLevel="signature"的广播接收器。
  5. 测试推送:使用极光后台发送通知,检查应用是否正确接收。

记得测试时清理应用缓存,确保推送机制正常工作。

更多关于Flutter教程Android极光推送的配置的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


配置Flutter项目中的极光推送(JPush)分为客户端和服务器端两部分:

1. 客户端配置(Android):

  • 添加依赖:在pubspec.yaml中加入jpush_flutter插件。
  • AndroidManifest.xml配置:添加权限、注册广播接收器,并在application标签内配置<meta-data>声明appkey。
  • 初始化:在主Activity的onCreate方法中初始化JPush。

2. 服务器端配置:

  • 登录极光推送官网,创建应用获取AppKey。
  • 使用官方提供的API Key生成服务端SDK。
  • 编写后端代码实现消息推送功能。

注意事项:

  • 确保包名与签名一致。
  • 测试环境与生产环境需分别配置。
  • iOS也需要单独配置证书。

Flutter 中配置极光推送(Android)

要在 Flutter 中配置 Android 平台的极光推送(JPush),请按照以下步骤操作:

1. 添加依赖

pubspec.yaml 中添加极光推送插件:

dependencies:
  jpush_flutter: ^2.3.0  # 请使用最新版本

2. Android配置

修改 AndroidManifest.xml

android/app/src/main/AndroidManifest.xml 中添加以下内容:

<!-- 权限 -->
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

<!-- 极光推送配置 -->
<meta-data
    android:name="JPUSH_CHANNEL"
    android:value="developer-default" />
<meta-data
    android:name="JPUSH_APPKEY"
    android:value="your_app_key" /> <!-- 替换为你的AppKey -->

修改 build.gradle

android/app/build.gradle 中设置 minSdkVersion 至少为 16:

defaultConfig {
    applicationId "your.package.name"
    minSdkVersion 16  // 确保至少为16
    targetSdkVersion flutter.targetSdkVersion
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
}

3. 初始化代码

在 Dart 代码中初始化极光推送:

import 'package:jpush_flutter/jpush_flutter.dart';

final JPush jpush = JPush();

void initPlatformState() async {
  try {
    jpush.addEventHandler(
      onReceiveNotification: (Map<String, dynamic> message) async {
        print("收到推送: $message");
      },
      onOpenNotification: (Map<String, dynamic> message) async {
        print("点击推送: $message");
      },
    );
    
    await jpush.setup(
      appKey: "your_app_key",  // 替换为你的AppKey
      channel: "developer-default",
      production: false,  // 开发环境设为false
    );
    
    jpush.applyPushAuthority();
  } catch (e) {
    print("极光推送初始化失败: $e");
  }
}

4. 获取RegistrationID

String registrationId = await jpush.getRegistrationID();
print("设备注册ID: $registrationId");

记得在极光推送官网注册应用并获取AppKey,替换代码中的占位符。测试时可以在极光推送控制台发送测试推送。

回到顶部