Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift iOS 13推送通知设备令牌转换为javascript/php/typescript_Javascript_Php_Ios_Swift_Apple Push Notifications - Fatal编程技术网

Swift iOS 13推送通知设备令牌转换为javascript/php/typescript

Swift iOS 13推送通知设备令牌转换为javascript/php/typescript,javascript,php,ios,swift,apple-push-notifications,Javascript,Php,Ios,Swift,Apple Push Notifications,我有一个带推送通知的Swift应用程序。每当设备注册设备令牌以接收推送通知时,我都会收到一个普通字符串,如:QY1WcHzcxSbAYPJa0OrTQwFhYZ3ilRUQ0HmKgUlP4IBsLQAJazZnZ4XuGrNO2l4S。但是,对于iOS 13,接收的新设备令牌格式为:{length=32,bytes=0xd3d997af 967d1f43 b405374a 13394d2f…28f10282 14af515f} 我使用以下代码转换新设备令牌: let deviceTokenSt

我有一个带推送通知的Swift应用程序。每当设备注册设备令牌以接收推送通知时,我都会收到一个普通字符串,如:
QY1WcHzcxSbAYPJa0OrTQwFhYZ3ilRUQ0HmKgUlP4IBsLQAJazZnZ4XuGrNO2l4S
。但是,对于iOS 13,接收的新设备令牌格式为:
{length=32,bytes=0xd3d997af 967d1f43 b405374a 13394d2f…28f10282 14af515f}

我使用以下代码转换新设备令牌:

let deviceTokenString = deviceToken.map { String(format: "%02x", $0) }.joined()
这将返回一个包含64个字符的字符串


原始应用程序不是在swift中生成的。如何在javascript/php/typescript中实现一个字符串,比如:
{length=32,bytes=0xd3d997af 967d1f43 b405374a 13394d2f…28f10282 14af515f}
并将其转换为:
QY1WcHzcxSbAYPJa0OrTQwFhYZ3ilRUQ0HmKgUlP4IBsLQAJazZnZ4XuGrNO2l4S
对于Swift 5.0,您需要使用以下代码

    class func string(fromDeviceToken deviceToken: Data?) -> String? {
    let length = deviceToken?.count ?? 0
    if length == 0 {
        return nil
    }
    let buffer = UInt8(deviceToken?.bytes ?? 0)
    var hexString = String(repeating: "\0", count: length * 2)
    for i in 0..<length {
        hexString += String(format: "%02x", buffer[i])
    }
    return hexString
}  
类函数字符串(来自deviceToken deviceToken:Data?)->string?{
设长度=deviceToken?.count±0
如果长度==0{
归零
}
let buffer=UInt8(deviceToken?.bytes±0)
var hexString=String(重复:“\0”,计数:长度*2)

对于0中的i.你说的“让它工作起来”是什么意思.usernumber它在Swift中工作,但原始应用程序不是Swift应用程序。这就是为什么我要求用javascript/php/typescript实现我需要用javascript/php/typescript而不是Swift/obj实现的原因-c@Dicoyo也许这个链接可以帮助你p你。
    + (NSString *)stringFromDeviceToken:(NSData *)deviceToken {
    NSUInteger length = deviceToken.length;
    if (length == 0) {
        return nil;
    }
    const unsigned char *buffer = deviceToken.bytes;
    NSMutableString *hexString  = [NSMutableString stringWithCapacity:(length * 2)];
    for (int i = 0; i < length; ++i) {
        [hexString appendFormat:@"%02x", buffer[i]];
    }
    return [hexString copy];
}