Commit 471c93e59faaa880c3a39a595f37be282ffd22f1

Authored by Artem Talko
1 parent 6306e3dd

notifications added

... ... @@ -14,6 +14,7 @@
14 14 190DB9FC2AC450F6000A7BF3 /* RemoveAdvertViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 190DB9FB2AC450F6000A7BF3 /* RemoveAdvertViewController.swift */; };
15 15 190DBA002AC45A3C000A7BF3 /* CachingManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 190DB9FF2AC45A3C000A7BF3 /* CachingManager.swift */; };
16 16 190DBA0D2AC47701000A7BF3 /* BinaryFloatingPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 190DBA0C2AC47701000A7BF3 /* BinaryFloatingPoint.swift */; };
  17 + 1918115E2B17623D00F7CB6F /* NotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1918115D2B17623D00F7CB6F /* NotificationManager.swift */; };
17 18 191BB84F2AC5A9C900A2DEB9 /* TabsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 191BB84E2AC5A9C900A2DEB9 /* TabsView.swift */; };
18 19 191BB8522AC5AB4600A2DEB9 /* TabsToolbarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 191BB8512AC5AB4600A2DEB9 /* TabsToolbarView.swift */; };
19 20 191BB8542AC5B3CD00A2DEB9 /* TabsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 191BB8532AC5B3CD00A2DEB9 /* TabsViewController.swift */; };
... ... @@ -115,6 +116,7 @@
115 116 190DB9FB2AC450F6000A7BF3 /* RemoveAdvertViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoveAdvertViewController.swift; sourceTree = "<group>"; };
116 117 190DB9FF2AC45A3C000A7BF3 /* CachingManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CachingManager.swift; sourceTree = "<group>"; };
117 118 190DBA0C2AC47701000A7BF3 /* BinaryFloatingPoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BinaryFloatingPoint.swift; sourceTree = "<group>"; };
  119 + 1918115D2B17623D00F7CB6F /* NotificationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationManager.swift; sourceTree = "<group>"; };
118 120 191BB84E2AC5A9C900A2DEB9 /* TabsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsView.swift; sourceTree = "<group>"; };
119 121 191BB8512AC5AB4600A2DEB9 /* TabsToolbarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsToolbarView.swift; sourceTree = "<group>"; };
120 122 191BB8532AC5B3CD00A2DEB9 /* TabsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsViewController.swift; sourceTree = "<group>"; };
... ... @@ -241,6 +243,7 @@
241 243 193B3B892ACAF714002161ED /* TabManager.swift */,
242 244 1907D6962ADE766F00C40E9F /* HistoryDBManager.swift */,
243 245 1907D6982ADE7E9C00C40E9F /* DateManager.swift */,
  246 + 1918115D2B17623D00F7CB6F /* NotificationManager.swift */,
244 247 );
245 248 path = Managers;
246 249 sourceTree = "<group>";
... ... @@ -963,6 +966,7 @@
963 966 191BB8642AC6A02300A2DEB9 /* SearchingView.swift in Sources */,
964 967 190DBA002AC45A3C000A7BF3 /* CachingManager.swift in Sources */,
965 968 1984BF422AFB907A0050F816 /* PrivacyView.swift in Sources */,
  969 + 1918115E2B17623D00F7CB6F /* NotificationManager.swift in Sources */,
966 970 191BB8692AC6A66900A2DEB9 /* SearchingTableViewCell.swift in Sources */,
967 971 1990C69C2AEFDF89004AF856 /* UICollectionViewCell+convertFrameToScreenCoordinates.swift in Sources */,
968 972 19FCBF222AC1727800F83A7F /* AppDelegate.swift in Sources */,
... ...
... ... @@ -3,12 +3,13 @@ import UIKit
3 3 @main
4 4 class AppDelegate: UIResponder, UIApplicationDelegate {
5 5 var window: UIWindow?
6   -
  6 +
7 7 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
8 8 let screenRect = UIScreen.main.bounds
9 9 window = UIWindow(frame: screenRect)
10 10
11 11 if let window = window {
  12 + let notification = NotificationManager()
12 13 let navigationViewController = NavigationViewController()
13 14 window.rootViewController = navigationViewController
14 15 window.makeKeyAndVisible()
... ...
  1 +//
  2 +// NotificationManager.swift
  3 +// Pro-Seecurity-VPN
  4 +//
  5 +// Created by Artem Talko on 29.11.2023.
  6 +//
  7 +import UIKit
  8 +import UserNotifications
  9 +
  10 +final class NotificationManager {
  11 + private let notificationInterval: TimeInterval = 60 * 4 * 60
  12 +
  13 + init() {
  14 + chechForPermission()
  15 + }
  16 +
  17 + private func chechForPermission() {
  18 + let notificationCenter = UNUserNotificationCenter.current()
  19 +
  20 + notificationCenter.getNotificationSettings { settings in
  21 + switch settings.authorizationStatus {
  22 + case .authorized:
  23 + self.dispatchNotification()
  24 +
  25 + case .notDetermined:
  26 + notificationCenter.requestAuthorization(options: [.alert, .sound]) { didAllow, error in
  27 + if didAllow {
  28 + self.dispatchNotification()
  29 + }
  30 + }
  31 +
  32 + case .denied:
  33 + return
  34 +
  35 + default:
  36 + return
  37 + }
  38 + }
  39 + }
  40 +
  41 + private func generateRandomNotificationBody() -> String {
  42 + return StringConstants.notificationMessages.randomElement() ?? ""
  43 + }
  44 +
  45 + private func dispatchNotification() {
  46 + let identifier = StringConstants.notificationIdentifier
  47 + let notificationCenter = UNUserNotificationCenter.current()
  48 +
  49 + let content = UNMutableNotificationContent()
  50 + content.title = StringConstants.notificationTitle
  51 + content.body = generateRandomNotificationBody()
  52 + content.sound = .default
  53 +
  54 + let trigger = UNTimeIntervalNotificationTrigger(timeInterval: notificationInterval, repeats: true)
  55 + let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
  56 +
  57 + notificationCenter.removePendingNotificationRequests(withIdentifiers: [identifier])
  58 + notificationCenter.add(request)
  59 + }
  60 +}
... ...
... ... @@ -13,6 +13,7 @@ enum menuCases: CaseIterable {
13 13 case todayAndYesterday
14 14 case today
15 15 case lastHour
  16 +
16 17 var action: UIAction {
17 18 switch self {
18 19 case .allTime:
... ...
... ... @@ -66,7 +66,6 @@ final class HistoryViewController: UIViewController {
66 66
67 67 //MARK: - TableView Extention
68 68 extension HistoryViewController: UITableViewDelegate, UITableViewDataSource {
69   -
70 69 func numberOfSections(in tableView: UITableView) -> Int {
71 70 return filteredData.count
72 71 }
... ...
... ... @@ -61,10 +61,6 @@ final class BrowserHomeViewController: UIViewController {
61 61 init(url: String?, currentTabId: Int?) {
62 62 searchResultViewController = SearchResultViewController(searchLink: String())
63 63 searchingViewController = SearchingViewController(dataForReq: [])
64   -
65   -
66   -
67   -
68 64 subscriptions = []
69 65 searchRequestURL = URLConstants.googleURL
70 66
... ... @@ -289,19 +285,18 @@ extension BrowserHomeViewController {
289 285 let finalUrl = siteUrl.absoluteString
290 286 let lastVisit = DateManager.shared.currentDate
291 287 let homeViewSnapshot = SnapshotService.shared.makeSnapshot(mainView)
292   -
  288 + navigationController?.popViewController(animated: true)
293 289 TabManager.shared.saveTab(tabTitle: siteTitle, snapshotImage: homeViewSnapshot, tabUrl: finalUrl)
294 290 self.currentTabId = tabsViewController?.getCellIndex().row
295 291
296   - tabsViewController?.refreshData()
297 292 HistoryDBManager.shared.saveToHistory(siteTitle: siteTitle, siteUrl: finalUrl, lastVisit: lastVisit)
298   - navigationController?.popViewController(animated: true)
  293 +
299 294 } else {
300 295 let homeViewSnapshot = SnapshotService.shared.makeSnapshot(mainView)
  296 + navigationController?.popViewController(animated: true)
301 297 TabManager.shared.saveTab(tabTitle: "Start Page", snapshotImage: homeViewSnapshot, tabUrl: "homeUrl")
302   - tabsViewController?.refreshData()
  298 +
303 299 currentTabId = tabsViewController?.getCellIndex().row
304   - navigationController?.popViewController(animated: true)
305 300 }
306 301 }
307 302
... ...
... ... @@ -13,6 +13,7 @@ final class SubscriptionViewController: UIViewController {
13 13 private let mainView = SubscriptionView()
14 14
15 15 private let tableViewData: [String]
  16 +
16 17
17 18 override func viewDidLoad() {
18 19 super.viewDidLoad()
... ...
... ... @@ -10,7 +10,6 @@ import UIKit
10 10 final class SubscriptionTableViewCell: UITableViewCell {
11 11 static let cellID = String(describing: SubscriptionTableViewCell.self)
12 12
13   -
14 13 let advantagesCellLabel: UILabel = {
15 14 let obj = UILabel()
16 15 obj.font = FontConstants.regularFont_14
... ...
... ... @@ -55,8 +55,23 @@ struct StringConstants {
55 55
56 56 static let menuTitle = "Clearing will remove history, cookies and other browsing data. History will be cleared from devices signed into your iCloud Account. Clear from:"
57 57
58   - //mainView labels
  58 + ///mainView labels
59 59 static let adBlockProtectFrom = "Adblock will protect you from:"
60 60 static let tableViewData = ["Harmful ads", "Phishing sites", "Ads in video"]
  61 +
  62 +
  63 + ///notifications
  64 + static let notificationMessages = [
  65 + "Enhance Your Security! Tap to Enable Gotoweb Safe Browsing and Shield Your Data.",
  66 + "Protect Your Privacy! Open Gotoweb Safe Browser for a Secure Online Journey.",
  67 + "Safety First! Tap to Browse Anonymously with Gotoweb Safe Browser.",
  68 + "Stay Anonymous Online! Tap to Activate Gotoweb Safe Browsing and Keep Your Data Safe.",
  69 + "Gotoweb Alert: Ensure Your Online Safety - Enable Safe Browsing Now!",
  70 + "Your Privacy Matters! Browse Securely with Gotoweb Safe Browser - Tap to Activate.",
  71 + "Gotoweb Protection: Keep Your Online Activities Private - Activate Safe Browsing Today!",
  72 + "Browse Safely with Gotoweb! Activate Privacy Mode Now for a Secure Online Experience."
  73 + ]
  74 + static let notificationTitle = "Gotoweb Notification"
  75 + static let notificationIdentifier = "browser-notification"
61 76 }
62 77
... ...
Please register or login to post a comment