java给iphone应用实现推送

news/2025/3/14 16:49:50/

根据公司项目所需,需要对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


http://www.ppmy.cn/news/181042.html

相关文章

iPhone 数据库结构

一、AddressBook.sqlitedb 通讯录数据库 location: /private/var/root/Library/AddressBook/AddressBook.sqlitedb 1.ABGroup 联系人分组信息ROWID:组ID,自增PKName:组名 2.ABGroupChanges 分组信息更新record:type: 3.ABGroupMembers 组联系人UID: PKgroup_id&#xff1a;…

Lable和TextView使用iPhone表情(unicode emoji字符集)

iPhone支持unicode emoji字符集 NSString *s "This is a smiley \ue415 face";testFace.text s; UILable、UITextView、UIWebView和UITextField都可以直接使用&#xff0c;且可以随着字体大小改变 NSString *text "123456789\ue415"; [webView loadHTM…

java批量推送_java de Iphone批量推送代码

/** * apple批量的推送方法 * param tokens iphone手机获取的token * param content 推送消息的内容 * param count 应用图标上小红圈上的数值 * param goal 目标服务器 true&#xff1a;正式 false&#xff1a;测试 * parm List 返回发送失败的tokens */ public List ApnsSend…

UICollectionView 适配 iPhone 7 Plus

UICollectionView 适配 iPhone 7 Plus 需求&#xff1a;在屏幕上水平放置 5 张正方形图片&#xff0c;每张图片的宽度相等&#xff0c;无缝隙排列铺满一个屏幕宽度。 看似很简单的需求。用 UICollectionView 实现的话&#xff0c;把 UICollectionView 的宽度设置为屏幕宽度&…

6s如何无线连电脑连接服务器,iPhone 6s无线连接能力:WiFi与4G大提速

【PConline 杂谈】9月10日凌晨&#xff0c;苹果在旧金山正式发布了新一代iPhone&#xff0c;分别是iPhone 6s与iPhone 6s Plus两款机型。如同前期爆料一样&#xff0c;苹果为新iPhone带来了3D Touch等一系列功能和配置的提升&#xff0c;当中iPhone 6s和iPhone 6s Plus相比上代…

iphone 程序中加入表情符

NSString *s "This is a smiley \ue415 face"; testFace.text s; 上面代码就可以显示出笑脸符号&#xff0c;testFace是一个IBOutLet. 快试试吧。 这是为什么呢&#xff0c;因为iphone中包含日本字体&#xff0c;它支持unicode emoji字符集。 更多笑脸符号&am…

iPhone iPad高级编程

iPhone & iPad高级编程 编辑推荐 1. 本书中的示例颇具价值&#xff0c;浓缩了iPhone和iPad编程智慧&#xff0c;具有新颖独到之处。开发人员在日常工作中可以参考这些绝佳示例迅速找到解决方案。不管对于初始茅庐的新手&#xff0c;还是经验丰富的专业人员&#xff0c;本书…

iPhone数据库结构

/* * iphone database structure * author zye * contact zyetudou.com * update 20070924 * version 0.1 * url http://yegq.yeax.com/?p162 * copyleft 此文档可随意分发。如果你发布的iphone应用得益于此文档&#xff0c;建议注明&#xff0c;或给我email&#xff0c;共贺之…