APNS推送

package com.zhuyun.push;

import javapns.devices.implementations.basic.BasicDevice;
import javapns.notification.AppleNotificationServerBasicImpl;
import javapns.notification.PushNotificationManager;
import javapns.notification.PushNotificationPayload;
import javapns.notification.PushedNotification;
import net.sf.json.JSONObject;

import com.zhuyun.util.IPUtil;
  
/** 
 * @author zhouyinfei
 */  
public class ApplePush {  
     /************************************************ 
     测试推送服务器地址: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 应用图标上小红圈上的数值 ,值为0的时候就没有数字
     * @param release true:表示的是产品发布推送服务 false:表示的是产品测试推送服务
     * @param ring	个性铃声,  	1.caf是个性铃声的文件名
     */  
  
    public static void sendPush(String token, String message,Integer count, boolean release, String ring) {  
    try {  
    		String path;
    		if (release) {			//发布模式
				path = IPUtil.APNS_P12_RELEASE_URL;		
			} else {				//开发测试模式
				path = IPUtil.APNS_P12_DEVELOPER_URL;
			}
    		
    		if (ring == null || ring.equals("")) {		//假如ring是null或者空字符串,则将他转换成随意的非空字符串
				ring = "z";
			}
    		
    		JSONObject jsonObject1 = new JSONObject();
    		JSONObject jsonObject2 = new JSONObject();
    		jsonObject2.put("alert", message);
    		jsonObject1.put("aps", jsonObject2.toString());
    		
    		//一个json的字符串{“aps”:{“alert”:”iphone推送测试”}}  
            PushNotificationPayload payLoad =  PushNotificationPayload.fromJSON(jsonObject1.toString());  
            payLoad.addBadge(count); 			// iphone应用图标上小红圈上的数值  
            payLoad.addSound(ring); 		// 个性铃音,值为铃声的文件名"1.caf", 其他:默认"default"
            
            PushNotificationManager pushManager = new PushNotificationManager();  
            //true:表示的是产品发布推送服务 false:表示的是产品测试推送服务  
            pushManager.initializeConnection(new AppleNotificationServerBasicImpl(path, IPUtil.APNS_PASSWORD, release));  
            
          // 发送push消息  , 一次性发送到多个手机
//            List<PushedNotification> notifications = new ArrayList<PushedNotification>();   
//			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) {
//				System.out.println("All notifications pushed success : " + successfulNotifications.size());
//			} else if (successful == 0 && failed > 0) {  
//				System.out.println("All notifications fail : " + failedNotifications.size());  
//            } else if (successful == 0 && failed == 0) {  
//            	System.out.println("No notifications could be sent, probably because of a critical error");  
//            } else {  
//            	System.out.println("Some notifications fail : " + failedNotifications.size());  
//            	System.out.println("Others success : " + successfulNotifications.size());  
//            }  
			
			  // 发送push消息 ,一次发送到一个手机
			PushedNotification notification = pushManager.sendNotification(new BasicDevice(token), payLoad);
			if (notification.isSuccessful()) {
				System.out.println("Notification pushed success");
			} else {
				System.out.println("Notification pushed fail");
			}
     pushManager.stopConnection();  
    } catch (Exception e) {  
    e.printStackTrace();  
    }  
  
}  
      
    public static void main(String[] args) {  
//        List<String> tokens=new ArrayList<String>();  
//        tokens.add("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");  
        String token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        String message="hello world!";  
        Integer count=1;  
        boolean release = false;
        String ring = "1.caf";
        sendPush(token, message, count, release, ring);  
    }  
  
}  


下面是变量值:

public static String APNS_PASSWORD = "123";					//APNS密码
	
	public static String APNS_P12_RELEASE_URL = "aps_release.p12";		//APNS发布模式的证书路径
	
	public static String APNS_P12_DEVELOPER_URL = "aps_developer.p12";		//APNS开发测试模式的证书路径


下面两个是.p12文件,第一个是开发测试版本的,第二个是发布版本的


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值