Вам нужно будет перебирать свои устройства индивидуально и создавать отдельную полезную нагрузку для каждого из них.В этом примере мы передаем различное количество значков каждому пользователю:
Объявите ваш ApnsService как пул потоков, чтобы пуш выполнялся быстро
ApnsService service = null;
service = APNS.newService()
.withCert(certificatePath, certificatePassword)
.withProductionDestination()
.asPool(threadCount)
.build();
service.start();
Создайте базу полезной нагрузки вне итерации вашего устройства
PayloadBuilder payloadBuilder = APNS.newPayload();
payloadBuilder = payloadBuilder
.alertBody("yourMessage")
.sound("default"));
Перебирайте устройства и добавляйте пользовательское сообщение или параметры
for (ApnsDevice apnsDevice : apnsDeviceList) {
try {
PayloadBuilder perDevicePayloadBuilder = payloadBuilder.copy()
.badge(apnsDevice.getBadgeCount()+1);
// check if the message is too long (it won't be sent if it is)
//and trim it if it is.
if (perDevicePayloadBuilder.isTooLong()) {
logger.warn("Payload is too long, shrinking it");
perDevicePayloadBuilder = perDevicePayloadBuilder.shrinkBody();
}
String token = apnsDevice.getDeviceToken();
service.push(token, perDevicePayloadBuilder.build());
} catch (Exception ex) {
logger.error("Error while pushing apns alerts", ex);
}
}