app推送以及提示音java,springboot 整合 Jpush 极光推送

产品简介:

JPush 是经过考验的大规模 App 推送平台,每天推送消息数超过 5 亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手机平台。

产品优势:

快速集成SDK,简单易用的控制台和API

提供用户自定义的标签和别名系统,以及极光自己根据数据分析出的分类目标

支持10亿级的高并发访问,多点备份保证系统稳定

有专业的技术支持团队,及时响应客户的需求和问题

这些都是人家自己说的⬆️ 还有一些统计的功能确实不错

实现比较简单

一.账号申请

二.注册 (进入官网之后右上角注册 邮箱即可)

822ad6a21d28c65e59c1f8613d600e0d.png

0ef83a039fbd7d19503bf0e79acfb712.png

三.创建应用 (注册成功后进入 默认没有应用 进行创建)

79d2e47556aaa89a505ab5e8220e9f08.png

四.查看自己应用的appkey 与 Master Secret

一会要配置在代码中类似于账号密码

f8c431ec251d11034bc8ce68eb3e2a83.png

五.项目添加pom文件

cn.jpush.api

jpush-client

3.2.17

cn.jpush.api

jiguang-common

1.1.1

六.编写通用的实现类

package com.zhuning.safetyguard.common;

import cn.jiguang.common.ClientConfig;

import cn.jiguang.common.resp.APIConnectionException;

import cn.jiguang.common.resp.APIRequestException;

import cn.jpush.api.JPushClient;

import cn.jpush.api.push.PushResult;

import cn.jpush.api.push.model.Message;

import cn.jpush.api.push.model.Options;

import cn.jpush.api.push.model.Platform;

import cn.jpush.api.push.model.PushPayload;

import cn.jpush.api.push.model.audience.Audience;

import cn.jpush.api.push.model.notification.AndroidNotification;

import cn.jpush.api.push.model.notification.IosNotification;

import cn.jpush.api.push.model.notification.Notification;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Service;

import java.util.Map;

import static com.zhuning.safetyguard.common.ErrCodeEnum.JPUSH_FAILE;

/**

* @author : Gyf

* create at: 2019-06-06 11:18

* @description: 推送通用Utils

*/

@Service

public class JPushUtils {

//TODO molly123456789@126.com 极光号

private static final String APP_KEY = "a21265452973aafa25c2b386";

private static final String MASTER_SECRET = "fd2fdc64c3eb85a26409b111";

/**

* 极光推送>>Android

*/

public static void jpushAndroid(Map param, String title) {

final Logger logger = LoggerFactory.getLogger(JPushUtils.class);

//创建JPushClient(极光推送的实例)

JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);

//推送的关键,构造一个payload

PushPayload payload = PushPayload.newBuilder()

//指定android平台的用户

.setPlatform(Platform.android())

//你项目中的所有用户

.setAudience(Audience.all())

// .setAudience(Audience.registrationId(param.get("id")))

//registrationId指定用户

.setNotification(Notification.android(param.get("msg"), title, param))

.setOptions(Options.newBuilder().setApnsProduction(false).build())

//这里是指定开发环境,不用设置也没关系

//自定义信息

.setMessage(Message.content(param.get("msg")))

.build();

try {

jpushClient.sendPush(payload);

} catch (APIConnectionException | APIRequestException e) {

logger.info(JPUSH_FAILE.getRetMsg());

}

}

/**

* 极光推送>>ios

*/

public static void jpushIOS(Map param, String title) {

final Logger logger = LoggerFactory.getLogger(JPushUtils.class);

//创建JPushClient

JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);

PushPayload payload = PushPayload.newBuilder()

//ios平台的用户

.setPlatform(Platform.ios())

//所有用

.setAudience(Audience.all())

//.setAudience(Audience.registrationId(parm.get("id")))//registrationId指定用户

.setNotification(Notification.newBuilder()

.addPlatformNotification(IosNotification.newBuilder()

.setAlert(param.get("msg"))

.setBadge(+1)

//这里是设置提示音(更多可以去官网看看)

.setSound("happy")

.addExtras(param)

.build())

.build())

.setOptions(Options.newBuilder().setApnsProduction(false).build())

//自定义信息

.setMessage(Message.newBuilder().setMsgContent(param.get("msg")).addExtras(param).build())

.build();

try {

jpushClient.sendPush(payload);

} catch (Exception e) {

logger.info(JPUSH_FAILE.getRetMsg());

}

}

/**

* 极光推送>>All所有平台

*/

public static void jpushAll(Map parm, String title) {

final Logger logger = LoggerFactory.getLogger(JPushUtils.class);

//创建JPushClient

JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);

//创建option

PushPayload payload = PushPayload.newBuilder()

//所有平台的用户

.setPlatform(Platform.all())

//registrationId指定用户

.setAudience(Audience.registrationId(parm.get("id")))

.setNotification(Notification.newBuilder()

//发送ios

.addPlatformNotification(IosNotification.newBuilder()

//消息体

.setAlert(parm.get("msg"))

.setBadge(+1)

//ios提示音

.setSound("happy")

//附加参数

.addExtras(parm)

.build())

//发送android

.addPlatformNotification(AndroidNotification.newBuilder().setTitle(title)

//附加参数

.addExtras(parm)

//消息体

.setAlert(parm.get("msg"))

.build())

.build())

.setOptions(Options.newBuilder().setApnsProduction(true).build())

//指定开发环境 true为生产模式 false 为测试模式 (android不区分模式,ios区分模式)

.setMessage(Message.newBuilder().setMsgContent(parm.get("msg")).addExtras(parm).build())

//自定义信息

.build();

try {

jpushClient.sendPush(payload);

} catch (APIConnectionException | APIRequestException e) {

logger.info(JPUSH_FAILE.getRetMsg());

}

}

/**

* 极光推送 api v3 自定义推送 没有提示

*/

public static void apiV3Push() {

final Logger logger = LoggerFactory.getLogger(JPushUtils.class);

JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY, null, ClientConfig.getInstance());

// For push, all you need do is to build PushPayload object.

PushPayload payload = buildPushObject_ios_tagAnd_alertWithExtrasAndMessage();

try {

jpushClient.sendPush(payload);

} catch (APIConnectionException | APIRequestException e) {

logger.info(JPUSH_FAILE.getRetMsg());

}

}

private static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {

return PushPayload.newBuilder()

.setPlatform(Platform.android())

.setAudience(Audience.registrationId("140fe1da9ee8a57e2fd"))

.setNotification(Notification.newBuilder()

.addPlatformNotification(AndroidNotification.newBuilder()

.setAlert("")

.build())

.build())

.setMessage(Message.content("20"))

.setOptions(Options.newBuilder()

.setApnsProduction(false)

.build())

.build();

}

}

我只用了 推送android ios 以及全部推送和一个自定义推送的方法

七.测试 (等待 移动端开发人员集成sdk 获取移动设备key)

1.api测试 java后台发起 推送手机

创建测试接口 根据 设备的类型与设备key进行推送

2.web测试 极光官网推送

点击自己项目进入 然后选择推送

76166ca7ed5a2ca0bc217aa9660bafb6.png

选择推送的设备类型 标题以及推送的内容

823c61df931c88340d88de0a79fb7d2a.png

也可以自定义传送的消息 key-value形式

d26cf5d2a34c0ba88f9bfd872a5445ad.png

根据 设备的key 进行发送

9a76dd9ba376372df5047346679892e6.png

本文地址:https://blog.csdn.net/weixin_42404521/article/details/107512865

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

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

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

相关文章

C++游戏系列2:角色装备武器

很多其它见:C游戏系列文件夹 知识点:类的组合,A类的数据成员。是B类的对象,或B类的对象。做A类的数据成员    【项目-带武器的游戏角色】   设计一个武器类,其数据成员至少要有武器名、威力,还能够…

php 显示当前年月日时分秒,php 获取当前前后年、月、星期、日、时分秒的时间...

php 获取今天前后年、月、星期、日、时分秒的时间。通过设置时间戳函数strtotime()的参数获取时间。//获取当前时间echo date(Y-m-d H:i:s,strtotime(now));echo date(Y-m-d H:i:s);echo date(Y-m-d H:i:s,time());//获取5天前的时间echo date(Y-m-d H:i:s,strtotime("-5 …

Lydsy2017年4月月赛 抵制克苏恩

Description小Q同学现在沉迷炉石传说不能自拔。他发现一张名为克苏恩的牌很不公平。如果你不玩炉石传说,不必担心,小Q同学会告诉你所有相关的细节。炉石传说是这样的一个游戏,每个玩家拥有一个30 点血量的英雄,并且可以用牌召唤至…

php 判斷數據庫表是否存在,phpl判斷mysq數據庫中的某個數據表是否存在的方法總結...

注意:以下都是在ThinkPHP框架中進行測試方式1通過查詢MySQL的配置表信息//TABLE_SCHEMA:表示數據庫名 , TABLE_NAME : 表示表名$sql "SELECT count(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMAdatabase_name and TABLE_NAME…

怎样学习(3):迭代学习,精益求精

古人云「十年寒窗无人问。一举成名天下知」,这是中国古代为数不多的读书人的真实写照。大多数读书人仅仅有十年寒窗,却不见得成名。 在软件开发领域有瀑布模式的软件project方法论。它将软开发的几个过程「需求分析,概要设计,具体…

matlab宏参赛,MATLAB杯无人机大赛 | 决赛通知!

原标题:MATLAB杯无人机大赛 | 决赛通知!重磅消息——决赛通知!经过近5个多月的准备,MATLAB杯无人机比赛即将迎来精彩的决赛,来自全国10强的参赛队伍,齐聚羊城广州,美丽的中山大学,进…

action中写php函数,WordPress中add_action(将函数连接到指定action)

WordPress中add_action(将函数连接到指定action)首先说下WordPress中用的钩子,将一个函数,以一个新的动作命名,该函数就是语法:123add_action($tag,$function_to_add,$priority,$accepted_args);?>参数:$tag(字符串)(必填)$fu…

selenium之截图

selenium支持对当前页面保存截图,使用方法: driver.get_screenshot_as_file(file_path) 代码举例: ...... def get_screenshot(driver, path):保存页面截图n 0if path:passelse:path "D:\\test_data\\screenshot\\error_png.png"…

java excel类库,jExcelApi Java 操作 Excel 的类库

jExcelApi Java 操作 Excel 的类库Java Excel API(JXL)是一个成熟,开源的用来操作Excel电子表格的Java类库,支持读取,修改,写入等操作。这个项目基于GPL发布,而且对中文有很好的支持。● 支持字体、数字、日期操作● 能够修饰单元…

锤子剪刀布 (20)

时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)题目描述 大家应该都会玩“锤子剪刀布”的游戏:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。 输入描述…

php表格js特效,JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】

本文实例讲述了JavaScript表格隔行变色和Tab标签页特效。分享给大家供大家参考,具体如下:最近一直在看JavaScript知识,偶尔也穿插一点Jquery,感觉Jquery用起来真爽,减少了很多的代码量,而且学习也不是很高。…

PHP 递归删除目录中文件

/** * 递归删除目录中文件 * param $pathname * return bool */public static function delDir($pathname)//要删除的目录{ if(file_exists($pathname)) { if(is_file($pathname)) { unlink($pathname); } else { $dir opendir($pathn…

matlab 符号表达式 系数 小数,matlab符号表达式系数

1数学符号matlab符号表达式系数: 数学符号,缺失:matlab表达式系数2838/9数学符号归类,包含运算符号、比较符号、几何符号、代数符号、常用分数、积分等各种符号。数学符号﹢﹣/≌∽≦≧≒﹤﹥≈≡≠…

STM32视频教程《原子教你玩STM32》

源:STM32视频教程《原子教你玩STM32》转载于:https://www.cnblogs.com/LittleTiger/p/7267735.html

海豚php表格,表格选取(1.4.3+) · DolphinPHP1.5.0完全开发手册-基于ThinkPHP5.1.41LTS的快速开发框架 · 看云...

## addSelectTable(name值, 标题, 提示, 表格列头 , 表格数据, 选择内容的url])标识符:selectTable>[info]1.4.3或更高版本支持。>[danger] **注意:该功能仅1.4.3版本以上,并且授权版用户才有,普通版没有该功能**。如果您是…

Number Sequence (KMP的应用)

个人心得&#xff1a;朴素代码绝对超时&#xff0c;所以要用到KMP算法&#xff0c;特意了解了&#xff0c;还是比较抽象&#xff0c;要多体会 Given two sequences of numbers : a11, a22, ...... , aNN, and b11, b22, ...... , bMM (1 < M < 10000, 1 < N < 1000…

java实现gdal栅格矢量化,《GDAL源码剖析与开发指南》一一1.5 GDAL源码目录

本节书摘来自异步社区出版社《GDAL源码剖析与开发指南》一书中的第1章&#xff0c;第1.5节&#xff0c;作者&#xff1a;李民录 更多章节内容可以访问云栖社区“异步社区”公众号查看。1.5 GDAL源码目录GDAL源码剖析与开发指南下载的GDAL源代码压缩包目录如图1-2所示&#xff0…

Cocos2d-X开发中国象棋《九》走棋规则

在上一节中实现了走棋&#xff0c;这篇博客将介绍中国象棋中的走棋规则 在写博客前先可能一下象棋的走棋规则&#xff1a; 1&#xff09;将 将的坐标关系&#xff1a;横坐标相等&#xff0c;纵坐标相减绝对值等于1&#xff0c;或者纵坐标相等&#xff0c;横坐标相减绝对值等于1…

php代码expl,php – 参数号无效:参数未定义Explination

我使用一个简单的测试表来尝试调试此错误.我试着写一个脚本,用户可以更新他们的用户信息,我搜索过但没有找到任何具体的帮助我.我的测试代码如下&#xff1a;PHPif(isset($_POST[submitBtn])){//Display Errors{{ PDO::ATTR_ERRMODE; }}$db->setAttribute( PDO::ATTR_ERRMOD…

js学习总结----编写简单的ajax方法库

具体代码如下: ~function(){//ajax:实现ajax请求的公共方法;当一个方法传递的参数过多&#xff0c;而且还不固定&#xff0c;我们使用对象统一传值法&#xff08;把需要传递的参数值都放在一个对象中&#xff0c;一起传递进去即可&#xff09;function ajax(options){//把需要使…