`

ios 推送 java 实现

    博客分类:
  • ios
阅读更多
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推送Java实现”的相关知识点: ### 一、概述 在移动应用开发中,消息推送是与用户保持互动的关键技术之一。对于iOS平台而言,Apple提供了自己的推送通知服务(APNs,...

    苹果消息推送 java端

    在Java环境中实现APNs推送,需要掌握以下几个核心知识点: 1. **APNs认证机制**: - 为了确保安全性,APNs需要开发者使用特定的证书或令牌进行身份验证。你可以通过苹果开发者中心生成不同的证书或JSON Web Token ...

    苹果ios推送java服务端耗码demo

    【苹果iOS推送Java服务端详解】 在iOS应用开发中,苹果提供了远程通知(Apple Push Notification service,简称APNs)服务,使得开发者可以向用户的设备发送消息,即使应用没有在前台运行也能接收到这些消息。本篇...

    ios 消息推送 java后端demo(包括jar包)

    这个“ios 消息推送 java后端demo”是为开发者提供的一个示例,帮助理解如何使用Java后端实现对iOS设备的消息推送。下面将详细介绍iOS消息推送的原理、Java后端实现以及压缩包中可能包含的内容。 一、iOS消息推送...

    ios推送java服务端

    在Java服务端实现iOS消息推送涉及到以下几个关键步骤和技术: 1. **应用程序注册消息推送**: 当用户首次启动iOS应用时,系统会请求用户允许接收推送通知。如果用户同意,应用程序将通过与APNS交互获取一个唯一的`...

    IOS推送实现(java)

    以上就是使用Java实现iOS推送功能的基本流程和技术要点。通过理解这些步骤,你可以根据自己的需求定制推送服务,例如增加消息队列、日志记录、错误重试机制等。同时,确保遵循Apple的推送策略,避免被封禁。

    ios推送java写的后台

    总结,使用Java编写iOS推送后台涉及到证书管理、APNs连接、推送消息构建和发送、错误处理等多个环节。理解这些知识点并熟练应用,可以帮助你构建稳定、高效的推送系统。在实际开发中,还需要根据项目需求和服务器...

    Java向苹果服务器推送消息(Java实现HTTP/2协议发送APNS)

    要使用Java实现APNs推送,你需要以下组件: 1. **证书和密钥**:首先,你需要从Apple Developer Portal获取一个APNs证书和对应的私钥。这些文件通常以.p12格式提供,包含了你的开发者身份验证信息。 2. **Java ...

    java接入极光推送demo

    Java接入极光推送服务是移动应用开发者常用的一种技术,它允许开发者通过Java后端服务器向Android和iOS设备发送通知消息。极光推送(JPush)是中国知名的推送服务提供商,为开发者提供稳定、高效的推送解决方案。在...

    java实现给Iphone推送消息

    APNS(Apple Push Notification Service)苹果推送通知服务。该技术由苹果公司提供的APNS服务。工作原理:首先,APNS会对用户进行物理连接认证,和设备令牌认证(简言之就是苹果的服务器检查设备里的证书已确定其为...

    java实现IOS推送

    Java实现iOS推送主要是通过使用第三方库,如javapns,来与Apple Push Notification Service (APNs)进行交互。下面我们将深入探讨这个话题。 首先,让我们理解APNs。APNs是苹果公司提供的一个服务,它允许开发者向...

    IOS推送JAVA服务端文档

    **iOS推送Java服务端文档详解** 在iOS应用开发中,为了实现远程通知功能,苹果公司提供了Push Notification Service(PNS),使得开发者可以向用户的设备发送消息,即使应用没有在前台运行也能接收到这些消息。本文...

    java实现IPHONE推送功能技术文档

    这个压缩包里面包含三个DOC文件:1.iphone推送java实现.doc 2.iphone推送简单JAVA示例.doc 3.实现iphone推送服务端原理.doc 三个文档很全面的指导学者学习怎么用java实现ios推送功能,不仅仅是讲解怎么实现,还讲解...

    阿里云EAMS消息推送Java异步接入,给Android和IOS推送消息

    2. iOS推送:对于iOS,应用需要有Provisioning Profile和APNs证书,设备会生成Device Token,用作推送目标。 四、消息格式和优化 推送消息可以包含文本、图片、声音等多种类型,也可以携带自定义数据。为了提高用户...

    极光推送后台java代码demo

    【极光推送后台Java代码Demo】...通过阅读和理解这段代码,开发者可以快速掌握如何在自己的Java后端项目中实现极光推送功能。在实际应用中,还可以根据需求进一步定制消息内容、设置定时推送、实现批量推送等高级功能。

    基于Java的 iOS 推送通知

    首先,我们需要理解iOS推送通知的基本原理。 **iOS推送通知原理** 1. **消息流**:推送通知的流程主要包括三个步骤。提供商(即APP服务端)将通知发送至Apple Push Notification Service (APNS),APNS随后将通知...

    java调用apns推送的实现

    Java调用APNs(Apple Push Notification service)推送是iOS应用开发者在进行远程通知服务时常见的需求。APNs是苹果提供的一项服务,允许开发者将实时消息推送到用户的iOS设备上,如应用更新、消息提醒等。在Java...

    ios推送jar包

    本资源提供的“ios推送jar包”正是这样一个工具,它包含了一组Java类和库文件,用于简化服务端与iOS设备之间推送通知的实现过程。 1. **APNs概念理解** - APNs是苹果公司提供的一个远程通知服务,使得服务器能够向...

    IOS 消息推送 java服务端和客户端源码

    本资源提供了一个完整的Java服务端和iOS客户端的源码实现,帮助开发者理解并实践iOS消息推送的全过程。 首先,我们要了解的是苹果的Push Notification Service(APNs),这是苹果公司提供的用于向iOS、watchOS、...

    jsp iOS推送的包

    标题中的“jsp iOS推送的包”指的是一个针对iOS设备进行远程通知推送的开发资源包,主要基于Java平台。这个包包含了一系列的库文件,用于帮助开发者实现从服务器端向iOS客户端发送Push Notification服务。在iOS应用...

Global site tag (gtag.js) - Google Analytics