Я использую java-клиент для отправки уведомлений с помощью javapns. Но теперь мне нужно уведомить клиентское приложение о новом уведомлении, используя «content-available»: 1, чтобы приложение могло поднять флажок содержимого, доступного в его конце.

До сих пор я использовал код, аналогичный приведенному ниже,

 PushNotificationPayload payload = PushNotificationPayload.complex();

    payload.addAlert(apnsUser.getPushMessage());
    payload.addSound("default");
    payload.addCustomDictionary("someKey", someValue);

    List<ListNotification> notifications = Push.payload(payload, somekeyStore, somepassword, isproduction, threads, devices);

Но у класса полезной нагрузки нет заполнителя для "доступного содержимого": 1. Я также проверил, есть ли

Push.contentAvailable(keystore, vKeyStoreName, production, devices) 

Но он не позволяет установить значение пользовательского сообщения someKey.

Предложите способ отправки «контент доступен»: 1 при срабатывании уведомления.

1
ViS 23 Фев 2016 в 20:13

2 ответа

Лучший ответ

Извините за то, что опубликовал свой ответ так поздно, я понял это тогда. Это довольно просто.

  JSONObject vSomeDictionary = new JSONObject();
  vSomeDictionary.put("content-available", 1);
  vSomeDictionary.put("alert", "SomeMessage");
  vSomeDictionary.put("sound", "default");
  JSONObject vJPayload = new JSONObject();
  vJPayload.put("aps", vSomeDictionary);

Таким образом, вы можете установить доступный контент, создав два разных объекта Json и поместив один в другой как «точки доступа».

0
ViS 22 Апр 2016 в 20:36
PayloadBuilder payloadBuilder = APNS.newPayload()
                .alertBody(message)
                .sound(sound)
                .actionKey(actionLocKey)
                .localizedKey(locKey)
                .localizedArguments(locArgs)
                .badge(badge)
                .customFields(customData)
                .category(category);
        if (contentAvailable!=null && contentAvailable.intValue()==1){
            payloadBuilder.instantDeliveryOrSilentNotification();
        }
        payload =payloadBuilder.build();
1
Priya 5 Дек 2016 в 09:39