diff --git a/Sources/MessagingPush/MessagingPush.swift b/Sources/MessagingPush/MessagingPush.swift index 53d7a48dd..af80434d4 100644 --- a/Sources/MessagingPush/MessagingPush.swift +++ b/Sources/MessagingPush/MessagingPush.swift @@ -62,7 +62,7 @@ public class MessagingPush: MessagingPushInstance { */ public func registerDeviceToken(_ deviceToken: Data, onComplete: @escaping (Result) -> Void) { - let device = Device(token: String(decoding: deviceToken, as: UTF8.self), lastUsed: Date()) + let device = Device(token: String(apnDeviceToken: deviceToken), lastUsed: Date()) guard let bodyData = jsonAdapter.toJson(RegisterDeviceRequest(device: device)) else { return onComplete(.failure(.http(.noRequestMade(nil)))) } diff --git a/Sources/Tracking/Extensions/StringExtensions.swift b/Sources/Tracking/Extensions/StringExtensions.swift index eeed42615..693b1781c 100644 --- a/Sources/Tracking/Extensions/StringExtensions.swift +++ b/Sources/Tracking/Extensions/StringExtensions.swift @@ -1,6 +1,12 @@ import Foundation -internal extension String { +public extension String { + init(apnDeviceToken: Data) { + /// Convert `Data` to `String` for APN device token. + /// [Reference](https://nshipster.com/apns-device-tokens/) + self = apnDeviceToken.map { String(format: "%02x", $0) }.joined() + } + var data: Data! { data(using: .utf8) }