Поделюсь своим решением. Для большего контекста проект написан на Objective- C.
Я также пробовал загружать сборки в TestFlight с ручной подписью кода.
Способ преобразования NSData
pushToken в NSString
использует мою когда-либо работающую функцию Swift и переносит ее на Objective- C:
import Foundation
extension NSData {
@objc func extractPushToken() -> String {
return self.reduce("", {$0 + String(format: "%02X", $1)})
}
}
Эта функция Swift хорошо работает как в режиме отладки, так и в режиме выпуска с проектами Swift, а также работает с режимом отладки в моем текущем проекте Objective- C. Кажется странным.
Но единственное решение, которое я должен сделать, чтобы сборка TestFlight (режим выпуска) работала, - это использовать Objective- C способ извлечения pushToken:
- (NSString *)tokenFromData:(NSData *)tokenData
{
const unsigned *tokenBytes = [tokenData bytes];
NSString *tkn = [NSString stringWithFormat:@"%08x %08x %08x %08x %08x %08x %08x %08x",
ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
return [tkn stringByReplacingOccurrencesOfString:@" " withString:@""];
}