Используйте сервис уведомления о нажатии Apple через Java

то, Что @coteyr говорит , на самом деле, не корректно. Сублимированный текст использует стандартный метод ввода GTK API, однако, он делает так неправильно.

я сделал пакет , который исправляет Сублимированный текст. Вы можете найти все подробности об ошибке и мое обходное решение на моем сообщении в блоге, но здесь являетесь быстрым обзором установки:

  1. Добавляют sublime-imethod-fix - PPA к Вашим источникам APT путем выполнения следующей команды:

    sudo add-apt-repository ppa:whitequark/sublime-imethod-fix
    
  2. Установка bugfix пакет, который соответствует Вашей Сублимированной Текстовой версии:

    • для XCompose поддерживают в ST2:

      sudo apt-get install libsublime-text-2-xim-xcompose
      
    • для XCompose поддерживают в ST3:

      sudo apt-get install libsublime-text-3-xim-xcompose
      
  3. текст Сублимата Перезапуска (если это работает). Составные последовательности должны теперь хорошо работать.

8
задан Kara 21 January 2014 в 06:03
поделиться

4 ответа

Just a little tip, in order to convert your received token into a format suitable for registration with javapns, this code will do the trick:

- (NSString *)convertTokenToDeviceID:(NSData *)token {
NSMutableString *deviceID = [NSMutableString string];

// iterate through the bytes and convert to hex
unsigned char *ptr = (unsigned char *)[token bytes];

for (NSInteger i=0; i < 32; ++i) {
    [deviceID appendString:[NSString stringWithFormat:@"%02x", ptr[i]]];
}

return deviceID;

}

8
ответ дан 3 November 2019 в 14:03
поделиться

Кажется, вам не хватает токена

pushManager.addDevice("iPhone", "f4201f5d8278fe39545349d0868a24a3b60ed732");

Выполняет проверку идентификатора и токена:

https://github.com/o-sam-o/javapns/blob/master/src /javapns/notification/PushNotificationManager.java#L501

Единственный способ получить токен - из приложения iphone. Действительный токен выглядит примерно так: 1d2d6f34 c5028bca c50df5f9 1992c912 ce7deae8 3bbe7da5 447f6a68 cfecdc0e

0
ответ дан 3 November 2019 в 14:03
поделиться
  1. Ваш код Java выглядит надежно! Однако не забудьте закрыть соединение с помощью PushNotificationManager.closeConnection () . Важно убрать за собой.

    В качестве дополнительного комментария я заметил, что вы добавляете устройство «iPhone», но потом запрашиваете «Lambo». Это указывает на ошибку.

  2. В коде указан неверный токен устройства. В настоящее время токены устройств представляют собой 32-битное длинное значение, которое передается в шестнадцатеричном формате до 64 символов. Я предполагаю, что сервер молча дает сбой при отправке уведомления на недопустимый токен!

  3. Единственный способ получить токен устройства - из самого приложения. Как указано в руководстве по push-уведомлениям , приложение iPhone должно зарегистрироваться для получения уведомлений при запуске. В приложении : didRegisterForRemoteNotificationsWithDeviceToken: , iPhone необходимо отправить токен устройства на сервер вашего поставщика Java. (Для целей отладки вы можете просто NSLog токен устройства и использовать его; он никогда не меняется при запуске.)

    Я бы рекомендовал вам создать сервер на сервере вашего поставщика Java для получения токенов устройств. Настройте ServerSocket для получения подключений от iPhone и их токенов устройства (и любой дополнительной информации, которая вам нужна) и вставьте токены в базу данных.

1
ответ дан 3 November 2019 в 14:03
поделиться

В качестве постыдной саморекламы я рекомендую использовать библиотеку java-apns . Ваш код будет выглядеть так:

ApnsService service =
     APNS.newService()
     .withCert("/etc/Certificates.p12", "password")
     .withSandboxDestination() // or .withProductionDestination()
     .build();

String payload =
    APNS.newPayload()
    .alertBody("My alert message")
    .badge(45)
    .sound("default")
    .build();

String deviceToken = "f4201f5d8278fe39545349d0868a24a3b60ed732";

log.warn("Sending push notification...");
service.push(deviceToken, payload);
18
ответ дан 3 November 2019 в 14:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: