Сборка TestFlight производит плохие токены pu sh - PullRequest
0 голосов
/ 04 августа 2020

Что может быть причиной плохих токенов pu sh, генерируемых сборками при их загрузке из TestFlight?

Это Automati c Code Signing , подписывает РЕЛИЗ, используя сертификат Apple Development вместо Apple Distribution? Но я делал это в нескольких проектах без каких-либо проблем.

Образец плохого пу sh токена, сгенерированного сборкой TestFlight:

7F0000000000000020000061A24474DD290000000000000000000000028359F6

Образец хорошего пу sh токена, сгенерированного сборкой из Xcode (ОБА с DEBUG и RELEASE запустить конфигурацию):

83BBE6AFED8323C0A19006C6DE4E6BF481D8A5AE3A1372EFEA84DDF71BA5C6F0

1 Ответ

0 голосов
/ 04 августа 2020

Поделюсь своим решением. Для большего контекста проект написан на 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:@""];
}
...