Introduce PushNotificationManager

This commit is contained in:
ismailgulek 2020-08-05 14:12:37 +03:00
parent e90c41791a
commit a8af28170b
No known key found for this signature in database
GPG key ID: E96336D42D9470A9
2 changed files with 72 additions and 0 deletions

View file

@ -769,6 +769,10 @@
EC3B066A24AC6ADE000DF9BF /* CrossSigningSetupBannerCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = EC3B066624AC6ADD000DF9BF /* CrossSigningSetupBannerCell.xib */; };
EC3B066B24AC6ADE000DF9BF /* CrossSigningBannerPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC3B066724AC6ADD000DF9BF /* CrossSigningBannerPreferences.swift */; };
EC3B066C24AC6ADE000DF9BF /* CrossSigningSetupBannerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC3B066824AC6ADD000DF9BF /* CrossSigningSetupBannerCell.swift */; };
EC619C1424D9C60C00663A80 /* PushNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC619C1324D9C60C00663A80 /* PushNotificationManager.swift */; };
EC619C1524D9C6EB00663A80 /* PushNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC619C1324D9C60C00663A80 /* PushNotificationManager.swift */; };
EC619C1624D9C6F900663A80 /* KeyValueStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87124C823E700DE9EBF /* KeyValueStore.swift */; };
EC619C1724D9C70000663A80 /* KeychainStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87424C8259700DE9EBF /* KeychainStore.swift */; };
EC711B4624A63B13008F830C /* MXRecoveryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B4524A63B13008F830C /* MXRecoveryService.swift */; };
EC711B7424A63B37008F830C /* SecretsSetupRecoveryKeyViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B4A24A63B36008F830C /* SecretsSetupRecoveryKeyViewModelType.swift */; };
EC711B7524A63B37008F830C /* SecretsSetupRecoveryKeyCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B4B24A63B36008F830C /* SecretsSetupRecoveryKeyCoordinatorType.swift */; };
@ -1898,6 +1902,7 @@
EC3B066624AC6ADD000DF9BF /* CrossSigningSetupBannerCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CrossSigningSetupBannerCell.xib; sourceTree = "<group>"; };
EC3B066724AC6ADD000DF9BF /* CrossSigningBannerPreferences.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CrossSigningBannerPreferences.swift; sourceTree = "<group>"; };
EC3B066824AC6ADD000DF9BF /* CrossSigningSetupBannerCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CrossSigningSetupBannerCell.swift; sourceTree = "<group>"; };
EC619C1324D9C60C00663A80 /* PushNotificationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotificationManager.swift; sourceTree = "<group>"; };
EC711B4524A63B13008F830C /* MXRecoveryService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MXRecoveryService.swift; sourceTree = "<group>"; };
EC711B4A24A63B36008F830C /* SecretsSetupRecoveryKeyViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryKeyViewModelType.swift; sourceTree = "<group>"; };
EC711B4B24A63B36008F830C /* SecretsSetupRecoveryKeyCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryKeyCoordinatorType.swift; sourceTree = "<group>"; };
@ -4850,6 +4855,7 @@
children = (
EC85D73C2477DDD0002C44C9 /* PushNotificationService.h */,
EC85D73D2477DDD0002C44C9 /* PushNotificationService.m */,
EC619C1324D9C60C00663A80 /* PushNotificationManager.swift */,
);
path = PushNotification;
sourceTree = "<group>";
@ -5716,9 +5722,12 @@
EC2B4EF224A1EF34005EB739 /* DataProtectionHelper.swift in Sources */,
EC85D7462477E5F7002C44C9 /* NotificationService.swift in Sources */,
32FD755424D074C700BA7B37 /* CommonConfiguration.swift in Sources */,
EC619C1524D9C6EB00663A80 /* PushNotificationManager.swift in Sources */,
32FD757424D2BEF700BA7B37 /* InfoPlist.swift in Sources */,
EC85D752247C0F52002C44C9 /* UNUserNotificationCenter.swift in Sources */,
EC619C1624D9C6F900663A80 /* KeyValueStore.swift in Sources */,
32FD757A24D2C9BA00BA7B37 /* Bundle.swift in Sources */,
EC619C1724D9C70000663A80 /* KeychainStore.swift in Sources */,
32FD755B24D15C7A00BA7B37 /* Configurable.swift in Sources */,
EC85D755247C0F84002C44C9 /* Constants.swift in Sources */,
);
@ -6178,6 +6187,7 @@
B1B5572820EE6C4D00210D55 /* RoomViewController.m in Sources */,
B108932123AB8D7D00802670 /* KeyVerificationIncomingRequestApprovalViewData.swift in Sources */,
EC85D7172477DCD7002C44C9 /* KeyVerificationScanConfirmationViewModel.swift in Sources */,
EC619C1424D9C60C00663A80 /* PushNotificationManager.swift in Sources */,
B18DEDDA243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewState.swift in Sources */,
B1B9DEED22EB34EF0065E677 /* ReactionHistoryCoordinator.swift in Sources */,
B1DCC62A22E60D1000625807 /* EmojiMartService.swift in Sources */,

View file

@ -0,0 +1,62 @@
//
// Copyright 2020 Vector Creations Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import Foundation
import KeychainAccess
@objcMembers
final class PushNotificationManager: NSObject {
// MARK: - Constants
private struct PushNotificationConstants {
static let pushNotificationKeychainService: String = "im.vector.app.pushnotification-service"
}
private struct StoreKeys {
static let pushToken: String = "pushtoken"
}
static let shared = PushNotificationManager()
/// Store. Defaults to `KeychainStore`
private let store: KeyValueStore
override init() {
store = KeychainStore(withKeychain: Keychain(service: PushNotificationConstants.pushNotificationKeychainService,
accessGroup: Constants.keychainAccessGroup))
super.init()
}
/// Saved push token
var pushToken: Data? {
get {
do {
return try store.data(forKey: StoreKeys.pushToken)
} catch let error {
NSLog("[PinCodePreferences] Error when reading push token from store: \(error)")
return nil
}
} set {
do {
try store.set(newValue, forKey: StoreKeys.pushToken)
} catch let error {
NSLog("[PinCodePreferences] Error when storing push token to the store: \(error)")
}
}
}
}