code: private static PushedNotifications sendPayloads(Object keystore, String password, boolean production, Object payloadDevicePairs) throws CommunicationException, KeystoreException {
  		PushedNotifications notifications = new PushedNotifications();
  		if (payloadDevicePairs == null) return notifications;
  		PushNotificationManager pushManager = new PushNotificationManager();
  		try {
  			AppleNotificationServer server = new AppleNotificationServerBasicImpl(keystore, password, production);
  			pushManager.initializeConnection(server);
  			List<PayloadPerDevice> pairs = Devices.asPayloadsPerDevices(payloadDevicePairs);
  			notifications.setMaxRetained(pairs.size());
  			for (PayloadPerDevice ppd : pairs) {
  				Device device = ppd.getDevice();
  				Payload payload = ppd.getPayload();
  				try {
  					PushedNotification notification = pushManager.sendNotification(device, payload, false);
  					notifications.add(notification);
  				} catch (Exception e) {
  					notifications.add(new PushedNotification(device, payload, e));
  				}
  			}
  		} finally {
  			try {
  				pushManager.stopConnection();
  			} catch (Exception e) {
  			}
  		}
  		return notifications;
  	}
docs: Push a different preformatted payload for each device.
  
  @param keystore a keystore containing your private key and the certificate signed by Apple ({@link java.io.File}, {@link java.io.InputStream}, byte[], {@link java.security.KeyStore} or {@link java.lang.String} for a file path)
  @param password the keystore's password.
  @param production true to use Apple's production servers, false to use the sandbox servers.
  @param payloadDevicePairs a list or an array of PayloadPerDevice: {@link java.util.List}<{@link javapns.notification.PayloadPerDevice}>, {@link javapns.notification.PayloadPerDevice PayloadPerDevice[]} or {@link javapns.notification.PayloadPerDevice}
  @return a list of pushed notifications, each with details on transmission results and error (if any)
  @throws KeystoreException thrown if an error occurs when loading the keystore
  @throws CommunicationException thrown if an unrecoverable error occurs while trying to communicate with Apple servers