flutter集成极光推送

一、简述

极光推送,英文简称 JPush,免费的第三方消息推送服务,官方也推出众多平台的SDK以及插件。

参考链接

名称地址
客户端集成插件客户端集成插件 - 极光文档

二、操作步骤

2.1 添加插件

flutter项目中集成官方提供的 极光推送flutter插件

在根目录执行以下命令

flutter pub add jpush_flutter

2.2 初始化极光推送

在项目启动入口增加以下代码块

import 'package:flutter/material.dart';
import 'package:jpush_flutter/jpush_flutter.dart';import 'index_page.dart';///程序入口
void main() => runApp(RootApp());class RootApp extends StatefulWidget{@overrideState<StatefulWidget> createState() {return RottAppState();}}class RottAppState extends State<RootApp>{///根布局的初始化@overridevoid initState() {super.initState();///创建 JPushJPush jpush = new JPush();///配置应用 Keyjpush.setup(appKey: "替换成你自己的 appKey",channel: "theChannel",production: false,/// 设置是否打印 debug 日志debug: true, );}@overrideWidget build(BuildContext context) {///来构建return MaterialApp(///应用程序默认显示的页面home: IndexPage(),);}
}

2.3 配置 flutter

2.3.1 Android项目

在 android 目录下配置 build.gradle

android: {....defaultConfig {applicationId "替换成自己应用 ID"...ndk {//选择要添加的对应 cpu 类型的 .so 库。abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a',        }manifestPlaceholders = [JPUSH_PKGNAME : applicationId,JPUSH_APPKEY : "appkey", // NOTE: JPush 上注册的包名对应的 Appkey.JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.]}    
}
2.3.2 IOS项目
在 xcode8 之后需要点开推送选项: TARGETS -> Capabilities -> Push Notification 设为 on 状态

2.4 创建应用程序

在极光开发者平台中创建你的应用程序

极光开发者平台主页:portal

推送证书生成:证书设置指南 - 极光文档

2.5 常见错误

android ios 平台无法接收到推送消息

在注册推送的时候,可以先添加上接收通知消息的权限申请,申请成功权限后再进行注册。

三、JPush主要API

参考链接:https://github.com/jpush/jpush-flutter-plugin/blob/master/documents/APIs.md

3.1 初始化

添加初始化方法,调用 setup 方法会执行两个操作:

  • 初始化 JPush SDK
  • 将缓存的事件下发到 dart 环境中。

注意: 插件版本 >= 0.0.8 android 端支持在 setup 方法中动态设置 channel,动态设置的 channel 优先级比 manifestPlaceholders 中的 JPUSH_CHANNEL 优先级要高。

JPush jpush = new JPush();
jpush.setup(appKey: "替换成你自己的 appKey",channel: "theChannel",production: false,debug: false, // 设置是否打印 debug 日志);

3.2 事件监听

添加事件监听方法。

注意:addEventHandler 方法建议放到 setup 之前,其他方法需要在 setup 方法之后调用。

JPush jpush = new JPush();
jpush.addEventHandler(// 接收通知回调方法。onReceiveNotification: (Map<String, dynamic> message) async {print("flutter onReceiveNotification: $message");},// 点击通知回调方法。onOpenNotification: (Map<String, dynamic> message) async {print("flutter onOpenNotification: $message");},// 接收自定义消息回调方法。onReceiveMessage: (Map<String, dynamic> message) async {print("flutter onReceiveMessage: $message");},);

3.3 推送通知

JPush jpush = new JPush();
//获取 registrationId,这个 JPush 运行通过 registrationId 来进行推送.
jpush.getRegistrationID().then((rid) { });
//停止推送功能,调用该方法将不会接收到通知。
jpush.stopPush();
//调用 stopPush 后,可以通过 resumePush 方法恢复推送。
jpush.resumePush();//指定触发时间,添加本地推送通知。
// 延时 3 秒后触发本地通知。
var fireDate = DateTime.fromMillisecondsSinceEpoch(DateTime.now().millisecondsSinceEpoch + 3000);
var localNotification = LocalNotification(id: 234,title: 'notification title',buildId: 1,content: 'notification content',fireTime: fireDate,subtitle: 'notification subtitle', // 该参数只有在 iOS 有效badge: 5, // 该参数只有在 iOS 有效extras: {"fa": "0"} // 设置 extras ,extras 需要是 Map<String, String>);
jpush.sendLocalNotification(localNotification).then((res) {});//清楚通知栏上所有通知。
jpush.clearAllNotifications();

3.4 IOS独有

JPush jpush = new JPush();
//申请推送权限,注意这个方法只会向用户弹出一次推送权限请求(如果用户不同意,之后只能用户到设置页面里面勾选相应权限),需要开发者选择合适的时机调用。
jpush.applyPushAuthority(new NotificationSettingsIOS(sound: true,alert: true,badge: true));//设置应用 badge 值,该方法还会同步 JPush 服务器的的 badge 值,JPush 服务器的 badge 值用于推送 badge 自动 +1 时会用到。
jpush.setBadge(66).then((map) {});//获取 iOS 点击推送启动应用的那条通知。
jpush.getLaunchAppNotification().then((map) {});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/57569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

能源管理系统

一、介绍 基于SpringCloud的能管管理系统-能源管理平台源码-能源在线监测平台-双碳平台源码-SpringCloud全家桶-能管管理系统源码 二、软件架构 二、功能介绍 三、数字大屏展示 四、数据采集原理 五、软件截图

小渡Al论文写作:50个GPT学术指令——1天搞定1篇论文

选题与研究方向 假设你是某高校某专业的教授&#xff0c;请根据我感兴趣的研究方向&#xff0c;为我提供10个新颖且有研究意义的论文选题。我对某个选题感兴趣&#xff0c;请列举几个该领域当前的研究热点和争议点供我选择。假设我是某专业本科生/研究生&#xff0c;请为我提供…

springboot集成pdfbox解析pdf文件

springboot集成pdfbox解析pdf文件 1、引入依赖2、获取PDF文件3、获取需要的字段信息4、获取多字段时&#xff0c;步骤3需要优化&#xff0c;以下为优化后代码 1、引入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</a…

iconfont图标放置在某个元素的最右边

在网页设计中&#xff0c;如果你想要将iconfont图标放置在某个元素的最右边&#xff0c;你可以通过CSS来实现这个布局。以下是一些基本的CSS代码示例&#xff0c;它们可以帮助你根据不同的布局需求将图标放置在最右边&#xff1a; 内联元素&#xff08;如<span>&#xff…

perl读取目录,写入文件

perl读取目录&#xff0c;写入文件 此脚本有两个输入参数&#xff0c;第一个参数为需要打印的文件目录&#xff0c;第二个参数为打印后的文件名&#xff1b; 该脚本名称为out_file_full_path #!/bin/perluse 5.010; my $dir $ARGV[0]; # 此为第一个参数&#xff1b; opendi…

Unreal Engine5安装Niagara UI Renderer插件

系列文章目录 文章目录 系列文章目录前言一、如何下载安装Niagara UI Renderer插件 前言 在2024.10.24号的今天发现unreal engine官网已经没有虚幻商城了&#xff0c;取而代之的是FAB ‌虚幻商城已经停止运营&#xff0c;Epic Games推出了新的数字资产商店FAB。‌ Epic Games…

Python URL编码

在 Python 中&#xff0c;可以使用 urllib.parse模块对 URL 进行编码。 一、依赖安装 pip install urllib 二、URL编码 from urllib.parse import quoteurl rhttps://myshop.com/shop/shopList?query query {"id":14,"pageSize":10,"pageNum&quo…

【论文+源码】基于SSM+VUE的大学生兼职管理系统

创建一个大学生兼职管理系统&#xff0c;结合 SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架和 Vue.js 前端框架&#xff0c;可以分为几个主要步骤来实现。 第一部分&#xff1a;环境准备 1. 开发环境准备 Java JDK&#xff1a;确保已安装 Java 8 或更高版本。…

2024软考网络工程师笔记 - 第8章.网络安全

文章目录 网络安全基础1️⃣网络安全威胁类型2️⃣网络攻击类型3️⃣安全目标与技术 &#x1f551;现代加密技术1️⃣私钥密码/对称密码体制2️⃣对称加密算法总结3️⃣公钥密码/非对称密码4️⃣混合密码5️⃣国产加密算法 - SM 系列6️⃣认证7️⃣基于公钥的认证 &#x1f552…

从0开始深度学习(19)——参数管理

在选择了模型架构&#xff0c;并设置了超参数之后&#xff0c;就进入了训练阶段&#xff0c;此时&#xff0c;我们的目标是找到使损失函数最小化的模型参数值。 经过训练后&#xff0c;我们将需要使用这些参数来做出未来的预测。 此外&#xff0c;有时我们希望提取参数&#xf…

电子商务类型

常见电子商务类型及其代表性的例子&#xff1a; B2B&#xff08;Business to Business&#xff09; 定义&#xff1a;B2B 模式是指企业与企业之间的商业交易。在这种模式下&#xff0c;企业通过电子商务平台相互提供产品或服务。 特点&#xff1a; 大宗交易&#xff1a;通常…

数据结构 ——— 顺序表和链表的区别以及各自的优缺点

目录 顺序表和链表的区别 一、存储空间上 二、下标的随机访问 三、任意位置插入或者删除元素 四、添加数据 五、应用场景 六、缓存利用率 顺序表和链表的优缺点 顺序表的缺点 链表的优点&#xff08;和顺序表的缺点对应&#xff09; 顺序表的优点 链表的缺点&#…

背包九讲——完全背包问题

目录 完全背包问题 问题定义 动态规划解法 状态转移方程 初始化 遍历顺序 三种解法&#xff1a; 朴素版——枚举k 进阶版——dp正推&#xff08;一维滚动数组&#xff09; 背包问题第三讲——完全背包问题 背包问题是一类经典的组合优化问题&#xff0c;通常涉及在限定…

简介openwrt系统下/etc/config/network文件生成过程

openwrt的network文件&#xff0c;或者说在/etc/config下的文件&#xff0c;都是动态生成的。 脚本的函数定义在package/base-files/files/lib/functions中&#xff0c;有以下几个文件&#xff1a; libraSVN:~/Wang_SP4/openwrt-d03dc49/package/base-files/files/lib/functi…

【Linux笔记】Linux命令与使用

博文将不断学习补充 学习参考博文&#xff1a; Linux命令大全&#xff1a;掌握常用命令&#xff0c;轻松使用Linux操作系统-CSDN博客 文件或目录操作命令 zip # zip是使用最多的文档压缩格式 # 方便跨平台使用&#xff0c;但是压缩率不是很高 zip指令未安装 安装zip yum ins…

python实战项目47:Selenium采集百度股市通数据

python实战项目47:Selenium采集百度股市通数据 一、思路分析二、完整代码一、思路分析 这里以获取百度股市通股评下的投票数据为例,页面中的其他数据同理。由于此页面数据是js动态加载的,所以采用Selenium获取数据。思路很简单,通过Selenium打开页面,然后定位到“股评”选…

Python闭包和修饰器

Python闭包和装饰器详解 1. 闭包&#xff08;Closure&#xff09; 闭包是Python中一个重要的概念&#xff0c;涉及嵌套函数和变量的作用域。 概念&#xff1a; 内外函数嵌套&#xff1a;闭包的形成通常涉及到一个外部函数和一个内部函数。内函数引用外函数作用域下的非全局变…

没有B柱?极氪MIX太大胆了!

文 | AUTO芯球 作者 | 雷慢 极氪又给国产车长脸了&#xff0c; 极氪MIX上市&#xff0c;创造了多个行业先例&#xff0c; 估计把合资看得一愣一愣的&#xff0c; 哪见过这样的每月都有新技术、黑科技冒出来&#xff0c; 我看完整个发布会就一个感想&#xff0c; 家里有小…

数据结构——哈夫曼树及其应用(哈夫曼编码)

判断树&#xff1a;用来描述分类过程的二叉树 哈夫曼树&#xff08;最优二叉树&#xff09;的基本概念 路径&#xff1a;从树中一个结点到另一个结点之间的分支构成这两个结点间的路径。 结点的路径长度&#xff1a;两结点间路径上的分支数。 结点的路径长度计算&#xff1…

PDF文件为什么不能编辑是?是啥原因导致的,有何解决方法

PDF文件格式广泛应用于工作中&#xff0c;但有时候我们可能遇到无法编辑PDF文件的情况。这可能导致工作效率降低&#xff0c;特别是在需要修改文件内容时显得尤为棘手。遇到PDF不能编辑时&#xff0c;可以看看是否以下3个原因导致的。 一、文件受保护 有些PDF文件可能被设置了…