то, Что @coteyr говорит , на самом деле, не корректно. Сублимированный текст использует стандартный метод ввода GTK API, однако, он делает так неправильно.
я сделал пакет , который исправляет Сублимированный текст. Вы можете найти все подробности об ошибке и мое обходное решение на моем сообщении в блоге, но здесь являетесь быстрым обзором установки:
Добавляют sublime-imethod-fix
- PPA к Вашим источникам APT путем выполнения следующей команды:
sudo add-apt-repository ppa:whitequark/sublime-imethod-fix
Установка bugfix пакет, который соответствует Вашей Сублимированной Текстовой версии:
для XCompose поддерживают в ST2:
sudo apt-get install libsublime-text-2-xim-xcompose
для XCompose поддерживают в ST3:
sudo apt-get install libsublime-text-3-xim-xcompose
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;
}
Кажется, вам не хватает токена
pushManager.addDevice("iPhone", "f4201f5d8278fe39545349d0868a24a3b60ed732");
Выполняет проверку идентификатора и токена:
Единственный способ получить токен - из приложения iphone. Действительный токен выглядит примерно так: 1d2d6f34 c5028bca c50df5f9 1992c912 ce7deae8 3bbe7da5 447f6a68 cfecdc0e
Ваш код Java выглядит надежно! Однако не забудьте закрыть соединение с помощью PushNotificationManager.closeConnection ()
. Важно убрать за собой.
В качестве дополнительного комментария я заметил, что вы добавляете устройство «iPhone», но потом запрашиваете «Lambo». Это указывает на ошибку.
В коде указан неверный токен устройства. В настоящее время токены устройств представляют собой 32-битное длинное значение, которое передается в шестнадцатеричном формате до 64 символов. Я предполагаю, что сервер молча дает сбой при отправке уведомления на недопустимый токен!
Единственный способ получить токен устройства - из самого приложения. Как указано в руководстве по push-уведомлениям , приложение iPhone должно зарегистрироваться для получения уведомлений при запуске. В приложении : didRegisterForRemoteNotificationsWithDeviceToken:
, iPhone необходимо отправить токен устройства на сервер вашего поставщика Java. (Для целей отладки вы можете просто NSLog
токен устройства и использовать его; он никогда не меняется при запуске.)
Я бы рекомендовал вам создать сервер на сервере вашего поставщика Java для получения токенов устройств. Настройте ServerSocket
для получения подключений от iPhone и их токенов устройства (и любой дополнительной информации, которая вам нужна) и вставьте токены в базу данных.
В качестве постыдной саморекламы я рекомендую использовать библиотеку 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);