From 4c4d0b533cdd74694273294a8d1027179d22d630 Mon Sep 17 00:00:00 2001 From: Andreas <55641247+2020Nonprofit@users.noreply.github.com> Date: Thu, 26 Mar 2020 21:53:00 -0400 Subject: [PATCH] Adjustments: -Integrated the backend into the ui -Added user defaults to save key info including uuids of devices the user has come in contact with -Finished the settings view -Maintained the new layout --- TrackIT-master/README.md | 12 + .../TrackIT.xcodeproj/project.pbxproj | 440 +++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/swiftpm/Package.resolved | 16 + .../UserInterfaceState.xcuserstate | Bin 0 -> 24044 bytes .../UserInterfaceState.xcuserstate | Bin 0 -> 11417 bytes .../xcschemes/xcschememanagement.plist | 14 + .../xcschemes/xcschememanagement.plist | 14 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/swiftpm/Package.resolved | 16 + .../UserInterfaceState.xcuserstate | Bin 0 -> 41623 bytes .../UserInterfaceState.xcuserstate | Bin 0 -> 48578 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 + .../AppIcon.appiconset/Contents.json | 98 ++++ .../TrackIT/Assets.xcassets/Contents.json | 6 + .../Rectangle 7.imageset/Contents.json | 21 + .../Rectangle 7.imageset/Rectangle 7.png | Bin 0 -> 354 bytes .../Assets.xcassets/home.imageset/69524 1.png | Bin 0 -> 520 bytes .../home.imageset/Contents.json | 21 + .../question.imageset/Contents.json | 21 + .../PNG image-520FB3231A8C-1 1.png | Bin 0 -> 645 bytes .../settings.imageset/Contents.json | 21 + .../PNG image-00F48C98FD47-1 1.png | Bin 0 -> 831 bytes .../settings2.imageset/Contents.json | 21 + .../PNG image-00F48C98FD47-1 1.png | Bin 0 -> 1173 bytes TrackIT-master/TrackIT/Info.plist | 76 +++ TrackIT-master/TrackIT/TrackIT.entitlements | 5 + .../controllers/SettingsViewController.swift | 311 +++++++++++ .../TrackIT/controllers/ViewController.swift | 524 ++++++++++++++++++ .../TrackIT/helpers/view/HexToString.swift | 61 ++ .../TrackIT/lf30_editor_SKZ870.json | 1 + .../TrackIT/services/AppDelegate.swift | 116 ++++ .../TrackIT/services/SceneDelegate.swift | 53 ++ .../view/Base.lproj/LaunchScreen.storyboard | 25 + .../TrackIT/view/Base.lproj/Main.storyboard | 113 ++++ TrackIT-master/placeholder.txt | 1 + 38 files changed, 2043 insertions(+) create mode 100644 TrackIT-master/README.md create mode 100644 TrackIT-master/TrackIT.xcodeproj/project.pbxproj create mode 100644 TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 TrackIT-master/TrackIT.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 TrackIT-master/TrackIT.xcodeproj/xcuserdata/andreas.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 TrackIT-master/TrackIT.xcworkspace/contents.xcworkspacedata create mode 100644 TrackIT-master/TrackIT.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 TrackIT-master/TrackIT.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 TrackIT-master/TrackIT.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 TrackIT-master/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 TrackIT-master/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/Contents.json create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/Rectangle 7.imageset/Contents.json create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/Rectangle 7.imageset/Rectangle 7.png create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/home.imageset/69524 1.png create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/home.imageset/Contents.json create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/question.imageset/Contents.json create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/question.imageset/PNG image-520FB3231A8C-1 1.png create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/settings.imageset/Contents.json create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/settings.imageset/PNG image-00F48C98FD47-1 1.png create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/settings2.imageset/Contents.json create mode 100644 TrackIT-master/TrackIT/Assets.xcassets/settings2.imageset/PNG image-00F48C98FD47-1 1.png create mode 100644 TrackIT-master/TrackIT/Info.plist create mode 100644 TrackIT-master/TrackIT/TrackIT.entitlements create mode 100644 TrackIT-master/TrackIT/controllers/SettingsViewController.swift create mode 100644 TrackIT-master/TrackIT/controllers/ViewController.swift create mode 100644 TrackIT-master/TrackIT/helpers/view/HexToString.swift create mode 100644 TrackIT-master/TrackIT/lf30_editor_SKZ870.json create mode 100644 TrackIT-master/TrackIT/services/AppDelegate.swift create mode 100644 TrackIT-master/TrackIT/services/SceneDelegate.swift create mode 100644 TrackIT-master/TrackIT/view/Base.lproj/LaunchScreen.storyboard create mode 100644 TrackIT-master/TrackIT/view/Base.lproj/Main.storyboard create mode 100644 TrackIT-master/placeholder.txt diff --git a/TrackIT-master/README.md b/TrackIT-master/README.md new file mode 100644 index 0000000..2f4bde7 --- /dev/null +++ b/TrackIT-master/README.md @@ -0,0 +1,12 @@ +# TrackIT +Open source mobile app to help track proximity contacts using powerful bluetooth technology + +### How does it work + +App uses bluetooth functionalities of your phone to scan as many devices in certain area as possible. When app scans the device it stores it into memory. + +App is saving scanned devices with their special id identifier. Identifier can be put as compromised by only officials who are conducting tests then notification arrives for the user who have been in close proximity of the infected identifier , saying that he needs to give all necessary contact information to officials and to stay home. + +If user is signed trough system as "isolated" and comes in proximity of other devices officials will be notified of that health breach. + + diff --git a/TrackIT-master/TrackIT.xcodeproj/project.pbxproj b/TrackIT-master/TrackIT.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ebc0915 --- /dev/null +++ b/TrackIT-master/TrackIT.xcodeproj/project.pbxproj @@ -0,0 +1,440 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 52; + objects = { + +/* Begin PBXBuildFile section */ + 84D7D868242D57D000B2710E /* Lottie in Frameworks */ = {isa = PBXBuildFile; productRef = 84D7D867242D57D000B2710E /* Lottie */; }; + 84D7D86C242D59CF00B2710E /* HexToString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D7D86B242D59CF00B2710E /* HexToString.swift */; }; + E16EA159242D36C200B0BE1F /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E16EA158242D36C100B0BE1F /* SettingsViewController.swift */; }; + E1E55B58242C118B00FFAA8A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E55B57242C118B00FFAA8A /* AppDelegate.swift */; }; + E1E55B5A242C118B00FFAA8A /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E55B59242C118B00FFAA8A /* SceneDelegate.swift */; }; + E1E55B5C242C118B00FFAA8A /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E55B5B242C118B00FFAA8A /* ViewController.swift */; }; + E1E55B5F242C118B00FFAA8A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E1E55B5D242C118B00FFAA8A /* Main.storyboard */; }; + E1E55B61242C119500FFAA8A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E1E55B60242C119500FFAA8A /* Assets.xcassets */; }; + E1E55B64242C119500FFAA8A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E1E55B62242C119500FFAA8A /* LaunchScreen.storyboard */; }; + E1E55B88242C121D00FFAA8A /* lf30_editor_SKZ870.json in Resources */ = {isa = PBXBuildFile; fileRef = E1E55B87242C121D00FFAA8A /* lf30_editor_SKZ870.json */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 84D7D862242D56B000B2710E /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 84D7D86B242D59CF00B2710E /* HexToString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HexToString.swift; sourceTree = ""; }; + E16EA158242D36C100B0BE1F /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; + E1E55B54242C118B00FFAA8A /* TrackIT.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TrackIT.app; sourceTree = BUILT_PRODUCTS_DIR; }; + E1E55B57242C118B00FFAA8A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + E1E55B59242C118B00FFAA8A /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + E1E55B5B242C118B00FFAA8A /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + E1E55B5E242C118B00FFAA8A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + E1E55B60242C119500FFAA8A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + E1E55B63242C119500FFAA8A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + E1E55B65242C119500FFAA8A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E1E55B87242C121D00FFAA8A /* lf30_editor_SKZ870.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = lf30_editor_SKZ870.json; sourceTree = ""; }; + E1E55B8E242C2C5A00FFAA8A /* TrackIT.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = TrackIT.entitlements; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + E1E55B51242C118B00FFAA8A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 84D7D868242D57D000B2710E /* Lottie in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 84D7D869242D59A400B2710E /* helpers */ = { + isa = PBXGroup; + children = ( + 84D7D86A242D59AE00B2710E /* view */, + ); + path = helpers; + sourceTree = ""; + }; + 84D7D86A242D59AE00B2710E /* view */ = { + isa = PBXGroup; + children = ( + 84D7D86B242D59CF00B2710E /* HexToString.swift */, + ); + path = view; + sourceTree = ""; + }; + 84D7D86D242D59F500B2710E /* services */ = { + isa = PBXGroup; + children = ( + E1E55B59242C118B00FFAA8A /* SceneDelegate.swift */, + E1E55B57242C118B00FFAA8A /* AppDelegate.swift */, + ); + path = services; + sourceTree = ""; + }; + 84D7D86E242D5A3600B2710E /* controllers */ = { + isa = PBXGroup; + children = ( + E16EA158242D36C100B0BE1F /* SettingsViewController.swift */, + E1E55B5B242C118B00FFAA8A /* ViewController.swift */, + ); + path = controllers; + sourceTree = ""; + }; + 84D7D870242D5A8800B2710E /* view */ = { + isa = PBXGroup; + children = ( + E1E55B62242C119500FFAA8A /* LaunchScreen.storyboard */, + E1E55B5D242C118B00FFAA8A /* Main.storyboard */, + ); + path = view; + sourceTree = ""; + }; + E1E55B4B242C118A00FFAA8A = { + isa = PBXGroup; + children = ( + E1E55B56242C118B00FFAA8A /* TrackIT */, + E1E55B55242C118B00FFAA8A /* Products */, + ); + sourceTree = ""; + }; + E1E55B55242C118B00FFAA8A /* Products */ = { + isa = PBXGroup; + children = ( + E1E55B54242C118B00FFAA8A /* TrackIT.app */, + ); + name = Products; + sourceTree = ""; + }; + E1E55B56242C118B00FFAA8A /* TrackIT */ = { + isa = PBXGroup; + children = ( + E1E55B87242C121D00FFAA8A /* lf30_editor_SKZ870.json */, + E1E55B8E242C2C5A00FFAA8A /* TrackIT.entitlements */, + 84D7D869242D59A400B2710E /* helpers */, + 84D7D86D242D59F500B2710E /* services */, + 84D7D86E242D5A3600B2710E /* controllers */, + 84D7D870242D5A8800B2710E /* view */, + E1E55B60242C119500FFAA8A /* Assets.xcassets */, + E1E55B65242C119500FFAA8A /* Info.plist */, + ); + path = TrackIT; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + E1E55B53242C118B00FFAA8A /* TrackIT */ = { + isa = PBXNativeTarget; + buildConfigurationList = E1E55B7E242C119500FFAA8A /* Build configuration list for PBXNativeTarget "TrackIT" */; + buildPhases = ( + E1E55B50242C118B00FFAA8A /* Sources */, + E1E55B51242C118B00FFAA8A /* Frameworks */, + E1E55B52242C118B00FFAA8A /* Resources */, + 84D7D862242D56B000B2710E /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TrackIT; + packageProductDependencies = ( + 84D7D867242D57D000B2710E /* Lottie */, + ); + productName = TrackIT; + productReference = E1E55B54242C118B00FFAA8A /* TrackIT.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + E1E55B4C242C118A00FFAA8A /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1130; + LastUpgradeCheck = 1130; + ORGANIZATIONNAME = "Steve Ink"; + TargetAttributes = { + E1E55B53242C118B00FFAA8A = { + CreatedOnToolsVersion = 11.3; + }; + }; + }; + buildConfigurationList = E1E55B4F242C118A00FFAA8A /* Build configuration list for PBXProject "TrackIT" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = E1E55B4B242C118A00FFAA8A; + packageReferences = ( + 84D7D866242D57D000B2710E /* XCRemoteSwiftPackageReference "lottie-ios" */, + ); + productRefGroup = E1E55B55242C118B00FFAA8A /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + E1E55B53242C118B00FFAA8A /* TrackIT */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + E1E55B52242C118B00FFAA8A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E1E55B88242C121D00FFAA8A /* lf30_editor_SKZ870.json in Resources */, + E1E55B64242C119500FFAA8A /* LaunchScreen.storyboard in Resources */, + E1E55B61242C119500FFAA8A /* Assets.xcassets in Resources */, + E1E55B5F242C118B00FFAA8A /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + E1E55B50242C118B00FFAA8A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E1E55B5C242C118B00FFAA8A /* ViewController.swift in Sources */, + E16EA159242D36C200B0BE1F /* SettingsViewController.swift in Sources */, + E1E55B58242C118B00FFAA8A /* AppDelegate.swift in Sources */, + 84D7D86C242D59CF00B2710E /* HexToString.swift in Sources */, + E1E55B5A242C118B00FFAA8A /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + E1E55B5D242C118B00FFAA8A /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + E1E55B5E242C118B00FFAA8A /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + E1E55B62242C119500FFAA8A /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + E1E55B63242C119500FFAA8A /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + E1E55B7C242C119500FFAA8A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + E1E55B7D242C119500FFAA8A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + E1E55B7F242C119500FFAA8A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = TrackIT/TrackIT.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MC27HKM86M; + INFOPLIST_FILE = TrackIT/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.nedim; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + E1E55B80242C119500FFAA8A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = TrackIT/TrackIT.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MC27HKM86M; + INFOPLIST_FILE = TrackIT/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.nedim; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + E1E55B4F242C118A00FFAA8A /* Build configuration list for PBXProject "TrackIT" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E1E55B7C242C119500FFAA8A /* Debug */, + E1E55B7D242C119500FFAA8A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E1E55B7E242C119500FFAA8A /* Build configuration list for PBXNativeTarget "TrackIT" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E1E55B7F242C119500FFAA8A /* Debug */, + E1E55B80242C119500FFAA8A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 84D7D866242D57D000B2710E /* XCRemoteSwiftPackageReference "lottie-ios" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/airbnb/lottie-ios.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.1.6; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 84D7D867242D57D000B2710E /* Lottie */ = { + isa = XCSwiftPackageProductDependency; + package = 84D7D866242D57D000B2710E /* XCRemoteSwiftPackageReference "lottie-ios" */; + productName = Lottie; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = E1E55B4C242C118A00FFAA8A /* Project object */; +} diff --git a/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..23f5250 --- /dev/null +++ b/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "Lottie", + "repositoryURL": "https://github.com/airbnb/lottie-ios.git", + "state": { + "branch": null, + "revision": "8f81de8d81da8631fd95ff81a9db133b76e13ea4", + "version": "3.1.6" + } + } + ] + }, + "version": 1 +} diff --git a/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..0bfe6dc4996c8522ac6e9a9b8fe309b29131769a GIT binary patch literal 24044 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 Br1}5= literal 0 HcmV?d00001 diff --git a/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate b/TrackIT-master/TrackIT.xcodeproj/project.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..ff01ecd1c5e295c3b86e72c16f4748ca8bb413f2 GIT binary patch literal 11417 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 + + + + SchemeUserState + + TrackIT.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/TrackIT-master/TrackIT.xcodeproj/xcuserdata/andreas.xcuserdatad/xcschemes/xcschememanagement.plist b/TrackIT-master/TrackIT.xcodeproj/xcuserdata/andreas.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..fa5e3b2 --- /dev/null +++ b/TrackIT-master/TrackIT.xcodeproj/xcuserdata/andreas.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + TrackIT.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/TrackIT-master/TrackIT.xcworkspace/contents.xcworkspacedata b/TrackIT-master/TrackIT.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..2ead5e4 --- /dev/null +++ b/TrackIT-master/TrackIT.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TrackIT-master/TrackIT.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/TrackIT-master/TrackIT.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/TrackIT-master/TrackIT.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/TrackIT-master/TrackIT.xcworkspace/xcshareddata/swiftpm/Package.resolved b/TrackIT-master/TrackIT.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..23f5250 --- /dev/null +++ b/TrackIT-master/TrackIT.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "Lottie", + "repositoryURL": "https://github.com/airbnb/lottie-ios.git", + "state": { + "branch": null, + "revision": "8f81de8d81da8631fd95ff81a9db133b76e13ea4", + "version": "3.1.6" + } + } + ] + }, + "version": 1 +} diff --git a/TrackIT-master/TrackIT.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/TrackIT-master/TrackIT.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..5b2f6fbe98e44a3fec54a3e2f19bd15522ef5e14 GIT binary patch literal 41623 zcmeFacVHC7`#-)jyLWrLmvZSn1k%f0?k=643W1P>BqR_@IFd_&Bp2^4K&U&2sEA@g zET}-JQ54@QsHlL5U8xon3y6p)Di%aR<@@aJZAbulgYVDp_m_m^_I9T{GxM5fp68j_ z=b6&h+~jZ?jqg#2!W2z0l!{VQEX9wFnr^i_nryA(qAd2>#wPey5#_YCjg7KRnQE<70_lcx|GsVZd3pjNCi=eR1&493{)~@ zq)e2VN}+~P!>K}Q1T~T>qDE20R0&l|O`s-Hlc*YMGG(V6l#^wEu-$GmQ!n~b<}!l1GSNQl6sbUp4vgZLcK}7OMOaxMtx2lp^j2tP{*hr zsh_Bysb8ow)UVWe>JLOA26-S)nShz6m-Xb2jQ zCZLIE5~@Lykp)dbwWtnRQ9WuvQ&9`Dp*A!f%|Nrz0(2u z4y{KU(0|ZV=xOv4+KzUhPtj-Sb94k9MPHy}=u31QeT7b-uhB{L4LXf}M89GRBaE>d zcE=vr6YH=q4#c6jACAT`I0@^q38 cqq=sIXD*&!z1x{Y{64-J#NM}+=i#)8F(h{ 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 literal 0 HcmV?d00001 diff --git a/TrackIT-master/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate b/TrackIT-master/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..714c6acc04c26b904520a1d41f7568c9718680ac GIT binary patch literal 48578 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 literal 0 HcmV?d00001 diff --git a/TrackIT-master/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/TrackIT-master/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..9eab65f --- /dev/null +++ b/TrackIT-master/TrackIT.xcworkspace/xcuserdata/andreas.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/TrackIT-master/TrackIT/Assets.xcassets/AppIcon.appiconset/Contents.json b/TrackIT-master/TrackIT/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/TrackIT-master/TrackIT/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TrackIT-master/TrackIT/Assets.xcassets/Contents.json b/TrackIT-master/TrackIT/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/TrackIT-master/TrackIT/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TrackIT-master/TrackIT/Assets.xcassets/Rectangle 7.imageset/Contents.json b/TrackIT-master/TrackIT/Assets.xcassets/Rectangle 7.imageset/Contents.json new file mode 100644 index 0000000..27f4621 --- /dev/null +++ b/TrackIT-master/TrackIT/Assets.xcassets/Rectangle 7.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Rectangle 7.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TrackIT-master/TrackIT/Assets.xcassets/Rectangle 7.imageset/Rectangle 7.png b/TrackIT-master/TrackIT/Assets.xcassets/Rectangle 7.imageset/Rectangle 7.png new file mode 100644 index 0000000000000000000000000000000000000000..557e73df462bc11cad97e1551e485a3b91209a7f GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0y~yU@Ql+9XZ&5q}G%tzkn2Hfk$L90|U1(2s1Lwnj--e zWGoJHcVbv~PUa<$!;&U>cv7h@-A}f&p-P6S}q=ND76-Ge@1s(=P(;ZiP%&Px5 za(t^b=5Cm>nc>7lYljJU7@MB(38<7eDC}frIVr2)@s7c0(EX=%@_i;rI QFbEhtUHx3vIVCg!0Fr}i=Kufz literal 0 HcmV?d00001 diff --git a/TrackIT-master/TrackIT/Assets.xcassets/home.imageset/69524 1.png b/TrackIT-master/TrackIT/Assets.xcassets/home.imageset/69524 1.png new file mode 100644 index 0000000000000000000000000000000000000000..42bf33b38ef7ae419402fa96f18ed7003fd4fd39 GIT binary patch literal 520 zcmV+j0{8uiP)500009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPfF) z=sLb}XLsK&Tlm3`z?(PhkC~7SP@_yBf2N2HVwG4R-iUxWM8z@0fEYR$#C4ud%q%Jr zk%an*+BH1IC`4RByk{N-V+4^iqD`FtA;kL@Q6NSTIUt(x9s3yyLXW;=j39C%+z*hx z!dx;&5IMs4M0lhL6_PPZkxk-(=(7IMmyCgKHCLl*i`=`+V zFselOL?jWHkWG+P$d`yTA+?YsqFs$vC`=R5PNbJnB+HljOXx;1k-Q>VCUj|w&+xk% z?S#0{i#^;)92~QTq7z9I+E3K_Dt2O=0NU6Qd2dc@CAGl;9;vVHD!stH? z(qwG5hfM)41@u&|9- zSXx@7uuNfLVPTO%!6Fh3`W6)>&PFF@7yQ7m$?WXB`F_7UZ&rmIdNP^(n@XjA4h91& z91fd?VSEh)0-1Wf-fg$rJxmf^*UexsxJ!X+{&j6!$PUL^crCVV2RYfwbArPy8jWsN zDwPiy7fsW)WCVxAJEc-dgDi}6!EI7SQF_cmhhvULiL*S5kioJnoe%Xylf`1ORbKV` zv4uk6GhenH7xB|fCiC*Bnd09v5j2}kjSK3Co}us`NHC43={f1>e< zsFQp3Y`BjRt+iUMGq?~6g)T(>s;WjI16OLZ9rEYNT{I)1@E!yavuwZM6^TS*P9)03 zT+>i=ctIo*nSsl8;=N^ffX<26-9(v%1Jg9+4P+Fo`4sDa0C(4Fm&;`XlO&(df23<2 zi3A-_=gYJXFQ83sKx{7EiJVL#s@3XyruY(1O~ToBQ}7Db&V<+&zrahf*{m@fF;l+} zKX4ok4=Fw`7K`8E7wL5R8!x7l0lYO-jECdD@7SCZ=?Z=jkH_boPaoWRahKLO3m=$< z*dk3xqR0&9p)UN4>G%6T;H5D4>;)!-lra5xThyP+iZ9`jf$#)$S5pabRClO3xVG+nH1TBOJT3l&iVId@-poQR*D-h+a`HW@>+E(BqfrQ_|H^Gl1O(JvTM~q_e^!Of$k{D zIg)uyiJRzzaD&7_7Q3OkB(S}%x^X{+=5R9{J zTjyq~y9Ohcg2nkvU54z)19WF^jDv)`0XZIi@qUrVVL(-#-Gv~o*&K!sE2_(cZO~{#aFyxHB_)(-kMY4rXqHyR^ zbTT%}S;z|=TYwRc0}O7jpPz~%Snsm-7b7(x}Xp)FA2#F9cy7k%EF$w^BfY1 zvBnQ#G7j&;<_IR>P#?YT=T`JDcPbpJZ#w=HQdSZShntD7k!}uhLoKWP#u%iK1Kcl3 zQq^A`;A2&7;@&U|{I)Pb@5mwKQt()v%>`p+eGz{|-o@{`AGQf^7vG-UiTq83Zy26N zdWX(#e1_CZEIG z7%_V-ez+flTzg+g-m2~*xeCvm$-h1d3JUf+{{Sqv)Khlq#&Q4v002ov JPDHLkV1h5IbKL*{ literal 0 HcmV?d00001 diff --git a/TrackIT-master/TrackIT/Assets.xcassets/settings2.imageset/Contents.json b/TrackIT-master/TrackIT/Assets.xcassets/settings2.imageset/Contents.json new file mode 100644 index 0000000..9632f73 --- /dev/null +++ b/TrackIT-master/TrackIT/Assets.xcassets/settings2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "PNG image-00F48C98FD47-1 1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TrackIT-master/TrackIT/Assets.xcassets/settings2.imageset/PNG image-00F48C98FD47-1 1.png b/TrackIT-master/TrackIT/Assets.xcassets/settings2.imageset/PNG image-00F48C98FD47-1 1.png new file mode 100644 index 0000000000000000000000000000000000000000..06cadaf5cf9e5161ff3b1edc967f4334b2cb94ed GIT binary patch literal 1173 zcmV;G1Zw+!O!Xii@Q!FIdM92!37AaB$Hn4$M1e~x%0x4WfvD>*t zz(D?ju!TYj7g9`NVPWwK3j-+>EG$G`KHr)9-0|&9hMjpXOPDWQ-kWpooO|y1{mfcu zp@p}Dd_F(KqqKNW+B=5L?(Xh@XK8hIc3!o&w|`?Xpv{`Z5I8?SKkMk|czJz&{f8re z-qzNZ41(Z&dz-*Yv*?qLkUwGtJv}{ZApvEdVZp%jyi7=2U0qG}_4VB!7#PUeT>!T| zGUq}R{hgdI*ului$gBwC&{Ysm|Vj2^z?$0wM7Chtgo*(+!h~l_)RIn%?A<1cSO(S za-Y@`faM>!{}&?vJ+fDA@q$F$v^PYOq>z9jCE_t_#UkZ|LrxL?XFWl<+vjpem9*vM zWtEpaysuf}o!T2h%Di^-5GyMyB|aAZ!RiSb8hY+LQ5DqG=Tg282kc<1FT=tw&dK#M@x3{+w)LNB=Clcmv z9zt>Gqxc0$^jhO5_8zI1;<4&zoxak1O)jDlYm2!2 z5ZVsod(Ea#8Od|87fO`L$;rh~9uJk43*t3naezaVrOG^CmULs)SvX#aZns;ZhXTju zzCm~|^>ku$%gO`Bm7CP#gKC++)Xc??%R-O2uQW6a4-bD9?&a_YPVpx*Gc$6d=Z1~I z4Zdr37m#~U^wyZ}rtF}y*z#Vgo6$O_c&;(T-W~Yf9mI{7ib-N~OH1zMw{PzXsCnP2 n_}Z(_(6ffyR|_q)@IS-9?cfQ@TSW#J00000NkvXXu0mjf$_6g^ literal 0 HcmV?d00001 diff --git a/TrackIT-master/TrackIT/Info.plist b/TrackIT-master/TrackIT/Info.plist new file mode 100644 index 0000000..eb3c388 --- /dev/null +++ b/TrackIT-master/TrackIT/Info.plist @@ -0,0 +1,76 @@ + + + + + BGTaskSchedulerPermittedIdentifiers + + com.SO.apprefresh + com.SO.imagefetcher + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSBluetoothAlwaysUsageDescription + + NSBluetoothPeripheralUsageDescription + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + UIBackgroundModes + + fetch + processing + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/TrackIT-master/TrackIT/TrackIT.entitlements b/TrackIT-master/TrackIT/TrackIT.entitlements new file mode 100644 index 0000000..0c67376 --- /dev/null +++ b/TrackIT-master/TrackIT/TrackIT.entitlements @@ -0,0 +1,5 @@ + + + + + diff --git a/TrackIT-master/TrackIT/controllers/SettingsViewController.swift b/TrackIT-master/TrackIT/controllers/SettingsViewController.swift new file mode 100644 index 0000000..53acb3b --- /dev/null +++ b/TrackIT-master/TrackIT/controllers/SettingsViewController.swift @@ -0,0 +1,311 @@ +// +// settings.swift +// TrackIT +// +// Created by Laima Cernius-Ink on 3/25/20. +// Copyright © 2020 Steve Ink. All rights reserved. +// + +import UIKit +import CoreBluetooth +class settings: UIViewController { + + let home = UILabel() + let lbl = UILabel() + let lbl2 = UITextView() + let lbl3 = UILabel() + let screenSize: CGRect = UIScreen.main.bounds + let view1 = UIView() + + var peripharalManger: CBPeripheralManager! + private var service: CBUUID! + private let value = "AD34" + + var centralManager:CBCentralManager! + var periphiralDevice:CBPeripheral! + + var counter = 0 + var data = [String]() + var dicta = [String:String]() + var dict = [[String:String]]() + + + + override var prefersStatusBarHidden: Bool { + return true + } + + + override func viewDidLoad() { + super.viewDidLoad() + + centralManager = CBCentralManager(delegate: self, queue: nil) + + peripharalManger = CBPeripheralManager(delegate: self, queue: nil) + + let screenWidth = screenSize.width + let screenHeight = screenSize.height + + let color1 = hexStringToUIColor(hex: "#2792FF") + let color2 = hexStringToUIColor(hex: "#7EBFFF") + + + + home.text = "Settings" + home.textColor = .black + home.frame.size.width = 200 + home.frame.size.height = 75 + home.center.x = 130 + home.center.y = 105 + // home.font = UIFont(name: "Avenir Next", size: 60) + home.font = .boldSystemFont(ofSize: 45) + + + view.addSubview(home) + + let defaults = UserDefaults.standard + let name = defaults.string(forKey: "name") + let uuid = defaults.string(forKey: "uuid") + if uuid == nil { + defaults.set("unknown",forKey: "uuid") + } + lbl.text = "Name: " + "\(name ?? "Anonymous")" + lbl.font = .boldSystemFont(ofSize: 20) + + + lbl.frame.size.width = 300 + lbl.frame.size.height = 100 + lbl.center.x = view.center.x + lbl.center.y = home.center.y + 140 + lbl.textColor = .black + + view.addSubview(lbl) + print(uuid) + let uuid2 = uuid!.replacingOccurrences(of: "Optional(", with: "", options: NSString.CompareOptions.literal, range: nil) + let uuid3 = uuid2.replacingOccurrences(of: ")", with: "", options: NSString.CompareOptions.literal, range: nil) + lbl2.text = "Device uuid: " + "\(uuid3 ?? "unknown")" + lbl2.font = .boldSystemFont(ofSize: 20) + + + + lbl2.textColor = .black + lbl2.frame.size.width = 300 + lbl2.frame.size.height = 175 + lbl2.isEditable = false + lbl2.center.x = view.center.x + lbl2.center.y = lbl.center.y + 100 + view.addSubview(lbl2) + lbl.autoresizingMask = [.flexibleWidth, .flexibleHeight] + + lbl2.autoresizingMask = [.flexibleWidth, .flexibleHeight] + + lbl2.backgroundColor = .clear + view1.layer.cornerRadius = 20 + view1.frame.size.width = screenWidth - 60 + view1.frame.size.height = 100 + view1.center.x = view.center.x + view1.center.y = lbl2.center.y + 110 + view1.backgroundColor = color1 + view.addSubview(view1) + + lbl3.text = "Disable Background Refresh" + lbl3.font = .boldSystemFont(ofSize: 20) + + + + lbl3.textColor = .white + lbl3.frame.size.width = 300 + lbl3.frame.size.height = 100 + + lbl3.center.x = 167 + lbl3.center.y = 50 + view1.addSubview(lbl3) + + let tap = UITapGestureRecognizer(target: self, action: #selector(taped)) + + view1.addGestureRecognizer(tap) + } + + @objc func taped() { + + let defaults = UserDefaults.standard + let enabledBackground = defaults.bool(forKey: "enabledBackground") + + if enabledBackground == nil { + defaults.set(true,forKey: "enabledBackground") + lbl3.text = "Disable Background Refresh" + } + if enabledBackground == true { + defaults.set(false,forKey: "enabledBackground") + lbl3.text = "Disable Background Refresh" + } + if enabledBackground == false { + defaults.set(true,forKey: "enabledBackground") + lbl3.text = "Enable Background Refresh" + } + } + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} + +extension settings: CBPeripheralManagerDelegate { + + func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) { + switch peripheral.state { + + case .unknown: + print("Bluetooth Device is UNKNOWN") + case .unsupported: + print("Bluetooth Device is UNSUPPORTED") + case .unauthorized: + print("Bluetooth Device is UNAUTHORIZED") + case .resetting: + print("Bluetooth Device is RESETTING") + case .poweredOff: + print("Bluetooth Device is POWERED OFF") + case .poweredOn: + print("Bluetooth Device is POWERED ON") + addServices() + @unknown default: + print("Unknown State") + } + } + + + + + func addServices() { + + let valueData = value.data(using: .utf8) + // 1. Create instance of CBMutableCharcateristic + let myChar1 = CBMutableCharacteristic(type: CBUUID(nsuuid: UUID()), properties: [.notify, .write, .read], value: nil, permissions: [.readable, .writeable]) + let myChar2 = CBMutableCharacteristic(type: CBUUID(nsuuid: UUID()), properties: [.read], value: valueData, permissions: [.readable]) + // 2. Create instance of CBMutableService + service = CBUUID(nsuuid: UUID()) + let myService = CBMutableService(type: service, primary: true) + // 3. Add characteristics to the service + myService.characteristics = [myChar1, myChar2] + // 4. Add service to peripheralManager + peripharalManger.add(myService) + // 5. Start advertising + + print("UUID service: \(service!)") + let defaults = UserDefaults.standard + + defaults.set("\(String(describing: service))",forKey: "uuid") + startAdvertising() + + } + + func startAdvertising() { + + + peripharalManger.startAdvertising([CBAdvertisementDataLocalNameKey : "BLE-APP-\(randomString(length: 10))", CBAdvertisementDataServiceUUIDsKey : [service]]) + print("Started Advertising") + + } +} + + +extension settings: CBCentralManagerDelegate { + + func centralManagerDidUpdateState(_ central: CBCentralManager) { + switch central.state { + + case .unknown: + print("Central code is unknown") + case .resetting: + print("Central code is resetting") + case .unsupported: + print("Central code is unsupported") + case .unauthorized: + print("Central code is unauthorized") + case .poweredOff: + print("Central code is powerdOff") + case .poweredOn: + print("Central code is powerOn") + + centralManager.scanForPeripherals(withServices: [CBUUID(string: "0000180F-0000-1000-8000-00805F9B34FB")], options: nil) + + + let timer = Timer.scheduledTimer(timeInterval: 3.0, + target: self, + selector: Selector(("scan")), + userInfo: nil, + repeats: true) + + timer.fire() + + + + @unknown default: + print("Default") + } + } + + @objc func scan(){ + centralManager.scanForPeripherals(withServices: nil) + + } + + func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, + advertisementData: [String: Any], rssi RSSI: NSNumber) { + periphiralDevice = peripheral + + let uuidString = periphiralDevice.identifier.uuidString + let peripharalName = periphiralDevice.name + + //Add scanned data to array and count data every 10 inputs + if !data.contains(uuidString){ + data.append(uuidString) + + dicta["name"] = peripharalName + dicta["uuid"] = uuidString + let defaults = UserDefaults.standard + let uuidContactWith = defaults.array(forKey: "uuidContactWith") + defaults.set([uuidString, uuidContactWith as Any],forKey: "uuidContactWith") + + print("Saved:" + "\(uuidContactWith)") + dict.append(dicta) + } + + if data.count >= 10 { + print("Data count \(data.count), ckeared") + data = [] + } + + print("As array \n") + print(data) + print("********************************** \n") + print("Print as array of dictionaries \n") + print(dict) + + + + print("\nName : \(peripheral.name ?? "(No name)")") + print("RSSI : \(RSSI)") + for ad in advertisementData { + print("AD Data: key \(ad.key) value: \(ad.value)") + } + + central.stopScan() + + + } + + func randomString(length: Int) -> String { + let letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + return String((0.. 105 { + + + self.home.center.y = 105 + + + + } + + if self.home.center.y < -800 { + + + self.home.center.y = -700 + + + + } + } + + } + @objc func draggedView2(_ sender:UIPanGestureRecognizer){ + let screenWidth = screenSize.width + let screenHeight = screenSize.height + let timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true) { timer in + if self.home.center.y > 105 { + + + self.home.center.y = 105 + + + + } + + if self.home.center.y < -800 { + + + self.home.center.y = -700 + + + + } + } + //if viewDragLong == true { + //self.view.bringSubviewToFront(planet) + let translation = sender.translation(in: self.view) + // one.center = CGPoint(x: one.center.x, y: one.center.y + translation.y ) + sender.setTranslation(CGPoint.zero, in: self.view) + + UIView.animate(withDuration: 0.4, + delay: 0.0, + options: [], + animations: { [weak self] in + self!.home.center = CGPoint(x: self!.home.center.x, y: self!.home.center.y + translation.y * 1.7 ) + + + }, completion: nil) + + UIView.animate(withDuration: 0.4, + delay: 0.05, + options: [], + animations: { [weak self] in + self?.animationView.center.y = self!.home.center.y + 190 + self?.lbl.center.y = self!.home.center.y + 190 + + }, completion: nil) + + UIView.animate(withDuration: 0.3, + delay: 0.1, + options: [], + animations: { [weak self] in + self!.view1.center.y = ((self?.animationView.center.y)!) + 250 + + + }, completion: nil) + + + UIView.animate(withDuration: 0.4, + delay: 0.15, + options: [], + animations: { [weak self] in + self!.view2.center.y = self!.view1.center.y + 250 + + + }, completion: nil) + UIView.animate(withDuration: 0.4, + delay: 0.2, + options: [], + animations: { [weak self] in + self!.view3.center.y = self!.view2.center.y + 250 + + + }, completion: nil) + + UIView.animate(withDuration: 0.3, + delay: 0.25, + options: [], + animations: { [weak self] in + self!.view4.center.y = self!.view3.center.y + 250 + + + }, completion: nil) + + + + + + + // }/ + } +} + + +extension ViewController: CBPeripheralManagerDelegate { + + func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) { + switch peripheral.state { + + case .unknown: + print("Bluetooth Device is UNKNOWN") + case .unsupported: + print("Bluetooth Device is UNSUPPORTED") + case .unauthorized: + print("Bluetooth Device is UNAUTHORIZED") + case .resetting: + print("Bluetooth Device is RESETTING") + case .poweredOff: + print("Bluetooth Device is POWERED OFF") + case .poweredOn: + print("Bluetooth Device is POWERED ON") + addServices() + @unknown default: + print("Unknown State") + } + } + + + + + func addServices() { + + let valueData = value.data(using: .utf8) + // 1. Create instance of CBMutableCharcateristic + let myChar1 = CBMutableCharacteristic(type: CBUUID(nsuuid: UUID()), properties: [.notify, .write, .read], value: nil, permissions: [.readable, .writeable]) + let myChar2 = CBMutableCharacteristic(type: CBUUID(nsuuid: UUID()), properties: [.read], value: valueData, permissions: [.readable]) + // 2. Create instance of CBMutableService + service = CBUUID(nsuuid: UUID()) + let myService = CBMutableService(type: service, primary: true) + // 3. Add characteristics to the service + myService.characteristics = [myChar1, myChar2] + // 4. Add service to peripheralManager + peripharalManger.add(myService) + // 5. Start advertising + + print("UUID service: \(service!)") + startAdvertising() + + } + + func startAdvertising() { + peripharalManger.startAdvertising([CBAdvertisementDataLocalNameKey : "BLE-APP-\(randomString(length: 10))", CBAdvertisementDataServiceUUIDsKey : [service]]) + print("Started Advertising") + + } +} + + +extension ViewController: CBCentralManagerDelegate { + + func centralManagerDidUpdateState(_ central: CBCentralManager) { + switch central.state { + + case .unknown: + print("Central code is unknown") + case .resetting: + print("Central code is resetting") + case .unsupported: + print("Central code is unsupported") + case .unauthorized: + print("Central code is unauthorized") + case .poweredOff: + print("Central code is powerdOff") + case .poweredOn: + print("Central code is powerOn") + + centralManager.scanForPeripherals(withServices: [CBUUID(string: "0000180F-0000-1000-8000-00805F9B34FB")], options: nil) + + + let timer = Timer.scheduledTimer(timeInterval: 3.0, + target: self, + selector: Selector(("scan")), + userInfo: nil, + repeats: true) + + timer.fire() + + + + @unknown default: + print("Default") + } + } + + @objc func scan(){ + centralManager.scanForPeripherals(withServices: nil) + + } + + func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, + advertisementData: [String: Any], rssi RSSI: NSNumber) { + periphiralDevice = peripheral + + let uuidString = periphiralDevice.identifier.uuidString + let peripharalName = periphiralDevice.name + + //Add scanned data to array and count data every 10 inputs + if !data.contains(uuidString){ + data.append(uuidString) + + dicta["name"] = peripharalName + dicta["uuid"] = uuidString + let defaults = UserDefaults.standard + let uuidContactWith = defaults.array(forKey: "uuidContactWith") + defaults.set([uuidString, uuidContactWith as Any ],forKey: "uuidContactWith") + + print("Saved:" + "\(uuidContactWith)") + dict.append(dicta) + } + + if data.count >= 10 { + print("Data count \(data.count), ckeared") + data = [] + } + + print("As array \n") + print(data) + print("********************************** \n") + print("Print as array of dictionaries \n") + print(dict) + + mLabelForUpdate.text = "\(dict)" + mLabelForUpdate.autoresizingMask = [.flexibleWidth, .flexibleHeight] + + print("\nName : \(peripheral.name ?? "(No name)")") + print("RSSI : \(RSSI)") + for ad in advertisementData { + print("AD Data: key \(ad.key) value: \(ad.value)") + } + + central.stopScan() + + + } + + func randomString(length: Int) -> String { + let letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + return String((0.. UIColor { + var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased() + + if (cString.hasPrefix("#")) { + cString.remove(at: cString.startIndex) + } + + if ((cString.count) != 6) { + return UIColor.gray + } + + var rgbValue:UInt64 = 0 + Scanner(string: cString).scanHexInt64(&rgbValue) + + return UIColor( + red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0, + green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0, + blue: CGFloat(rgbValue & 0x0000FF) / 255.0, + alpha: CGFloat(1.0) + ) + } + +} +extension settings { + + func hexStringToUIColor (hex:String) -> UIColor { + var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased() + + if (cString.hasPrefix("#")) { + cString.remove(at: cString.startIndex) + } + + if ((cString.count) != 6) { + return UIColor.gray + } + + var rgbValue:UInt64 = 0 + Scanner(string: cString).scanHexInt64(&rgbValue) + + return UIColor( + red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0, + green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0, + blue: CGFloat(rgbValue & 0x0000FF) / 255.0, + alpha: CGFloat(1.0) + ) + } + +} diff --git a/TrackIT-master/TrackIT/lf30_editor_SKZ870.json b/TrackIT-master/TrackIT/lf30_editor_SKZ870.json new file mode 100644 index 0000000..c19a05b --- /dev/null +++ b/TrackIT-master/TrackIT/lf30_editor_SKZ870.json @@ -0,0 +1 @@ +{"v":"5.5.0","fr":29.9700012207031,"ip":0,"op":70.0000028511585,"w":250,"h":250,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":90,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[118.549,117.468,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,2.889]},"t":0,"s":[83.62,83.62,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,-0.549]},"t":27,"s":[105.62,105.62,100]},{"t":52.0000021180034,"s":[83.62,83.62,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[106.672,106.672],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.15294117647058825,0.5725490196078431,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[7.715,9.008],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":72.0000029326201,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"w1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"t":25.0000010182709,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[125.156,124.494,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[83.6,83.6,100]},{"t":25.0000010182709,"s":[234.048,234.048,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[69.508,69.508],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3254901960784314,0.6549019607843137,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.187,0.605],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[139.443,139.443],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":70.0000028511585,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"w2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"t":30.0000012219251,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[125.326,124.285,0],"ix":2},"a":{"a":0,"k":[-44.248,-66.371,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[92.661,92.661,100]},{"t":30.0000012219251,"s":[229.892,229.892,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[86.801,86.801],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.3254901960784314,0.6549019607843137,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-44.6,-65.6],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":70.0000028511585,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TrackIT-master/TrackIT/services/AppDelegate.swift b/TrackIT-master/TrackIT/services/AppDelegate.swift new file mode 100644 index 0000000..fafe632 --- /dev/null +++ b/TrackIT-master/TrackIT/services/AppDelegate.swift @@ -0,0 +1,116 @@ +// +// AppDelegate.swift +// TrackIT +// +// Created by Laima Cernius-Ink on 3/25/20. +// Copyright © 2020 Steve Ink. All rights reserved. +// + + + + +import UIKit +import BackgroundTasks +import CoreBluetooth +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate,CBCentralManagerDelegate { + func centralManagerDidUpdateState(_ central: CBCentralManager) { + + } + + + private var centralManager : CBCentralManager! + func scheduleImagefetcher() { + let request = BGProcessingTaskRequest(identifier: "com.SO.imagefetcher") + request.requiresNetworkConnectivity = false // Need to true if your task need to network process. Defaults to false. + request.requiresExternalPower = false + //If we keep requiredExternalPower = true then it required device is connected to external power. + + request.earliestBeginDate = Date(timeIntervalSinceNow: 1 * 60) // fetch Image Count after 1 minute. + //Note :: EarliestBeginDate should not be set to too far into the future. + do { + try BGTaskScheduler.shared.submit(request) + } catch { + print("Could not schedule image fetch: (error)") + } + } + + func scheduleAppRefresh() { + + } + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + + let defaults = UserDefaults.standard + let uuidContactWith = defaults.array(forKey: "uuidContactWith") + + let uuid = defaults.string(forKey: "uuid") + if uuid == nil { + defaults.set("unknown",forKey: "uuid") + } + + if uuidContactWith == nil { + defaults.set(["none"],forKey: "uuidContactWith") + } + if UserDefaults.standard.integer(forKey: "use") < 0 { + + + UserDefaults.standard.set( UserDefaults.standard.integer(forKey: "use") + 1, forKey: "use") + print(UserDefaults.standard.integer(forKey: "use")) + UserDefaults.standard.set( UserDefaults.standard.integer(forKey: "use") + 1, forKey: "use") + } + + + registerBackgroundTaks() +centralManager = CBCentralManager(delegate: self, queue: nil, options: nil) + let center = UNUserNotificationCenter.current() + + center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in + } + return true + } + + //MARK: Register BackGround Tasks + private func registerBackgroundTaks() { + + BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.SO.imagefetcher", using: nil) { task in + //This task is cast with processing request (BGProcessingTask) + + let center = UNUserNotificationCenter.current() + // MARK: UISceneSession Lifecycle + let content = UNMutableNotificationContent() + content.title = "Hey I'm a notification!" + content.body = "Look at me!" + + // Step 3: Create the notification trigger + let date = Date().addingTimeInterval(10) + + let dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date) + + let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false) + + // Step 4: Create the request + + let uuidString = UUID().uuidString + + let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger) + + // Step 5: Register the request + center.add(request) { (error) in + // Check the error parameter and handle any errors + } + } + + + func applicationDidEnterBackground(_ application: UIApplication) { + scheduleAppRefresh() + scheduleImagefetcher() + } + + + + func cancelAllPendingBGTask() { + BGTaskScheduler.shared.cancelAllTaskRequests() + } +} +} diff --git a/TrackIT-master/TrackIT/services/SceneDelegate.swift b/TrackIT-master/TrackIT/services/SceneDelegate.swift new file mode 100644 index 0000000..f1d27e5 --- /dev/null +++ b/TrackIT-master/TrackIT/services/SceneDelegate.swift @@ -0,0 +1,53 @@ +// +// SceneDelegate.swift +// TrackIT +// +// Created by Laima Cernius-Ink on 3/25/20. +// Copyright © 2020 Steve Ink. All rights reserved. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/TrackIT-master/TrackIT/view/Base.lproj/LaunchScreen.storyboard b/TrackIT-master/TrackIT/view/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/TrackIT-master/TrackIT/view/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TrackIT-master/TrackIT/view/Base.lproj/Main.storyboard b/TrackIT-master/TrackIT/view/Base.lproj/Main.storyboard new file mode 100644 index 0000000..bd07e4a --- /dev/null +++ b/TrackIT-master/TrackIT/view/Base.lproj/Main.storyboard @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TrackIT-master/placeholder.txt b/TrackIT-master/placeholder.txt new file mode 100644 index 0000000..375f1d5 --- /dev/null +++ b/TrackIT-master/placeholder.txt @@ -0,0 +1 @@ +Placeholder text till we add files...