Problem beim senden über den Apple Push Notification mit Java-und REST -

Dies ist ein follow-up zu meinem vorherigen posting auf StackOverflow.

Dachte, es ist besser, Sie beginnen einen neuen Beitrag (da machte ich mehr Fortschritte als vorher), anstatt das anfügen einer neuen Frage zu einem früheren thread.

Bin mit dem Javapns Bibliothek auf Google Code zu senden ein Apple Push Notification über eine REST-basierte web-service...

Hier sind die Schritte, die ich abgeschlossen haben:

iPhone Developer Program Portal (IDPP):

(1) Erstellt die App-ID und die APNS-basierte SSL-Zertifikat und Schlüssel.

(2) Erstellt und installiert das provisioning-Profil.

(3) Installiert das SSL-Zertifikat und Schlüssel auf dem server.

(4) richten Sie die app " mein iPhone zu registrieren für remote-Benachrichtigungen.

XCode:

Erhalten konnte mein Gerät-token, wenn ich erstellt und bereitgestellt meine app auf meinem Gerät.

Sobald meine iPhone-app bereitgestellt, der dialog kam auf meinem iPhone anzeigt, dass meine app möchten, senden Sie push-Benachrichtigungen und auch nicht um Erlaubnis gefragt, um Ihnen zu erlauben.

Wenn ich aufgerufen, meine web-service, durch meine Log4J Aussagen, ich war in der Lage zu sehen, dass meine REST-basierte web-service war in der Tat aufgerufen, aber ich bekam nie eine push Benachrichtigung auf mein iPhone app!

ApnsManager Klasse:

public class ApnsManager {

    /** APNs Server Host **/
    private static final String HOST = "gateway.sandbox.push.apple.com";

    /** APNs Port */
    private static final int PORT = 2195;

    public void sendNotification(String deviceToken) 
    throws Exception {
       try {
           PayLoad payLoad = new PayLoad();
           payLoad.addAlert("My alert message");
           payLoad.addBadge(45);
           payLoad.addSound("default");

           PushNotificationManager pushManager = 
              PushNotificationManager.getInstance();

           pushManager.addDevice("iPhone", deviceToken);

           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("iPhone");

           //Send Push
           log.warn("Sending push notification...");
           pushManager.sendNotification(client, payLoad);
           pushManager.stopConnection();
       } 
       catch (Exception e) {
           e.printStackTrace("Unable to send push ");
       }   
    }
}

RESTful-Web-Service:

 @Path(ApnService.URL)
 @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
 public class ApnService {
    public static final String URL = "/apns";

    @GET
    @Path("send")
    @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public String send() throws JSONException, IOException {
        String msg = "";

        try {
            log.debug("Inside ApnService.send() method.");
            log.debug("Sending notification to device");
            ApnManager.sendNotification("32b3bf28520b977ab8eec50b482
            25e14d07cd78 adb69949379609e40401d2d1de00000000738518e5c
            000000003850978c38509778000000000000000000398fe12800398f
            e2e0398fe1040000");
         } catch(Exception e ) {
               e.printStackTrace();
               msg = "fail";
         }
         msg = "success";

         StringWriter sw = new StringWriter();
         JsonFactory f = new JsonFactory();
         JsonGenerator g = f.createJsonGenerator(sw);

         g.writeStartObject();
         g.writeStringField("status", msg);
         g.writeEndObject();
         g.close();

         return sw.toString();
     }
}

Wenn ich nun die Bereitstellung der app my app-server und öffnen Sie ein rest-client und geben Sie ein:

http: //localhost:8080/myapp/apns/senden

Den rest-client gibt diese:

HTTP/1.1 200 OK

Den folgenden log-Meldungen werden ausgegeben, um meine Konsole:

01:47:51,985 WARN  [ApnsManager] Initializing connectiong with APNS...
01:47:52,318 WARN  [ApnsManager] Sending push notification...

MyAppDelegate.m

- (void) applicationDidFinishLaunching : 
  (UIApplication*) application 
{   
  NSLog( @"LAUNCH" );

  //Configure REST engine
  RESTAPI* api = [RESTAPI getInstance];
  [api setNetworkAddress:kLocalAddress port:kDefaultPort];

  UIRemoteNotificationType notificationTypes 
     = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound;
  if ([[UIApplication sharedApplication] enabledRemoteNotificationTypes] 
      != notificationTypes) {
       NSLog(@"Registering for remote notifications...");
       [[UIApplication sharedApplication]
       registerForRemoteNotificationTypes:notificationTypes];
   } else {
       NSLog(@"Already registered for remote notifications...");
       //Uncomment this if you want to unregister
       //NSLog(@"Unregistering for remote notifications...");
       //[[UIApplication sharedApplication] unregisterForRemoteNotifications];
   }

 mainWindow = [[[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds] retain];
 toolsNav = [[[ToolsNav alloc] init] retain];

 [mainWindow addSubview:toolsNav.view];
 [mainWindow makeKeyAndVisible];
} 

Aber ich don ' T erhalten die push-Benachrichtigung auf meiner app (die sich auf meinem iPhone)!

Bin echt ratlos an dieser Stelle...

Was könnte ich möglicherweise falsch gemacht? 🙁

Ist es ein problem mit der Art, wie ich meine RESTful-web-service (sorry ich bin ein Neuling, AUSRUHEN)?

Wäre wirklich dankbar wenn jemand könnte mir helfen mit diesem...

Vielen Dank für die Zeit nehmen, dies zu Lesen...

Die Token-Zeichenfolge ein Leerzeichen enthält. Wurde es eingeführt, wenn Sie kopiert den code hier? Versuchen Sie, es zu entfernen.
Hi Saeed... ja, die token-Zeichenfolge Raum eingeführt wurde, wenn ich den kopierten code (und formatiert den code, damit es optisch mehr hier). In meinem code gibt es keinen Raum. Ich bin immer noch nicht also ich würde mich freuen, wenn mir jemand helfen könnte mit diesem. Ich habe little snitch laufen und wenn ich den web service fragt er mich, ob ich möchte, um eine Verbindung zu port 2195, und es sendet die push notification. Es funktioniert einfach nicht scheinen auf meinem iPhone die app. Gibt es etwas, was ich falsch mache? Ist es die REST-code?
Sollten Sie auch den code für das "Handling Remote-Benachrichtigungen" Methoden des UIApplicationDelegate, die Sie implementiert haben.
bpapa, Danke für die Anregung... vielen Dank für die Beantwortung!

InformationsquelleAutor mw_javaguy | 2009-09-03

Schreibe einen Kommentar