用javapns推送production收不到,微信拒收信息怎么回事事

本周问答荣誉榜
本月问答荣誉榜
含有标签"推送证书"的问题
在做 APNS 推送时,我们可以拿
1)aps_development.cer转换成的aps_development.pem 与*.p12私钥转换成的*.pem 文件合成一个 CK.pem 证书
2)aps_production.cer转换成的aps_production.pem 与*.p12私钥转换成的*.pem 文件合成一个 CK.pem 证书
我们需要把这两个 pem 证书都给后台吗?它们的区别是什么,前者用于开发时,后者用于发布时,是吗?
求教啦!谢谢!!
在网上查了许多资料,有的说在钥匙串中直接导出的.p12文件发给java服务器端就可以了,还有的说要把.cer文件和p12文件都先转换成.pem格式文件在转换成.p12文件。我实在不知道哪个是正确的了,请求大神们指教小弟一番,不胜感激。
iOS 中华区申请的推送证书在美国获取不到token是怎么回事?
项目同事写的,也测了可以推送,现在就是交给我来上线。但是我不知道跟普通的有什么区别?就比如说我用的上传的证书需要重新创建吗?选择下面的第二个?还是说我再创建一个平常上线用的证书就可以了?因为我不知道我需不需要再安装一个推送的证书,打包的时候要选择哪个证书。因为之前打包的时候如果不把&CTSettingCopyMyPhoneNumber() 和获取token的代码注释掉就会报错。
求解答,多谢!!!
做第一个项目的时候,按照网上的流程很容易把测试、发布、推送证书做好了。
现在开发第二个项目,推送证书怎么也做不好。具体要怎么做?
发邮件提示说推送证书快到期了,是不是在 &Certificates---Production---里找到对应的证书 &Revoke掉?
然后在App IDs里找到对应的id &选择Edit &然后 Revoke 掉?
再重新 生成?
主要想问的是 &Revoke操作会造成什么影响呢?
关于IOS推送的问题:服务器端java 实现。
之前开发版,发布版的推送证书都是可以的。
ios客户端均能收到推送。但是后来发布版的
推送证书重置过,所以现在发布版的ios客户
端收不到推送。发布版的推送证书重新生成,
与第一台申请证书的机器,不是同一台机器。
这个应该是没有影响的吧。申请证书的账号
是同一个,都拥有最高权限。发布版推送证书重新
生成后,也重新生成了发布版profile 配置文件。
服务器需要的p12 证书的生成方式,有两种:
1) 按照网上的做法,
1,本机在/ios/manage/certificates/team/index.action生成certifacates时上传的本机证书:CertificateSigningRequest.certSigningRequest
2,从/ios/manage/overview/index.action的app IDs里拿到的Push SSL Certificate,命名为:aps.cer
3,在本机双击aps.cer会自动加载到本机的Keychain中,在keychain中找到该证书,展开,导出其下的private key为:key.p12
将以上3个文件放在同一个文件夹中,并用terminal打开,一次输入下面命令(需要输入密码时均填写123456):
1,openssl...
我按照要求生成了一个certSigningRequest文件,从开发者中心重新创建了一个开发证书文件;
然后,用同一个certSigningRequest创建了一个推送证书;
在自己机器能用;
是从钥匙串导出p12文件,给同事mac上使用,同事的mac系统的钥匙串程序,中的列表,还是显示“证书仍然无效”;
试过登录-&密钥 导出p12
试过用 登录-&证书 导出p12
两种导出的结果都不能用--“证书仍然无效”
开发证书和推送证书能不能用同一个certSigningRequest?
怎么导出P12文件给别的mac上用呢?...
开发证书和推送证书能不能用同一个certSigningRequest;
我按照要求生成了一个certSigningRequest文件,从开发者中心重新创建了一个开发证书文件;
然后,用同一个certSigningRequest创建了一个推送证书;
在自己机器能用;
是从钥匙串导出p12文件,给同事mac上使用,同事的mac系统的钥匙串程序,中的列表,还是显示“证书仍然无效”;
试过登录-&密钥 导出p12
试过用 登录-&证书 导出p12
两种导出的结果都不能用--“证书仍然无效”
开发证书和推送证书能不能用同一个certSigningRequest?
怎么导出P12文件给别的mac上用呢?...
在生成推送证书时,在终端中有个地方需要输入密码,为什么我输入数字时终端没反应?15:49 提问
JAVA苹果推送报错,求大神搭救,HELP!~
import java.util.ArrayL
import java.util.HashM
import java.util.I
import java.util.L
import java.util.M
import javapns.P
munication.ProxyM
import javapns.devices.D
import javapns.notification.AppleNotificationS
import javapns.notification.AppleNotificationServerBasicI
import javapns.notification.PayloadPerD
import javapns.notification.PushNotificationP
import javapns.notification.PushedN
import javapns.notification.transmission.NotificationProgressL
import javapns.notification.transmission.NotificationT
import javapns.notification.transmission.NotificationT
import mons.collections.CollectionU
import mons.collections.MapU
import mons.lang.StringU
import mons.logging.L
import mons.logging.LogF
import com.notnoop.apns.APNS;
import com.notnoop.apns.ApnsS
import com.notnoop.apns.internal.ApnsConnectionI
import mon.SystemServiceC
import com.sgm.dao.AutoDeployBrandActivityD
public class PushMessageService {
private final static Log LOG = LogFactory.getLog(PushMessageService.class);
private final static String PROD_KEY_LOCATION = "XXXAPNs_Pro_Push.p12";
private final static String DEV_KEY_LOCATION = "XXXAPNs_Dev_Push.p12";
private static String PASSWORD;
private static boolean PRODUCTION =
private final static int NUMBER_OF_THREADS = 10;
private AutoDeployBrandActivityDao dao =new AutoDeployBrandActivityDao();
public static void setProxy(){
SystemServiceConfig config = SystemServiceConfig.getInstance();
if(!StringUtils.isEmpty(config.getProxyHost())){
ProxyManager.setProxy(config.getProxyHost(), config.getProxyPort());
ProxyManager.setJVMProxy(config.getProxyHost(), config.getProxyPort());
("Set Proxy - name:"+config.getProxyHost()+" host:"+config.getProxyPort());
PASSWORD = config.getPushKeyPassword();
PRODUCTION = !config.isDebugMode();
} catch (Exception e) {
LOG.error(e.getMessage());
public void pushAllNow(String message) throws Exception {
setProxy();
List&PayloadPerDevice& unreadCountPerDeviceList = new ArrayList&PayloadPerDevice&();
Map unreadCountPerDeviceMap = dao.getUnreadCountPerIOS();
//Map unreadCountPerDeviceMap = new HashMap();
//unreadCountPerDeviceMap.put("dbb596d4fefdbaa0bb02e725bd6", 2l);
Map unreadCountPerDeviceMap = new HashMap();
unreadCountPerDeviceMap.put("58c973d9 fe5aac9a 4a38a762 cf5ae0bf fbc5b3aa 849cc21e b4e0c8e", 1l);
unreadCountPerDeviceMap.put("58c973d9fe5aac9a4a38a762cf5ae0bffbc5b3aa849cc21ebe0c8e", 1l);
if(MapUtils.isNotEmpty(unreadCountPerDeviceMap)){
String pushMessageText =
Iterator iterator = unreadCountPerDeviceMap.keySet().iterator();
while(iterator.hasNext()){
String deviceCode = iterator.next();
Long count = unreadCountPerDeviceMap.get(deviceCode);
PushNotificationPayload payload = bined(pushMessageText,count.intValue(),"default");
unreadCountPerDeviceList.add(new PayloadPerDevice(payload,deviceCode));
("PUSH TOKEN:"+deviceCode+" payload:"+ payload);
if(CollectionUtils.isNotEmpty(unreadCountPerDeviceList)){
// 1. clean unused devices from db
cleanDevices();
// 2. start to push messages
("starting push all message...");
PushedNotifications pns = Push.payloads(PushMessageService.class.getClassLoader().getResourceAsStream(getKeyLocation()), PASSWORD, PRODUCTION, NUMBER_OF_THREADS, unreadCountPerDeviceList);
("starting push all message completed!");
if(pns!=null){
("Success response from Apple:" + pns.getSuccessfulNotifications());
("Failed response from Apple:" + pns.getFailedNotifications());
public void cleanDevices() throws Exception {
List&Device& invalidDevices = Push.feedback(PushMessageService.class.getClassLoader().getResourceAsStream(getKeyLocation()), PASSWORD, PRODUCTION);
if(CollectionUtils.isNotEmpty(invalidDevices)){
List&String& tokenList = new ArrayList&String&();
Iterator&Device& iterator = invalidDevices.iterator();
while(iterator.hasNext()){
tokenList.add(iterator.next().getToken());
("tokenList"+tokenList);
//dao.deleteByCodes(tokenList);
public static String getKeyLocation(){
if(PRODUCTION){
return PROD_KEY_LOCATION;
return DEV_KEY_LOCATION;
static void main(String[] args){
PushMessageService
service = new PushMessageService();
service.pushAllNow("Bobo");
} catch (Exception e) {
e.printStackTrace();
以下是报的异常:
municationException: Communication exception: java.io.IOException: Unexpected EOF from proxy
munication.ConnectionToAppleServer.getSSLSocket(ConnectionToAppleServer.java:158)
at javapns.feedback.FeedbackServiceManager.getDevices(FeedbackServiceManager.java:70)
at javapns.Push.feedback(Push.java:353)
at com.sgm.service.PushMessageService.cleanDevices(PushMessageService.java:93)
at com.sgm.service.PushMessageService.pushAllNow(PushMessageService.java:79)
at com.sgm.service.PushMessageService.main(PushMessageService.java:116)
Caused by: java.io.IOException: Unexpected EOF from proxy
munication.ConnectionToAppleServer.doTunnelHandshake(ConnectionToAppleServer.java:215)
munication.ConnectionToAppleServer.tunnelThroughProxy(ConnectionToAppleServer.java:171)
munication.ConnectionToAppleServer.getSSLSocket(ConnectionToAppleServer.java:153)
... 5 more
按赞数排序
相关参考资料javaPNS进阶-高级推送技巧 - 推酷
javaPNS进阶-高级推送技巧
1 创建 payloads
javaPNS提供了很多简单易用的通知方式(Push类里的alert,badges,sounds等)这些让你不用自己处理payload.但是我们的程序可能需要复杂的推送信息,因此我们可以通过payload来定制推送信息:
public void send (List&Device& devices, Object keystore, String password, boolean production) {
& & & &/* Build a blank payload to customize */&
& & & & PushNotificationPayload payload = plex();
& & & &/* Customize the payload */&
& & & & payload.addAlert(&Hello World!&);
& & & & payload.addCustomDictionary(&mykey1&, &My Value 1&);
& & & & payload.addCustomDictionary(&mykey2&, 2);
& & & & // etc.
& & & &/* Push your custom payload */&
& & & & List&PushedNotification& notifications = Push.payload(payload, keystore, password, production, devices);
2 发送大量通知(多线程)
javaPNS包含了用于安全高效的发送大量数据的多线程方法,通过下面的代码可以给大量设备发送推送消息
public void send (List&Device& devices, Object keystore, String password, boolean production) {
& & & &/* 准备一个简单的通知 */&
& & & & PushNotificationPayload payload = PushNotificationPayload.alert(&Hello World!&);
& & & &/* 指定需要多少线程发送 */&
& & & & int threads = 30;
& & & &/* 启动线程并发送 */&
& & & & List&PushedNotification& notifications = Push.payload(payload, keystore, password, production, threads, devices);
注意:上面的多线程发送方法只会在所有线程都发送完成后返回一次给notifications,如果你不想等待直到发送完毕,那么就新开一个线程执行上面的操作吧
3生成推送队列(连接池)
javaPNS支持使用队列(连接池)的方式。此队列是一个由多个连接至APNS服务器线程的集合,他们可以实时的将消息推送至APNS。下面是创建连接池的代码
public void send (String token, Object keystore, String password, boolean production) {
& & & &/* 准备一条push信息 */&
& & & & PushNotificationPayload payload = PushNotificationPayload.alert(&Hello World!&);
& & & &/* 指定线程数*/&
& & & & int threads = 30;
& & & &/* 建立队列 */&
& & & & PushQueue queue = Push.queue(keystore, password, production, threads);
& & & &/* Start the queue (所有的线程和连接将被初始化) */&
& & & & queue.start();
& & & &/* 添加一个推送信息 */&
& & & & queue.add(payload, token);
我们可以通过PushQueue的getPushedNotifications() 方法来获取返回信息。
如果你不手动启动此队列,它将会在第一次调用add方式时自动启动
4更灵活的发送方式
&javaPNS可以使用下面这种更灵活的方式发送通知:
public void send (List&Device& devices, Object keystore, String password, String appleHost, int applePort) {
& & & &/* 指定服务器信息 */&
& & & & AppleNotificationServer customServer = new AppleNotificationServerBasicImpl(keystore, password, ConnectionToAppleServer.KEYSTORE_TYPE_PKCS12, appleHost, applePort);
& & & &/* 创建一个简单的payload */&
& & & & PushNotificationPayload payload = PushNotificationPayload.alert(&Hello World!&);
& & & &/* 创建一个 push notification manager */&
& & & & PushNotificationManager pushManager = new PushNotificationManager();
& & & &/* 初始化连接 */&
& & & & pushManager.initializeConnection(customServer);
& & & &/* 推送消息并获得结果*/&
& & & & List&PushedNotification& notifications = pushManager.sendNotifications(payload, devices);
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见javaPns向Iphone推送消息,无错误提示,Iphone设备端收不到信息_百度知道
javaPns向Iphone推送消息,无错误提示,Iphone设备端收不到信息
请进入设置,将javapns应用的消息通知打开你好,通知,不然是不会有推送通知的
其他类似问题
为您推荐:
iphone的相关知识
其他1条回答
先去手机的设备那,看看USB连接上了没,有就将“通知”里的通知程序打开。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁javaPns向Iphone推送消息,无错误提示,Iphone设备端收不到信息_百度知道
javaPns向Iphone推送消息,无错误提示,Iphone设备端收不到信息
密码正确。有谁用javapns成功做出过推送,Iphone端接收不到消息,求解在java项目中使用javaPns包向Iphone推送消息,程序无错误信息,苹果无返回出错信息。证书使用p12文件
提问者采纳
我也遇到同样的问题,求解,楼主你解决了吗
提问者评价
采纳率100%
其他类似问题
为您推荐:
iphone的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 dnf收益制裁怎么回事 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信