package com.malone.common; import com.google.common.base.Joiner; import com.google.common.base.Splitter; import com.google.common.collect.Lists; import com.malone.exception.OperateFailureException; import javapns.devices.Device; import javapns.devices.implementations.basic.BasicDevice; import javapns.notification.AppleNotificationServerBasicImpl; import javapns.notification.PushNotificationManager; import javapns.notification.PushNotificationPayload; import javapns.notification.PushedNotification; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; /** * Created with IntelliJ IDEA. * User: malone * Date: 14-7-19 * Time: 上午10:25 * To change this template use File | Settings | File Templates. */ public class PushUtils { private static Logger logger = LoggerFactory.getLogger(PushUtils.class); public static void main (String[] args) { try { push("2cd260c1876ca094a9452af0dd3595aaead748be0925314050b94ca5061d4f73", "这是测试推送消息"); } catch (Exception e) { e.printStackTrace(); } } /** * 一次给多个手机推送消息 * @param tokens */ public static void push (String tokens, String msg) throws Exception { //发送失败token记录 List<String> failureToken = Lists.newArrayList(); //截取 List<String> tokenList = Splitter.on(",").omitEmptyStrings().splitToList(tokens); if (tokenList == null || tokenList.size() == 0) { throw new OperateFailureException("请提供要发送的token!"); } if (StringUtils.isBlank(msg)) { throw new OperateFailureException("请提供要发送的消息!"); } //包装发送消息相关参数 PushNotificationPayload payLoad = new PushNotificationPayload(); payLoad.addAlert(msg); // 消息内容 payLoad.addBadge(PushConsts.badge); // iphone应用图标上小红圈上的数值 if (!StringUtils.isBlank(PushConsts.pushMsgSound)) { payLoad.addSound(PushConsts.pushMsgSound);//铃音 } //构造推送服务 PushNotificationManager pushManager = new PushNotificationManager(); //true:表示的是产品发布推送服务 false:表示的是产品测试推送服务 pushManager.initializeConnection(new AppleNotificationServerBasicImpl(PushConsts.certificateLocalPath, PushConsts.certificatePwd, PushConsts.msgFlag)); List<PushedNotification> notifications = new ArrayList<PushedNotification>(); //当单个发送失败,不应该影响其他的发送 for (String token : tokenList) { try { PushedNotification notification = pushManager.sendNotification(new BasicDevice(token), payLoad, true); notifications.add(notification); } catch (Exception e) { failureToken.add(token); logger.error("===============================一次失败开始=================================="); logger.error("token:" + token + ",msg:" + msg + "推送消息失败!"); logger.error(e.getMessage(), e); e.printStackTrace(); logger.error("===============================一次失败结束=================================="); } } //发送消息 // notifications = pushManager.sendNotifications(payLoad, device); List<PushedNotification> failedNotifications = PushedNotification.findFailedNotifications(notifications); List<PushedNotification> successfulNotifications = PushedNotification.findSuccessfulNotifications(notifications); int failed = failedNotifications.size(); int successful = successfulNotifications.size(); pushManager.stopConnection(); //是否失败 if (failureToken.size() > 0) { throw new OperateFailureException("如下token推送消息失败:" + Joiner.on(",").join(failureToken.toArray())); } if (failed >= 1) { throw new OperateFailureException("有" + failed + "个消息推送失败!"); } } /** * 推送用到的常量 */ public static interface PushConsts { /** * 推送消息的默认响铃 */ public String pushMsgSound = "default"; /** * 图标小红圈的数值 */ public int badge = 100; /** * 推送消息证书的本地路径 */ public String certificateLocalPath = "F:/ios push/sf push message.p12"; /** * 推送证书的密码 */ public String certificatePwd = "sf@push"; /** * 正式环境推送/开发环境推送 */ public boolean msgFlag = false; } }
相关推荐
根据提供的信息,我们可以总结出以下关于“iOS推送Java实现”的相关知识点: ### 一、概述 在移动应用开发中,消息推送是与用户保持互动的关键技术之一。对于iOS平台而言,Apple提供了自己的推送通知服务(APNs,...
在Java环境中实现APNs推送,需要掌握以下几个核心知识点: 1. **APNs认证机制**: - 为了确保安全性,APNs需要开发者使用特定的证书或令牌进行身份验证。你可以通过苹果开发者中心生成不同的证书或JSON Web Token ...
【苹果iOS推送Java服务端详解】 在iOS应用开发中,苹果提供了远程通知(Apple Push Notification service,简称APNs)服务,使得开发者可以向用户的设备发送消息,即使应用没有在前台运行也能接收到这些消息。本篇...
这个“ios 消息推送 java后端demo”是为开发者提供的一个示例,帮助理解如何使用Java后端实现对iOS设备的消息推送。下面将详细介绍iOS消息推送的原理、Java后端实现以及压缩包中可能包含的内容。 一、iOS消息推送...
在Java服务端实现iOS消息推送涉及到以下几个关键步骤和技术: 1. **应用程序注册消息推送**: 当用户首次启动iOS应用时,系统会请求用户允许接收推送通知。如果用户同意,应用程序将通过与APNS交互获取一个唯一的`...
以上就是使用Java实现iOS推送功能的基本流程和技术要点。通过理解这些步骤,你可以根据自己的需求定制推送服务,例如增加消息队列、日志记录、错误重试机制等。同时,确保遵循Apple的推送策略,避免被封禁。
总结,使用Java编写iOS推送后台涉及到证书管理、APNs连接、推送消息构建和发送、错误处理等多个环节。理解这些知识点并熟练应用,可以帮助你构建稳定、高效的推送系统。在实际开发中,还需要根据项目需求和服务器...
要使用Java实现APNs推送,你需要以下组件: 1. **证书和密钥**:首先,你需要从Apple Developer Portal获取一个APNs证书和对应的私钥。这些文件通常以.p12格式提供,包含了你的开发者身份验证信息。 2. **Java ...
Java接入极光推送服务是移动应用开发者常用的一种技术,它允许开发者通过Java后端服务器向Android和iOS设备发送通知消息。极光推送(JPush)是中国知名的推送服务提供商,为开发者提供稳定、高效的推送解决方案。在...
APNS(Apple Push Notification Service)苹果推送通知服务。该技术由苹果公司提供的APNS服务。工作原理:首先,APNS会对用户进行物理连接认证,和设备令牌认证(简言之就是苹果的服务器检查设备里的证书已确定其为...
Java实现iOS推送主要是通过使用第三方库,如javapns,来与Apple Push Notification Service (APNs)进行交互。下面我们将深入探讨这个话题。 首先,让我们理解APNs。APNs是苹果公司提供的一个服务,它允许开发者向...
**iOS推送Java服务端文档详解** 在iOS应用开发中,为了实现远程通知功能,苹果公司提供了Push Notification Service(PNS),使得开发者可以向用户的设备发送消息,即使应用没有在前台运行也能接收到这些消息。本文...
这个压缩包里面包含三个DOC文件:1.iphone推送java实现.doc 2.iphone推送简单JAVA示例.doc 3.实现iphone推送服务端原理.doc 三个文档很全面的指导学者学习怎么用java实现ios推送功能,不仅仅是讲解怎么实现,还讲解...
2. iOS推送:对于iOS,应用需要有Provisioning Profile和APNs证书,设备会生成Device Token,用作推送目标。 四、消息格式和优化 推送消息可以包含文本、图片、声音等多种类型,也可以携带自定义数据。为了提高用户...
【极光推送后台Java代码Demo】...通过阅读和理解这段代码,开发者可以快速掌握如何在自己的Java后端项目中实现极光推送功能。在实际应用中,还可以根据需求进一步定制消息内容、设置定时推送、实现批量推送等高级功能。
首先,我们需要理解iOS推送通知的基本原理。 **iOS推送通知原理** 1. **消息流**:推送通知的流程主要包括三个步骤。提供商(即APP服务端)将通知发送至Apple Push Notification Service (APNS),APNS随后将通知...
Java调用APNs(Apple Push Notification service)推送是iOS应用开发者在进行远程通知服务时常见的需求。APNs是苹果提供的一项服务,允许开发者将实时消息推送到用户的iOS设备上,如应用更新、消息提醒等。在Java...
本资源提供的“ios推送jar包”正是这样一个工具,它包含了一组Java类和库文件,用于简化服务端与iOS设备之间推送通知的实现过程。 1. **APNs概念理解** - APNs是苹果公司提供的一个远程通知服务,使得服务器能够向...
本资源提供了一个完整的Java服务端和iOS客户端的源码实现,帮助开发者理解并实践iOS消息推送的全过程。 首先,我们要了解的是苹果的Push Notification Service(APNs),这是苹果公司提供的用于向iOS、watchOS、...
标题中的“jsp iOS推送的包”指的是一个针对iOS设备进行远程通知推送的开发资源包,主要基于Java平台。这个包包含了一系列的库文件,用于帮助开发者实现从服务器端向iOS客户端发送Push Notification服务。在iOS应用...