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,一经查实,立即删除!

相关文章

Lydsy2017年4月月赛 抵制克苏恩

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

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

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

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

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

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

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

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

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

netlify支持php吗,hexo netlify 搭建简易博客

npm install hexo-cli -ghexo init blogcd blognpm installhexo server将本地文件夹推送到github修改主题git clone https://github.com/jangdelong/hexo-theme-xups.git themes/xups themes/xups修改yml配置文件重新hexo server自己的博客sleepy-poincare-e0ca11.netlify.c…

jps、jstack、jmap、jhat、jstat、hprof使用详解

https://my.oschina.net/feichexia/blog/196575#comment-list A、 jps(Java Virtual Machine Process Status Tool) jps主要用来输出JVM中运行的进程状态信息。语法格式如下: 如果不指定hostid就默认为当前主机或服务器。 命令行参数选项说明如下:…

oracle数据库日期格式的运算,Oracle时间类型date,timestamp时间差计算

Oracle的时间类型有两种date和timestamp. date精确到秒,timestamp精确到毫秒.1.计算date类型的时间差可以先把年,月,日,小时,分,秒用to_char函数拆分出来,再用to_number函数转换成数值类型.有了这些单独分开的时间就好办了.就再一个个的去减,记得考虑单位换算就行.比如都转换…

url去除掉一个参数php,php怎样去掉url中的参数_后端开发

php去掉url中的参数的要领是:能够经由过程trim()函数来完成。该函数能够删除字符串中的指定字符,并返回已修正的字符串。细致使用要领如:【trim($url,"?");trim($url,"#");】。相干函数引见:(引荐教程&#…

C++之类的静态成员变量和静态成员函数

static静态成员函数 在类中。static 除了声明静态成员变量,还能够声明静态成员函数。普通成员函数能够訪问全部成员变量。而静态成员函数仅仅能訪问静态成员变量。我们知道。当调用一个对象的成员函数(非静态成员函数)时,系统会把…

使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之一

好吧,现在我们假设你已经安装好了VS Code开发工具、.Net Core 2.0预览版的SDK dotnet-sdk-2.0.0(注意自己的操作系统),并且已经为VS Code安装好了C#扩展(在VS Code的扩展菜单中输入OmniSharp,安装扩展即可&…

WPF--TextBlock的ToolTip附加属性

大家可能在项目中,有的时候,由于显示的内容过长,所以,需要显示一部分内容,然后后面用省略号,把鼠标放上去,会显示出来全部的内容。 作为一个LowB程序员的我,第一反应是SubString截取…

Laravel框架一:原理机制篇

转载自http://www.cnblogs.com/XiongMaoMengNan/p/6644892.htmlLaravel作为在国内国外都颇为流行的PHP框架,风格优雅,其拥有自己的一些特点。 一. 请求周期 Laravel 采用了单一入口模式,应用的所有请求入口都是 public/index.php 文件。 注册…

Linux高频命令汇总,Linux高频命令

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?findfind path [options] params作用:在指定目录下查找文件1234find / -name "target.java" #在根目录下查找target.java文件find -name &qu…

linux系统时间函数,Linux时间时区详解与常用时间函数

时间与时区整个地球分为二十四时区,每个时区都有自己的本地时间。UTC时间 与 GMT时间我们可以认为格林威治时间就是时间协调时间(GMT UTC),格林威治时间和UTC时间都用秒数来计算的。UTC时间与本地时间UTC 时区差 本地时间时区差东为正,西为…

linux awr 日志,Linux平台生成awr报告

1.使用Oracle用户登录应用服务器所使用的数据库所在的服务器# su –oracle2.输入env命令,查询出ORACLE_HOME 目录3.然后进入$ORACLE_HOME/rdbms/admin目录,查询awr语句(此步骤可以忽略)此处可以直接省略2,3…

HDU 1159 Common Subsequence 动态规划

2017-08-06 15:41:04 writer:pprp 刚开始学dp,集训的讲的很难,但是还是得自己看,从简单到难,慢慢来(如果哪里有错误欢迎各位大佬指正) 题意如下: 给两个字符串,找到其中大…

【Xmail】使用Xmail搭建局域网邮件服务器

下载地址: http://www.xmailserver.org/xmail-1.27.win32bin.zip,当前最新版本 1.27。 解压文件:xmail-1.27.win32bin.zip 1、把其中的 MailRoot 目录拷贝到 C:\; 2、把 C:\xmail-1.27.win32bin\xmail-1.27 目录下的所有文件&am…

uploadify 配置后,页面显示无效果

uploadify使用的是Flash版本 谷歌浏览器:默认没有开启Flash,进行如下图设置即可 转载于:https://www.cnblogs.com/daryl/p/7299471.html

Day39:threading模块、ThreadLocal

一、threading模块 1、线程对象的创建 1.1 Thread类直接创建 import threading import timedef countNum(n): # 定义某个线程要运行的函数print("running on number:%s" %n)time.sleep(3)if __name__ __main__:t1 threading.Thread(targetcountNum,args(23,)) #生成…