2017-02-09 10 views
0

Я хочу отправить push уведомление на iphone с помощью java. Для этого я кулаком по этой библиотеке называется relayrides pushy. Но я новичок в этом деле APNS.как отправить push-уведомление в iphone с помощью java

Что я хочу делать Я хочу отправить простое сообщение типа «привет мир» на iphone в качестве уведомления.

Что я имею У меня есть один файл, Certificates.p12 файл с паролем. У меня также есть токен устройства и идентификатор gcn.

Может ли кто-нибудь показать мне пример кода подключения и отправки push уведомление с использованием pushy. Какую зависимость maven следует включать ?, потому что каждый раз, когда я посещаю какой-то сайт, я получаю ошибки, например SimpleApnsPushNotification класс, не найденный в библиотеке, или PushManager класс не найден. А также, что SLF4J имеет отношение к отправке уведомлений, пожалуйста, предоставьте мне некоторые соответствующие фрагменты кода для обработки этих проблем, потому что я полностью испорчен.

+1

down voters обратите внимание, что для этого нет ни одного ресурса в stackoverflow, ни при поиске на любом другом сайте. – JPG

ответ

0

Просто попробуйте немного помочь вам, я собираюсь включить код, который реализует pushy. Метод send() берет в себе токен String (device appId), значение String текста, которое вы хотите отправить, и настраиваемое свойство, которое вы можете отправить вместе (только для вас в качестве примера). Я действительно надеюсь, что это поможет вам.

public class PushNotificationManager { 
    private static final Log log = LogFactory.getLog(PushNotificationManager.class); 
    private static final Object SINGLETON_LOCK = new Object(); 
    private static final Object PUSH_MANAGER_LOCK = new Object(); 
    private static PushNotificationManager singleton; 
    private final SSLContext ssl; 
    private PushManager<SimpleApnsPushNotification> pushManager; 

    private PushNotificationManager() throws UnrecoverableKeyException, KeyManagementException, KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException { 
     File certificateFile = new File(PropertyUtil.getInstance().get("apns", "file")); 
     ssl = SSLContextUtil.createDefaultSSLContext(certificateFile.getAbsolutePath(), "yourCertPassword"); 
    } 

    private PushManager<SimpleApnsPushNotification> getPushManager() { 
     if (pushManager == null || pushManager.isShutDown()) { 
      synchronized (PUSH_MANAGER_LOCK) { 
       if (pushManager == null || pushManager.isShutDown()) { 
        ApnsEnvironment apnsEnviroment = ApnsEnvironment.getSandboxEnvironment(); 
        PushManagerConfiguration config = new PushManagerConfiguration(); 
        ApnsConnectionConfiguration connectionConfiguration = new ApnsConnectionConfiguration(); 
        config.setConnectionConfiguration(connectionConfiguration); 
        PushManager<SimpleApnsPushNotification> newPushManager = new PushManager<SimpleApnsPushNotification>(apnsEnviroment, ssl, null, null, null, config, "ExamplePushManager"); 
        newPushManager.start(); 
        pushManager = newPushManager; 
       } 
      } 
     } 
     return pushManager; 
    } 

    public static PushNotificationManager getInstance() { 
     if (singleton == null) { 
      synchronized (SINGLETON_LOCK) { 
       if (singleton == null) { 
        try { 
         singleton = new PushNotificationManager(); 
        } catch (UnrecoverableKeyException | KeyManagementException | KeyStoreException | NoSuchAlgorithmException | CertificateException | IOException e) { 
         log.error("Error loading key.", e); 
        } 

       } 
      } 
     } 
     return singleton; 
    } 

    public void send(String tokenString, String text, String customProperty) throws MalformedTokenStringException, InterruptedException { 
     try { 
      final byte[] token = TokenUtil.tokenStringToByteArray(tokenString); 
      final ApnsPayloadBuilder payloadBuilder = new ApnsPayloadBuilder(); 
      payloadBuilder.setAlertBody(text); 
      payloadBuilder.addCustomProperty("customProperty", customProperty); 
      getPushManager().getQueue().put(new SimpleApnsPushNotification(token, payloadBuilder.buildWithDefaultMaximumLength())); 
     } catch (Exception e) { 
      pushManager = null; 
      throw e; 
     } 
    }