From 8bf2215a2445f4293db9f2f95730060b8939e495 Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Tue, 21 Apr 2020 11:21:45 +1000 Subject: [PATCH] Fix APNs token updating --- .../src/Loki/API/LokiPushNotificationManager.swift | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/SignalServiceKit/src/Loki/API/LokiPushNotificationManager.swift b/SignalServiceKit/src/Loki/API/LokiPushNotificationManager.swift index 6c3dc0e97..cacff0001 100644 --- a/SignalServiceKit/src/Loki/API/LokiPushNotificationManager.swift +++ b/SignalServiceKit/src/Loki/API/LokiPushNotificationManager.swift @@ -9,7 +9,7 @@ public final class LokiPushNotificationManager : NSObject { #else private static let server = "https://live.apns.getsession.org/" #endif - private static let tokenExpirationInterval: TimeInterval = 2 * 24 * 60 * 60 + private static let tokenExpirationInterval: TimeInterval = 12 * 60 * 60 // MARK: Initialization private override init() { } @@ -24,7 +24,7 @@ public final class LokiPushNotificationManager : NSObject { let lastUploadTime = userDefaults[.lastDeviceTokenUpload] let isUsingFullAPNs = userDefaults[.isUsingFullAPNs] let now = Date().timeIntervalSince1970 - guard isForcedUpdate || hexEncodedToken != oldToken || now - lastUploadTime < tokenExpirationInterval else { + guard isForcedUpdate || hexEncodedToken != oldToken || now - lastUploadTime > tokenExpirationInterval else { print("[Loki] Device token hasn't changed; no need to re-upload.") return Promise { $0.fulfill(()) } } @@ -66,7 +66,13 @@ public final class LokiPushNotificationManager : NSObject { static func register(with token: Data, hexEncodedPublicKey: String, isForcedUpdate: Bool) -> Promise { let hexEncodedToken = token.toHexString() let userDefaults = UserDefaults.standard + let oldToken = userDefaults[.deviceToken] + let lastUploadTime = userDefaults[.lastDeviceTokenUpload] let now = Date().timeIntervalSince1970 + guard isForcedUpdate || hexEncodedToken != oldToken || now - lastUploadTime > tokenExpirationInterval else { + print("[Loki] Device token hasn't changed; no need to re-upload.") + return Promise { $0.fulfill(()) } + } let parameters = [ "token" : hexEncodedToken, "pubKey" : hexEncodedPublicKey] let url = URL(string: server + "register")! let request = TSRequest(url: url, method: "POST", parameters: parameters)