Utiliser Service de Notification Push Apple via Java

Suis en train de mettre en œuvre un programme Java qui envoie une Notification Push d'Apple pour un iPhone application client... Trouvé la bibliothèque suivante: Java APNs

Code fournisseur:

Créé le code suivant (à partir de Javapns) à utiliser dans mon application:

try {
    PayLoad payLoad = new PayLoad();

    payLoad.addAlert("My alert message");
    payLoad.addBadge(45);
    payLoad.addSound("default");

    PushNotificationManager pushManager = PushNotificationManager.getInstance();
    pushManager.addDevice("iPhone", "f4201f5d8278fe39545349d0868a24a3b60ed732");
    log.warn("Initializing connectiong with APNS...");

    //Connect to APNs
    pushManager.initializeConnection(HOST, PORT, 
                                 "/etc/Certificates.p12", "password", 
    SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);

    Device client = pushManager.getDevice("Lambo");

    //Send Push
    log.warn("Sending push notification...");
    PushNotificationManager.getInstance().sendNotification(client, payLoad);
 }
 catch (Exception e) {
    throw new ApnsPushNotificationException("Unable to send push " + e);
 }

Quand je lance cette application (que vous pouvez voir à travers la Log4j consolidés) il n'y a pas d'exceptions qui se produisent:

  WARN  [MyCode] Initializing connectiong with APNS...
  WARN  [MyCode] Sending push notification...

Mais mon application client ne reçoit pas de notifications!

IDPP Processus d'Inscription:

Aussi, fait le suivre sur le Portail iPhone Developer Program (IDPP):

  • Créé l'APN en fonction SSL Certificat et les Clés
  • Créé et installé le profil de configuration
  • Installé le Certificat SSL et la Clé sur le serveur.

Avoir lu en entier le Service de Notification Push Apple Guide à plusieurs reprises et a remarqué quelques choses:

(1) À la page 15, il précise que le dispositif de jeton n'est pas le même que le dispositif UDID (dont je suis actuellement transmet de façon incorrecte en tant que second paramètre à l'intérieur de la PushNotificationManager.addDevice (), méthode (voir ci-dessus)).

À la page 17, il est dit:

"APNs génère un dispositif de jeton en utilisant les informations contenues dans le dispositif unique de certificat. Le dispositif de jeton contient un identifiant de l'appareil. Il crypte le dispositif de jeton avec un jeton de clé et le renvoie à l'appareil. L'appareil retourne l'appareil jeton à la demande comme un NSData objet. L'application doit alors livrer le dispositif de jeton à son fournisseur en binaire ou en hexadécimal de format."

iPhone OS Client de la mise en Œuvre

(2) Après la lecture de pages 33 - 34, j'ai découvert que je ne comprend pas le code Objective-C pour l'application de registre avec un Apn.

Ne suis pas un Objectif-développeur C, donc est-ce là où je peux récupérer le code de l'appareil ou dois-je l'obtenir à partir de ce certificat?

Où puis-je obtenir le dispositif de jeton (désolé, quelqu'un d'autre a écrit l'Objective-C application cliente et je suis un Développeur Java)?

Question(s):

(1) À l'exception de ne pas savoir où obtenir de l'appareil jeton et le client mobile code d'enregistrement, est-il autre chose que je n'ai pas regardé plus ou raté?

(2) Suis-je à l'aide de la Javapns de la bibliothèque de la bonne façon?

Merci d'avoir pris le temps de lire ceci...

Est DeviceID et Dispositif de jeton de même ?

OriginalL'auteur mw_javaguy | 2009-08-31