1.开启push log
javapns使用的log4j,为确保log的正常工作,在使用过程中添加如下代码:
import org.apache.log4j.*; ... try { BasicConfigurator.configure(); ... } catch (Exception e) { //do sth. }
log4j.properties中添加:
log4j.logger.javapns=debug
2
.sandbox(开发环境)到production(产品环境)迁移的注意事项
两套环境的device tokens是不同的,在迁移后需要更新device tokens。
两套环境的certificates也是不同的,需要更新证书。
修复sandbox环境工作,production推送失败的解决方案。
http:
//www.techjini.com/blog/how-we-fixed-production-push-notifications-not-working-while-sandbox-works/
3
.定制消息内容
public void send (List<Device> devices, Object keystore, String password, boolean production) { /* Build a blank payload to customize */ PushNotificationPayload payload = PushNotificationPayload.complex(); /* Customize the payload */ payload.addAlert("Hello World!"); //apple提示消息 payload.addCustomDictionary("webview", "http://www.womai.com"); //隐藏参数,用于实现一些定制操作,比如自动跳转。 payload.addCustomDictionary("mykey2", 2); // etc. /* Push your custom payload */ List<PushedNotification> notifications = Push.payload(payload, keystore, password, production, devices); }
4.多线程批量发送推送消息
public void send (List<Device> devices, Object keystore, String password, boolean production) { /* Prepare a simple payload to push */ PushNotificationPayload payload = PushNotificationPayload.alert("Hello World!"); /* Decide how many threads you want to create and use */ int threads = 30; /* Start threads, wait for them, and get a list of all pushed notifications */ List<PushedNotification> notifications = Push.payload(payload, keystore, password, production, threads, devices); }
备注:以上多线程方法在所有线程执行完后返回,如果不想等线程执行完毕,可以通过在内部创建一个单独的线程:
(示例: new Thread() {public void run() {...}}.start();).
5.创建消息队列(连接池)
一个队列就是一组连接APNS的多线程连接,队列会动态将消息分发到不同的线程中去。
public void send (String token, Object keystore, String password, boolean production) { /* Prepare a simple payload to push */ PushNotificationPayload payload = PushNotificationPayload.alert("Hello World!"); /* Decide how many threads you want your queue to use */ int threads = 30; /* Create the queue */ PushQueue queue = Push.queue(keystore, password, production, threads); /* Start the queue (all threads and connections and initiated) */ queue.start(); /* Add a notification for the queue to push */ queue.add(payload, token); }
备注:如果不通过queue.start消息队列,队列会在第一次调用queue.add 的时候启动
5.建议开启EnhancedNotificationFormat
默认为开启状态,建议开启,开启后可以通过Payload对象获取到更多推送消息的详细信息,例如执行状态,失效时间等。
6.推送状态(错误)管理
1)error-response packets
pushedNotification.isSuccessful() //判断是否推送成功
pushedNotification.getException() //获取详细错误信息,系统中错误不会抛出,以保证多线程的正常运作,错误信息会记录到pushedNotification中。
示例代码:
List<PushedNotification> notifications = Push.alert("Hello World!", "keystore.p12", "keystore_password", false, devices); for (PushedNotification notification : notifications) { if (notification.isSuccessful()) { /* Apple accepted the notification and should deliver it */ System.out.println("Push notification sent successfully to: " + notification.getDevice().getToken()); /* Still need to query the Feedback Service regularly */ } else { String invalidToken = notification.getDevice().getToken(); /* Add code here to remove invalidToken from your database */ /* Find out more about what the problem was */ Exception theProblem = notification.getException(); theProblem.printStackTrace(); /* If the problem was an error-response packet returned by Apple, get it ResponsePacket theErrorResponse = notification.getResponse(); if (theErrorResponse != null) { System.out.println(theErrorResponse.getMessage()); } } }
2)Feedback Service
public class FeedbackTest {
public static void main(String[] args) {
List<Device> inactiveDevices = Push.feedback("keystore.p12", "keystore_password", false); /* remove inactive devices from your own list of devices */
}
备注:Sandbox Feedback Service not listing device after app is removed
Delays involving the Feedback service
相关推荐
"ios推送工具.zip"是一个专为iOS开发者设计的工具,尤其适用于Mac用户,它简化了推送通知的测试过程,无需复杂的后台配置。这个压缩包包含的文件名为"SmartPush-2.0",很可能是该工具的最新版本。 1. **Apple Push ...
【苹果iOS推送Java服务端详解】 在iOS应用开发中,苹果提供了远程通知(Apple Push Notification service,简称APNs)服务,使得开发者可以向用户的设备发送消息,即使应用没有在前台运行也能接收到这些消息。本篇...
iOS 推送消息技术详解 iOS 推送消息是许多 iOS 应用都具备的功能,它允许开发者向用户推送消息,提高用户体验和应用的粘性。本文将详细介绍 iOS 推送消息的工作机制、证书生成过程和工程代码实现。 一、iOS 推送...
2. 配置项目:在Xcode项目中,导入证书并配置推送服务。 3. 注册设备:在应用程序中添加代码以注册设备,获取设备令牌。 4. 后端集成:在服务器端,使用设备令牌和APNs证书建立连接,编写发送推送通知的代码。 5. ...
JavaPNS是Java平台上用于实现Apple Push Notification Service (APNS) 的一个开源库,主要用来向iOS设备发送推送通知。这个库的版本2.2和2.2.1是两个不同迭代的版本,可能包含了一些优化和修复了之前版本中的问题。...
当开发者想要向用户的iOS设备发送推送通知时,他们需要配置一个aps_developer_identity.cer证书,这个证书用于验证开发者有权发送推送通知到特定的应用。在PushMeBaby中,你可以替换这个证书,以便在不同的测试环境...
在iOS平台上,推送通知是一种非常...总的来说,基于Java的iOS推送通知涉及到了iOS的通知机制、JavaPNS库的使用以及与APNS服务器的交互。正确配置和使用这些组件,可以有效地实现在Java服务端向iOS设备发送推送通知。
2. **安装包**:安装包包含了服务程序的部署脚本和配置文件,允许用户在Windows服务器上简单快捷地安装和配置APNs推送服务。安装过程可能涉及到服务注册、环境变量设置、证书导入等步骤。 3. **证书管理**:APNs...
Java实现iOS推送主要是通过使用第三方库,如javapns,来与Apple Push Notification Service (APNs)进行交互。下面我们将深入探讨这个话题。 首先,让我们理解APNs。APNs是苹果公司提供的一个服务,它允许开发者向...
用php实现ios推送效果的服务器端,简单快捷的实现推送
如果用户同意,应用程序将通过与APNS交互获取一个唯一的`deviceToken`,这个token是用于标识设备的,后续推送消息会基于此token。 2. **获取deviceToken**: 应用程序接收到`deviceToken`后,需要将其发送到服务端。...
友盟推送配置教程是针对iOS开发者的一份详细指南,旨在帮助开发者学会如何在iOS平台上实现友盟推送服务的配置。友盟推送(UMENG Push)是友盟网提供的一个免费推送服务,它可以为移动应用提供稳定的推送通知功能。 ...
在iOS应用开发中,消息推送是一项重要的功能,它允许服务器向设备发送通知,即使应用程序在后台运行或完全关闭。这个“ios 消息推送 java后端demo”是为开发者提供的一个示例,帮助理解如何使用Java后端实现对iOS...
在iOS应用开发中,推送服务是一项至关重要的功能,它允许应用程序在后台接收并处理服务器发送的通知,从而提高用户体验。本文将深入探讨如何使用Golang语言来构建一个针对iOS设备的推送服务,同时也会涉及到Swift...
mac 上使用的iOS 推送测试工具,dmg格式,安装即可使用
在iOS中,为了实现消息推送,开发者需要创建一个证书,并将其配置在服务器上,以便通过APNs接口发送推送消息。 APNS.php文件是PHP服务端源码的核心部分,它实现了与APNs服务器通信的功能。这个文件通常包含以下关键...
iOS消息推送系统基于Apple Push Notification Service (APNS),这是一个由苹果公司提供的后端服务,用于将远程通知、警报或自定义数据推送到iOS、iPadOS、tvOS和watchOS设备上的应用程序。整个过程可以分为三个主要...
- 尽管JavaPNS_2.2.jar没有直接包含示例代码,但通常开源项目会提供相关示例或文档,指导开发者如何初始化、配置和使用该库进行推送操作。 总的来说,JavaPNS_2.2.jar是一个强大的工具,它简化了Java开发者与APNs...
本主题主要关注"U盟消息推送"、"phpiOS推送"、"php安卓推送"以及"thinkPHP推送"这四个关键概念。接下来,我们将深入探讨这些知识点。 首先,"U盟消息推送"是一种第三方推送服务,它提供了一整套跨平台的消息推送...