`
hymcn2008
  • 浏览: 3007 次
社区版块
存档分类
最新评论

基于javapns的IOS推送的配置

阅读更多

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推送工具.zip"是一个专为iOS开发者设计的工具,尤其适用于Mac用户,它简化了推送通知的测试过程,无需复杂的后台配置。这个压缩包包含的文件名为"SmartPush-2.0",很可能是该工具的最新版本。 1. **Apple Push ...

    苹果ios推送java服务端耗码demo

    【苹果iOS推送Java服务端详解】 在iOS应用开发中,苹果提供了远程通知(Apple Push Notification service,简称APNs)服务,使得开发者可以向用户的设备发送消息,即使应用没有在前台运行也能接收到这些消息。本篇...

    IOS推送消息docx文档

    iOS 推送消息技术详解 iOS 推送消息是许多 iOS 应用都具备的功能,它允许开发者向用户推送消息,提高用户体验和应用的粘性。本文将详细介绍 iOS 推送消息的工作机制、证书生成过程和工程代码实现。 一、iOS 推送...

    iOS推送服务器

    2. 配置项目:在Xcode项目中,导入证书并配置推送服务。 3. 注册设备:在应用程序中添加代码以注册设备,获取设备令牌。 4. 后端集成:在服务器端,使用设备令牌和APNs证书建立连接,编写发送推送通知的代码。 5. ...

    JAVA IOS推送 javaPNS2.2与javaPNS2.2.1

    JavaPNS是Java平台上用于实现Apple Push Notification Service (APNS) 的一个开源库,主要用来向iOS设备发送推送通知。这个库的版本2.2和2.2.1是两个不同迭代的版本,可能包含了一些优化和修复了之前版本中的问题。...

    PushMeBaby ios推送通知测试工具

    当开发者想要向用户的iOS设备发送推送通知时,他们需要配置一个aps_developer_identity.cer证书,这个证书用于验证开发者有权发送推送通知到特定的应用。在PushMeBaby中,你可以替换这个证书,以便在不同的测试环境...

    基于Java的 iOS 推送通知

    在iOS平台上,推送通知是一种非常...总的来说,基于Java的iOS推送通知涉及到了iOS的通知机制、JavaPNS库的使用以及与APNS服务器的交互。正确配置和使用这些组件,可以有效地实现在Java服务端向iOS设备发送推送通知。

    IOS推送服务windows服务程序及安装包代码

    2. **安装包**:安装包包含了服务程序的部署脚本和配置文件,允许用户在Windows服务器上简单快捷地安装和配置APNs推送服务。安装过程可能涉及到服务注册、环境变量设置、证书导入等步骤。 3. **证书管理**:APNs...

    java实现IOS推送

    Java实现iOS推送主要是通过使用第三方库,如javapns,来与Apple Push Notification Service (APNs)进行交互。下面我们将深入探讨这个话题。 首先,让我们理解APNs。APNs是苹果公司提供的一个服务,它允许开发者向...

    ios推送php服务器端

    用php实现ios推送效果的服务器端,简单快捷的实现推送

    ios推送java服务端

    如果用户同意,应用程序将通过与APNS交互获取一个唯一的`deviceToken`,这个token是用于标识设备的,后续推送消息会基于此token。 2. **获取deviceToken**: 应用程序接收到`deviceToken`后,需要将其发送到服务端。...

    友盟推送配置教程iOS

    友盟推送配置教程是针对iOS开发者的一份详细指南,旨在帮助开发者学会如何在iOS平台上实现友盟推送服务的配置。友盟推送(UMENG Push)是友盟网提供的一个免费推送服务,它可以为移动应用提供稳定的推送通知功能。 ...

    ios 消息推送 java后端demo(包括jar包)

    在iOS应用开发中,消息推送是一项重要的功能,它允许服务器向设备发送通知,即使应用程序在后台运行或完全关闭。这个“ios 消息推送 java后端demo”是为开发者提供的一个示例,帮助理解如何使用Java后端实现对iOS...

    swift-基于Golang开发的iOS推送服务

    在iOS应用开发中,推送服务是一项至关重要的功能,它允许应用程序在后台接收并处理服务器发送的通知,从而提高用户体验。本文将深入探讨如何使用Golang语言来构建一个针对iOS设备的推送服务,同时也会涉及到Swift...

    iOS 推送测试工具

    mac 上使用的iOS 推送测试工具,dmg格式,安装即可使用

    ios消息推送源码(含php服务端源码)

    在iOS中,为了实现消息推送,开发者需要创建一个证书,并将其配置在服务器上,以便通过APNs接口发送推送消息。 APNS.php文件是PHP服务端源码的核心部分,它实现了与APNs服务器通信的功能。这个文件通常包含以下关键...

    IOS推送消息

    iOS消息推送系统基于Apple Push Notification Service (APNS),这是一个由苹果公司提供的后端服务,用于将远程通知、警报或自定义数据推送到iOS、iPadOS、tvOS和watchOS设备上的应用程序。整个过程可以分为三个主要...

    JavaPNS_2.2消息推送.zip

    - 尽管JavaPNS_2.2.jar没有直接包含示例代码,但通常开源项目会提供相关示例或文档,指导开发者如何初始化、配置和使用该库进行推送操作。 总的来说,JavaPNS_2.2.jar是一个强大的工具,它简化了Java开发者与APNs...

    U盟消息推送_phpios推送_php安卓推送_thinkphp推送

    本主题主要关注"U盟消息推送"、"phpiOS推送"、"php安卓推送"以及"thinkPHP推送"这四个关键概念。接下来,我们将深入探讨这些知识点。 首先,"U盟消息推送"是一种第三方推送服务,它提供了一整套跨平台的消息推送...

Global site tag (gtag.js) - Google Analytics