TestFlight 构建产生错误的推送令牌
TestFlight build produces bad push tokens
从 TestFlight 下载构建时生成错误推送令牌的原因可能是什么?
是 自动代码签名 使用 Apple Development
证书而不是 Apple Distribution
签署 RELEASE 吗?但我在几个项目中一直这样做,没有任何问题。
TestFlight 构建生成的错误推送令牌示例:
7F0000000000000020000061A24474DD290000000000000000000000028359F6
从 Xcode 构建生成的良好推送令牌示例(均具有 DEBUG 和 RELEASE 运行 配置):
83BBE6AFED8323C0A19006C6DE4E6BF481D8A5AE3A1372EFEA84DDF71BA5C6F0
我在这里分享我的解决方案。更多上下文,项目写在Objective-C.
我也尝试过使用手动代码签名将构建上传到 TestFlight。
我将 NSData
pushToken 转换为 NSString
的方法是使用我一直在使用的 Swift 函数并将其移植到 Objective-C:
import Foundation
extension NSData {
@objc func extractPushToken() -> String {
return self.reduce("", {[=10=] + String(format: "%02X", )})
}
}
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:@""];
}
从 TestFlight 下载构建时生成错误推送令牌的原因可能是什么?
是 自动代码签名 使用 Apple Development
证书而不是 Apple Distribution
签署 RELEASE 吗?但我在几个项目中一直这样做,没有任何问题。
TestFlight 构建生成的错误推送令牌示例:
7F0000000000000020000061A24474DD290000000000000000000000028359F6
从 Xcode 构建生成的良好推送令牌示例(均具有 DEBUG 和 RELEASE 运行 配置):
83BBE6AFED8323C0A19006C6DE4E6BF481D8A5AE3A1372EFEA84DDF71BA5C6F0
我在这里分享我的解决方案。更多上下文,项目写在Objective-C.
我也尝试过使用手动代码签名将构建上传到 TestFlight。
我将 NSData
pushToken 转换为 NSString
的方法是使用我一直在使用的 Swift 函数并将其移植到 Objective-C:
import Foundation
extension NSData {
@objc func extractPushToken() -> String {
return self.reduce("", {[=10=] + String(format: "%02X", )})
}
}
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:@""];
}