java给iphone应用实现推送

根据公司项目所需,需要对iphone应用进行消息推送,一开始选的是php,但是php语言知识略懂,开发起来比较麻烦,所有就用比较熟悉的java语言进行消息推送。

需要依赖的jar包:

 

具体代码如下:

/**
 * MainSend.java
 * 版权所有(C) 2012 
 * 创建:cuiran 2012-07-24 11:31:35
 */
package com.wpn.iphone.send;

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.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * TODO
 * @author cuiran
 * @version TODO
 */
public class MainSend {
	private static Log log = LogFactory.getLog(MainSend.class.getName());
	
	 /************************************************
	 测试推送服务器地址:gateway.sandbox.push.apple.com /2195 
	 产品推送服务器地址:gateway.push.apple.com / 2195 

	需要javaPNS_2.2.jar包

	 ***************************************************/
	/**

     *这是一个比较简单的推送方法,

     * 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) {

	try {
		//message是一个json的字符串{“aps”:{“alert”:”iphone推送测试”}}

			PushNotificationPayload payLoad =  PushNotificationPayload.fromJSON(message);
			
			payLoad.addAlert("iphone推送测试 www.baidu.com"); // 消息内容
			
			payLoad.addBadge(count); // iphone应用图标上小红圈上的数值
			
			payLoad.addSound("default"); // 铃音 默认
			
			

			PushNotificationManager pushManager = new PushNotificationManager();
			
			//true:表示的是产品发布推送服务 false:表示的是产品测试推送服务
			
			pushManager.initializeConnection(new AppleNotificationServerBasicImpl(path, password, false));
			
			List<PushedNotification> notifications = new ArrayList<PushedNotification>(); 
			
			// 发送push消息
			
			if (sendCount) {
			
			log.debug("--------------------------apple 推送 单-------");
			
			Device device = new BasicDevice();
			
			device.setToken(tokens.get(0));
			
			PushedNotification notification = pushManager.sendNotification(device, payLoad, true);
			
			notifications.add(notification);
			
			} else {
			
			log.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) {
			
			log.debug("-----All notifications pushed 成功 (" + successfulNotifications.size() + "):");
			
			} else if (successful == 0 && failed > 0) {
			
			log.debug("-----All notifications 失败 (" + failedNotifications.size() + "):");
			
			} else if (successful == 0 && failed == 0) {
			
			System.out.println("No notifications could be sent, probably because of a critical error");
			
			} else {
			
			log.debug("------Some notifications 失败 (" + failedNotifications.size() + "):");
			
			log.debug("------Others 成功 (" + successfulNotifications.size() + "):");
			
			}
	
	// pushManager.stopConnection();

	} catch (Exception e) {
	
	e.printStackTrace();
	
	}

}
	
	/**
	 * TODO
	 * @param args
	 */
	public static void main(String[] args) {
		MainSend send=new MainSend();
		List<String> tokens=new ArrayList<String>();
		tokens.add("76edc85fd2e6704b27974d774cc046d7e33a3440fd6f39ba18c729387e6c788a");
		tokens.add("dc2cf037bd4465c851b1d96a86b0a028307bc7e443435b6fafe93c2957bb415c");
		String path="E:\\iphone\\WPNPushService.p12";
		String password="wappin2009";
		String message="{'aps':{'alert':'iphone推送测试 www.baidu.com'}}";
		Integer count=1;
		boolean sendCount=false;
		send.sendpush(tokens, path, password, message, count, sendCount);
		
	}

}


源码下载地址:  http://pan.baidu.com/s/1vhsXu

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuiran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值