app-极光推送
第一步:在极光官网注册账号,创建应用,获取masterSecret,appKey (官网:https://www.jiguang.cn/)
第二部:导入jar包 maven依赖
<!--极光推送-->
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.4.3</version>
</dependency>
第三部:创建
JiguangPushUtil 工具类

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.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; /** * 极光推送工具类 * 极光接口文档:https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/ * */ public class JiguangPushUtil { private static final Logger log = LoggerFactory.getLogger(JiguangPushUtil.class); private static String masterSecret = "4375f026ecc8f154eb272eb4"; private static String appKey = "d6daaf88654b1b237af7b2e4"; private static final String ALERT = "推送信息"; public static void main(String[] args) { String registrationId = "123456";//声明注册id log.info("对注册id为[" + registrationId + "]的用户推送信息"); PushResult result = push(registrationId,ALERT, false, 86400l); if(result != null && result.isResultOK()){ log.info("推送成功!"); }else{ log.info("推送失败!"); } } /** * 根据终端注册id推送 * @param registrationId * @param alert * @return PushResult */ public static PushResult push(String registrationId,String alert, Boolean isProduction, Long timeToLive){ ClientConfig clientConfig = ClientConfig.getInstance(); JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, clientConfig); PushPayload payload = buildPushObject_android_ios_registration_id_alert(registrationId,alert, isProduction, timeToLive); // PushPayload payload = buildPushObject_android_ios_registration_id_alert(registrationId,alert); try { return jpushClient.sendPush(payload); } catch (APIConnectionException e) { log.error("极光推送接口连接异常,请稍后重试. ", e); return null; } catch (APIRequestException e) { log.error("极光推送接口响应异常. ", e); log.info("========极光推送接口响应异常========"); log.info("HTTP Status: " + e.getStatus()); log.info("Error Code: " + e.getErrorCode()); log.info("Error Message: " + e.getErrorMessage()); log.info("Msg ID: " + e.getMsgId()); log.info("================================="); return null; } } /** * 生成极光推送对象PushPayload,默认推送生产环境,存活时间86400s。 * @param registrationId * @param alert * @return PushPayload */ public static PushPayload buildPushObject_android_ios_registration_id_alert(String registrationId,String alert){ return buildPushObject_android_ios_registration_id_alert(registrationId, alert, true, 86400l); } /** * 生成极光推送对象PushPayload * * @param registrationId 客户端注册id,需要接受推送内容的终端标识 * @param alert 推送内容 * @param isProduction 是否推送生产环境 * @param timeToLive 离线推送存活时间 * @return */ public static PushPayload buildPushObject_android_ios_registration_id_alert(String registrationId,String alert, Boolean isProduction, Long timeToLive){ return PushPayload.newBuilder() .setPlatform(Platform.android_ios()) .setAudience(Audience.registrationId(registrationId)) .setNotification(Notification.newBuilder() .addPlatformNotification(AndroidNotification.newBuilder() .setAlert(alert) .build()) .addPlatformNotification(IosNotification.newBuilder() .setAlert(alert) .build()) .build()) .setOptions(Options.newBuilder() .setApnsProduction(isProduction)//true-推送生产环境 false-推送开发环境 .setTimeToLive(timeToLive)//消息在JPush服务器的失效时间 .build()) .build(); } /** * 生成极光推送对象PushPayload * @param alias 别名 * @param alert 推送内容 * @return PushPayload */ public static PushPayload buildPushObject_android_ios_alias_alert(String alias,String alert){ return PushPayload.newBuilder() .setPlatform(Platform.android_ios()) .setAudience(Audience.alias(alias)) .setNotification(Notification.newBuilder() .addPlatformNotification(AndroidNotification.newBuilder() .addExtra("type", "infomation") .setAlert(alert) .build()) .addPlatformNotification(IosNotification.newBuilder() .addExtra("type", "infomation") .setAlert(alert) .build()) .build()) .setOptions(Options.newBuilder() .setApnsProduction(false)//true-推送生产环境 false-推送开发环境(测试使用参数) .setTimeToLive(90)//消息在JPush服务器的失效时间(测试使用参数) .build()) .build(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下