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) {}); |
相关文章:
flutter集成极光推送
一、简述 极光推送,英文简称 JPush,免费的第三方消息推送服务,官方也推出众多平台的SDK以及插件。 参考链接 名称地址客户端集成插件客户端集成插件 - 极光文档 二、操作步骤 2.1 添加插件 flutter项目中集成官方提供的 极光推送flutte…...
D. Skipping 【 Codeforces Round 980 (Div. 2)】
D. Skipping 思路: 注意到最佳策略是先往右跳转到某处,然后按顺序从右往左把没有遇到过的题目全部提交。 将从 i i i跳转到 b [ i ] b[i] b[i]视为通过边权(代价)为 a [ i ] a[i] a[i]的路径,而向左的路径边权都是 0 0 0;目的是找到到从出发…...
【golang】学习文档整理
Binding | Echo 传值时注意零值和传空的区别 需要validate require 和 设置指针配合使用 保证不同值的返回不同 不能客户端传0值被判断为空 测试时要空值零值去测试字段是否正确返回 返回错误是否符合预期...
动态规划-子序列问题——1218.最长定差子序列
1.题目解析 题目来源:1218.最长定差子序列——力扣 测试用例 2.算法原理 1.状态表示 本题可以看作是寻找一个等差序列,并且公差给出,这里并不是普通的使用一个dp表,而是将arr与dp表同时存储于一个哈希表,arr[i]映射dp…...
双子塔楼宇可视化系统:提升建筑管理与运营效率
利用图扑可视化技术对双子塔楼宇的各项功能进行实时监控和管理。通过数据分析优化资源配置,提高能源效率,增强楼宇安全性,实现智能化运营。...
32位的ARMlinux的4字节变量原子访问问题
在32位的ARM Linux内核中,4字节整型变量通常被认为是原子操作。 这主要是因为: 对齐要求:在ARM架构中,4字节整型变量通常是按4字节对齐存储的,这样可以确保在读取和写入时,CPU能够以单个指令完成操作。 …...
用哪种建站程序做谷歌SEO更容易?
做网站很容易,但做一个能带来流量和订单的网站就没那么简单了。尤其是在谷歌SEO优化方面,不同的建站程序对SEO的支持程度也不同。在这方面,WordPress和Shopify无疑是最佳选择。 WordPress作为一个内容管理系统(CMS)&am…...
IPsec简单介绍
VPN相关介绍 VPN:虚拟私有网络 例如:像这种不加密的 PPTPL2TP ------- 一般用在windows server 服务端(但是大多数企业不用这个) 假如总公司内部的PC1要去访问分公司内部的PC2(一般用在公司服务器有内网的服务&#…...
颠覆级AI:10秒生成超清视频
颠覆级AI:10秒生成超清视频 Pyramid-Flow 是一款开源 AI 视频生成神器💻,只需文字或图片即可极速生成高清视频🎥!高效、高清、资源需求低,适合创作广告、教学视频等多种用途🚀,快来…...
《西安科技大学学报》
《西安科技大学学报》主要刊载安全科学与工程、矿业工程、建筑与土木工程、地质与环境工程、测绘工程、材料科学与工程、化学与化工、机械工程、电气工程及自动化、通信与信息工程、计算机科学与工程、矿业经济管理等专业领域内具有创新性的学术论文和科研成果。 来稿必须符合以…...
redis详细教程(2.List教程)
List是一种可以存储多个有序字符串的数据类型,其中的元素按照顺序排列(可以重复出现),可以通过数字索引来访问列表中的元素,索引可以从左到右或者从右到左。 Redis 列表可以通过两种方式实现:压缩列表&…...
电子电气架构 --- 电气系统工程
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...
15-4连续子串和的整除问题
问题描述 小M是一个五年级的小学生,今天他学习了整除的知识,想通过一些练习来巩固自己的理解。他写下了一个长度为 n 的正整数序列 a_0, a_1, ..., a_{n-1},然后想知道有多少个连续子序列的和能够被一个给定的正整数 b 整除。你能帮小M解决这…...
Spring源码:Bean创建、Bean获取
Bean是怎么被创建,如何获取Bean,基于Spring 5.3.24版本,Spring Boot 可用 2.7.6 结论: 创建:非懒加载的单实例bean在容器创建的时候创建,通过beanFactory的doGetBean方法,利用反射进行创建&…...
MetaArena推出《Final Glory》:引领Web3游戏技术新风向
随着区块链技术的日益成熟,Web3游戏成为了游戏产业探索的新方向,将去中心化经济与虚拟世界结合在一起,形成了一个全新的生态体系。然而,尽管Web3游戏展示了令人兴奋的可能性,但其背后的技术障碍依旧严峻,特…...
玩转Shodan:深度挖掘特定漏洞与脆弱资产的实战技巧
内容预览 ≧∀≦ゞ Shodan进阶使用之发现并解锁隐藏的脆弱资产声明导语VNC未授权访问查询被黑的网站查询思科未授权设备查询MongoDB未授权访问搜索后台管理页面结语 Shodan进阶使用之发现并解锁隐藏的脆弱资产 声明 笔记内容参考了B站UP主泷羽sec的学习视频,如有侵…...
Java程序设计:spring boot(8)——API ⽂档构建⼯具 - Swagger2
目录 1 环境整合配置 2 Swagger2 常⽤注解说明 2.1 Api 2.2 ApiOperation 2.3 ApiImplicitParams 2.4 ApiResponses 2.5 ApiModel 3 用户模块注解配置 3.1 Controller 使用注解 3.2 JavaBean 使用注解 4 Swagger2 接⼝⽂档访问 由于 Spring Boot 能够快速开发、便捷…...
【Python】if选择判断结构详解:逻辑分支与条件判断
目录 🍔 if选择判断结构作用 1.1 if选择判断结构的基本语法 1.2 if选择结构案例 1.3 if...else...结构 1.4 if...elif...else多条件判断结构 1.5 if嵌套结构 🍔 综合案例:石头剪刀布 2.1 需求分析 2.2 代码实现 2.3 随机出拳 &…...
邮件系统SSL加密传输,保护你的电子邮件免受网络威胁
在互联网的浪潮中,企业数字化转型的步伐不断加快。企业邮箱作为数字化应用的重要组成部分,已成为员工沟通、协同工作和企业管理的关键工具。但是在公共网络安全性普遍较弱的背景下,黑客容易侵入企业网络,监控流量,截获…...
Redis_写时复制(cow)
Redis会根据配置,每隔一段时间中对Redis服务中当下的数据集进行快照。配置自动生成rdb文件,后台使用的是bgsave方式。 save 60 1000 //关闭RDB只需要将所有的save保存策略注释掉即可Redis借助操作系统提供的写时复制技术(Copy-On-Write, COW…...
AgentCPM深度研报助手10分钟快速部署教程:基于CSDN星图GPU平台
AgentCPM深度研报助手10分钟快速部署教程:基于CSDN星图GPU平台 你是不是也遇到过这种情况?面对海量的行业报告、公司财报,想快速提炼核心观点,却感觉无从下手,或者需要花费大量时间手动整理。现在,有了AI助…...
终极指南:如何让2007年旧Mac运行最新macOS系统
终极指南:如何让2007年旧Mac运行最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为那台陪伴多年的老Mac无法升级最新系统而烦恼吗࿱…...
告别迷茫!Java程序员入门AI的完整学习地图
文章目录前言一、先破三个心魔:Java搞AI到底靠不靠谱?心魔一:AI都是Python的天下,Java只能看戏?心魔二:必须得回炉重造学数学?心魔三:要从Hello World开始学Python?二、J…...
vLLM-v0.17.1惊艳效果:束搜索+并行采样在长文本生成中的稳定性展示
vLLM-v0.17.1惊艳效果:束搜索并行采样在长文本生成中的稳定性展示 1. vLLM框架核心能力概览 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,其最新版本v0.17.1在长文本生成稳定性方面取得了显著突破。这个开源项目最初由加州大学伯克利分校…...
4 大平台 “免费拿” 玩法大拆解,看完不踩坑
现在很多平台都有 “0元领东西” 的活动,玩法不一样,难度也差很多。今天用大白话对比拼dd、淘b、京d、全能锦鲤,简单易懂,看完就知道该选哪个。一、各平台免费拿怎么玩?1. 拼dd(老牌砍价)玩法&a…...
Gemma-3 Pixel Studio镜像免配置:开箱即用的12B多模态推理工作站
Gemma-3 Pixel Studio镜像免配置:开箱即用的12B多模态推理工作站 1. 产品概览 Gemma-3 Pixel Studio是基于Google最新开源Gemma-3-12b-it模型构建的高性能多模态对话终端。这个预配置的Docker镜像消除了复杂的部署流程,让用户能够立即体验12B参数大模型…...
OpenClaw故障自愈方案:Qwen3-32B镜像异常重启监控
OpenClaw故障自愈方案:Qwen3-32B镜像异常重启监控 1. 问题背景与解决思路 上周我的OpenClaw自动化助手突然"罢工"了——原本应该定时执行的日报生成任务没有按时完成。排查后发现是底层Qwen3-32B模型服务因OOM异常退出。这种情况在长期运行的AI服务中并…...
参数估计实战:从置信区间构建到样本量计算的完整指南
1. 参数估计的核心逻辑:从抽样到推断 第一次接触参数估计时,我盯着那个95%置信区间看了半小时——它既不像天气预报的降水概率,也不像考试分数的百分比排名。后来在分析用户行为数据时才恍然大悟:参数估计本质是用样本数据给总体参…...
AI 与大模型相关
一、 AI 与大模型相关 1.1 Agent(智能体) 定义:具备自主规划、工具调用、记忆管理、任务执行能力的 AI 实体,能主动完成复杂目标。 核心能力:拆解任务、调用 API / 工具、自主决策、持久记忆、后台执行。 区别&am…...
如何用ASR6601实现22dBm发射功率?LoRa模组射频优化全流程
ASR6601射频性能深度优化:从原理到22dBm发射功率实战指南 在低功耗广域物联网(LPWAN)领域,LoRa技术凭借其出色的传输距离和抗干扰能力,已成为智慧城市、工业监测等场景的首选方案。而ASR6601作为国产化LoRa SoC的佼佼者,其集成的A…...
