Вышеупомянутая проблема также может быть решена путем повторного подключения Wi-Fi или переключения между Wi-Fi и сотовыми данными.
Более того, следующие изменения в iOS 13 затронули реализацию push-уведомлений.
До iOS 13 многие из нас делали
(deviceToken as NSData).description
// Used to return as follows
"<965b251c 6cb1926d e3cb366f dfb16ddd e6b9086a 8a3cac9e 5f857679 376eab7C>"
let tokenData = deviceToken as NSData
let token = tokenData.description
let token = "\(deviceToken)".replacingOccurrences(of: " ", with: "")
.replacingOccurrences(of: "<", with: "")
.replacingOccurrences(of: ">", with: "")
В iOS 13 Apple изменила реализацию своего метода описания для класса NSData. Итак, возвращается
"{length = 32, bytes = 0x965b251c 6cb1926d e3cb366f dfb16ddd ... 5f857679 376eab7c }" // in iOS 13.
Что в итоге нарушило реализацию push-уведомлений для многих приложений.
Отныне, если вам нужно преобразовать токен устройства регистрации push-уведомлений в строковое представление в кодировке Base16/шестнадцатеричном формате, вы должны сделать следующее для языка Swift.
let deviceTokenString = deviceToken.map { String(format: "%02x", $0)
}.joined()
Для цели C используйте следующий код
- (NSString *)hexadecimalStringFromData:(NSData *)deviceToken {
NSUInteger dataLength = deviceToken.length;
if (dataLength == 0) {
return nil;
}
const unsigned char *dataBuffer = (const unsigned char *)deviceToken.bytes;
NSMutableString *hexString = [NSMutableString stringWithCapacity:(dataLength * 2)];
for (NSInteger index = 0; index < dataLength; ++index) {
[hexString appendFormat:@"%02x", dataBuffer[index]];
}
return [hexString copy];
}
Я наткнулся на исчерпывающую статью по заданной теме https://nshipster.com/apns-device-tokens/
person
Mihir
schedule
16.10.2019
didRegisterForRemoteNotificationsWithDeviceToken
в вопрос? Трудно сказать, в чем может быть проблема, если мы не видим ваш код - person Eugene Berdnikov   schedule 01.09.2019