苹果推送服务

1 篇文章 0 订阅

苹果推送服务

注意:

  1. 需要javapns.jar包
  2. 生成证书,,

代码:

package com.test.push.iso;

import java.util.ArrayList;
import java.util.List;

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.log4j.Logger;

public class IphonePush {

    Logger logger = Logger.getLogger(IphonePush.class);

    /**
     *
     *这是一个比较简单的推送方法,
     *
     * apple的推送方法
     *
     * @param tokens
     *            iphone手机获取的token
     *
     * @param path
     *            这里是一个.p12格式的文件路径,需要去apple官网申请一个
     *
     * @param password
     *            p12的密码 此处注意导出的证书密码不能为空因为空密码会报错
     *
     * @param message
     *            推送消息的内容
     *
     * @param count
     *            应用图标上小红圈上的数值
     *
     * @param sendCount
     *            单发还是群发 true:单发 false:群发
     */

    public void sendpush(List<String> tokens, String path, String password,
            String message, Integer count, boolean sendCount) {
        logger.info("sendpush(List<String> tokens=" + tokens + ", String path=" + path + ", String password=" + password + ", String message=" + message + ", Integer count=" + count + ", boolean sendCount=" + sendCount + ") - start");

        try {

            PushNotificationPayload payLoad = PushNotificationPayload
                    .fromJSON(message);

            // payLoad.addAlert(message); // 消息内容

            payLoad.addBadge(count); // iphone应用图标上小红圈上的数值

            payLoad.addSound("default"); // 铃音 默认

            PushNotificationManager pushManager = new PushNotificationManager();

            // true:表示的是产品发布推送服务 false:表示的是产品测试推送服务

            pushManager
                    .initializeConnection(new AppleNotificationServerBasicImpl(
                            path, password, true));

            List<PushedNotification> notifications = new ArrayList<PushedNotification>();

            // 发送push消息

            if (sendCount) {

                logger.debug("--------------------------apple 推送 单-------");

                Device device = new BasicDevice();

                device.setToken(tokens.get(0));

                PushedNotification notification = pushManager.sendNotification(
                        device, payLoad, true);

                notifications.add(notification);

            } else {

                logger.debug("--------------------------apple 推送 群-------");

                List<Device> device = new ArrayList<Device>();

                for (String token : tokens) {

                    device.add(new BasicDevice(token));

                }

                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();

            if (successful > 0 && failed == 0) {

                logger.debug("-----All notifications pushed 成功 ("
                        + successfulNotifications.size() + "):");

            } else if (successful == 0 && failed > 0) {

                logger.debug("-----All notifications 失败 ("
                        + failedNotifications.size() + "):");

            } else if (successful == 0 && failed == 0) {
                logger.debug("No notifications could be sent, probably because of a critical error");
            } else {

                logger.debug("------Some notifications 失败 ("
                        + failedNotifications.size() + "):");

                logger.debug("------Others 成功 (" + successfulNotifications.size()
                        + "):");

            }

            // pushManager.stopConnection();

        } catch (Exception e) {
            logger.error("sendpush()", e);

            e.printStackTrace();

        }

        logger.info("sendpush(tokens, path, password, message, count, sendCount) - end");
    }

    public static void main(String[] args) {
        
        IphonePush pushService = new IphonePush();
        List<String> token = new ArrayList<String>();
        String device_token = "d232f7f0669465542b3b68b9548d23691b468bf8da912ea8a101d17fa787cff4";
        token.add(device_token);
        String certificatePath = "D://Workspaces//MyEclipse 8.6//test_web//WebRoot//pushCert.p12";
        String certificatePassword = "hebmc_qt";
        String msg = "Hello, world!";
        
        pushService.sendpush(token, certificatePath, certificatePassword, msg, 5,  true);

    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值