1

クライアントでIonic Native Push Notifications、サーバーでJava com.notnoop.apnsのIonic 3を使用しています。iOSプッシュ通知が機能しない

Androidのデバイスでプッシュ通知が正常に機能するようになりました。ただし、iOS deviseでは、クライアントは通知を表示しません。

クライアント(TS)

 let topics: string[] = [this.personModelLoggedIn.uid]; 
     const options: PushOptions = { 
      android: { 
      senderID: "XXXXXXXXXXXXXX", 
      sound: "true", 
      vibrate: "true", 
      topics: topics 
      }, 
      ios: { 
      alert: "true", 
      badge: false, 
      sound: "true" 
      }, 
      windows: {} 
     }; 
     const pushObject: PushObject = this.push.init(options); 


     pushObject.on('notification').subscribe((data: any) => { 
      alert('Received Notification!!! message = ' + data.message); 
     }); 

サーバー(Java)の

アンドロイド

private String sendAndroidPushNotification(String device_token, String topics, String title, String message) 
     throws Exception { 
    String pushMessage = null; 
    if (device_token != null && !device_token.equals("null")) { 
     pushMessage = "{\"data\":{\"title\":\"" + title + "\",\"message\":\"" + message + "\"},\"to\":\"" 
       + device_token + "\"}"; 
    } else { 
     pushMessage = "{\"data\":{\"title\":\"" + title + "\",\"message\":\"" + message + "\"},\"to\": \"/topics/" 
       + topics + "\"}"; 
    } 
    // Create connection to send FCM Message request. 
    URL url = new URL("https://fcm.googleapis.com/fcm/send"); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setRequestProperty("Authorization", "key=" + SERVER_KEY); 
    conn.setRequestProperty("Content-Type", "application/json"); 
    conn.setRequestMethod("POST"); 
    conn.setDoOutput(true); 
    // Send FCM message content. 
    OutputStream outputStream = conn.getOutputStream(); 
    outputStream.write(pushMessage.getBytes()); 

    return "Android Push Notification: " + conn.getResponseCode() + " " + conn.getResponseMessage() + " - " + pushMessage; 
} 

のiOS

private String sendIOSPushNotification(String device_token, String topics, String title, String message) 
     throws Exception { 
    ApnsService service = APNS.newService().withCert(PATH_TO_P12_CERT, CERT_PASSWORD).withSandboxDestination() 
      .build(); 

    String payload = APNS.newPayload() 
      // .customFields(map) 
      .alertBody(title + " " + message).sound("default").build(); 

    //service.push(Utilities.encodeHex(topics.getBytes()), payload); 
    service.push(device_token), payload); 
    return "iOS Push Notification: " + title + " " + message; 
} 

上記の2つのJavaメソッドが適切なdevise tokensで呼び出されると、Android deviseは通知を受け取りますが、iOS deviseは通知を受けません。

質問

誰もが私のiOSコード(クライアントまたはサーバーのいずれか)と間違って何助言することができる場合、私はあなたのアドバイスをいただければ幸いです。

UPDATE

私は私のアプリをapns-prod-cert.p12で、http://pushtry.com/に私のAPNSをテストしようとすると、私は次の取得:

プッシュ通知が正常に

送信され、クライアントはありません通知を表示します。これにより、私のサーバーコードに何か問題があると思うようになります。

答えて

0

ソリューション

private String sendIOSPushNotification(String device_token, String topics, String title, String message) 
     throws Exception { 
    ApnsServiceBuilder serviceBuilder = APNS.newService(); 
     serviceBuilder.withCert(PATH_TO_P12_CERT, CERT_PASSWORD) 
       .withProductionDestination(); 
    ApnsService service = serviceBuilder.build(); 
    String payload = APNS.newPayload() 
      .alertBody(message) 
      .alertTitle(title) 
      .sound("default") 
      .customField("custom", "custom value").build(); 
    service.push(device_token, payload); 

    return "iOS Push Notification: " + title + " " + message; 
} 
関連する問題