Skip to main content

jpush_flutter 3.6.0 copy "jpush_flutter: ^3.6.0" to clipboard
jpush_flutter: ^3.6.0 copied to clipboard

JIGUANG officially supported JPush Flutter plugin (Android, iOS & HarmonyOS). 极光推送官方支持的 Flutter 插件(Android、iOS 与鸿蒙)(https://www.jiguang.cn).

QQ Group

JPush Flutter Plugin #

flutter 3.0 请切换至 dev-3.x 分支。

安装 #

在工程 pubspec.yaml 中加入 dependencies

  
//github  集成
dependencies:
  jpush_flutter:
    git:
      url: git://github.com/jpush/jpush-flutter-plugin.git
      ref: dev-3.x
      
// pub 集成
dependencies:
  jpush_flutter: 3.6.0

配置 #

Android:

在 /android/app/build.gradle 中添加下列代码:

android: {
  ....
  defaultConfig {
    applicationId "替换成自己应用 ID"
    ...
    manifestPlaceholders = [
        JPUSH_PKGNAME : applicationId,
        JPUSH_APPKEY : "appkey", // NOTE: JPush 上注册的包名对应的 Appkey.
        JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
    ]
  }    

注意(Flutter 3.29+ 厂商通道点击白屏问题):Flutter 3.29 起 FlutterActivity 默认开启深链接(flutter_deeplinking_enabled 默认值变为 true)。App 进程被杀后点击厂商通道(如华为)离线推送时,拉起应用的 intent 携带的 URI(含 n_extra 参数)会被 Flutter 当作深链接路由解析,路由表中无对应页面导致打开后白屏。若未使用 Flutter 官方深链接功能,请在 AndroidManifest.xml 的主 Activity 中显式关闭:

方式一(推荐):在 MainActivity 中重写 shouldHandleDeeplinking():

class MainActivity : FlutterActivity() {
    // 禁用 Flutter 自动 deep link 处理,避免厂商通道推送点击时
    // intent.data 被误当成 Flutter 路由导致打开 App 白屏
    override fun shouldHandleDeeplinking(): Boolean {
        return false
    }
}

方式二:在 AndroidManifest.xml 的主 Activity 中配置(与方式一等价,shouldHandleDeeplinking() 默认实现读取的就是该配置):

<activity android:name=".MainActivity" ...>
    <meta-data
        android:name="flutter_deeplinking_enabled"
        android:value="false" />
</activity>
iOS:
  • 在 xcode8 之后需要点开推送选项: TARGETS -> Capabilities -> Push Notification 设为 on 状态

如需使用 no-IDFA 版本,请使用 jpush_flutter 3.5.5 或更高版本,并在 Flutter 工程的 ios/Podfile 中显式指定 JCore:

target 'Runner' do
  pod 'JCore', '5.6.0-noidfa'
  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
Harmony:
  • Harmony

使用 #

import 'package:jpush_flutter/jpush_flutter.dart';
import 'package:jpush_flutter/jpush_interface.dart';

final JPushFlutterInterface jpush = JPush.newJPush();

APIs #

注意 : 需要先调用 JPush.setup 来初始化插件,才能保证其他功能正常工作。

参考

3.6.0 原生版本与新增接口 #

平台 JPush JCore 新增或补齐接口
Android 6.3.0 显式声明 5.6.0 requestSubscribeChannels、turnOffPush、turnOnPush、turnOnPushWithResult、initCrashHandler、stopCrashHandler
iOS CocoaPods 6.3.0 保留 >5.5.0;建议宿主明确选择 5.6.0 或 5.6.0-noidfa setLiveActivityTokenReportEnabled
iOS SPM exact 6.3.0 from 5.6.0(标准版) 同上
HarmonyOS @jg/push 1.5.0 无独立依赖 保持既有接口,通知覆盖/撤回由原生 SDK 处理

依赖声明范围不等于宿主最终解析版本,请核对 Gradle、Podfile.lock、Package.resolved 和 OHPM 锁文件。平台专有新增方法在其他平台抛出 UnsupportedError。最低平台与工具约束保持原设置。

Android 新订阅接口必须由前台 Activity 调用且已完成 SDK/厂商注册。Future 完成仅代表发起,授权结果由 onCommandResult 的 cmd=2013 返回。旧单数接口保留原来的 cmd=2012 格式;迁移详见 API 文档。

崩溃采集仅在业务显式调用 initCrashHandler 后开启。iOS 诊断开关不影响 Live Activity Token 的绑定或解绑,且本地关闭不覆盖服务端开启状态。

114
likes
120
points
11.9k
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

JIGUANG officially supported JPush Flutter plugin (Android, iOS & HarmonyOS). 极光推送官方支持的 Flutter 插件(Android、iOS 与鸿蒙)(https://www.jiguang.cn).

Homepage

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on jpush_flutter

Packages that implement jpush_flutter