Giter VIP home page Giter VIP logo

trackit-ios's Introduction

TrackIT

Google and Apple decided to make almost the same thing, so this project is archived.

Open source native cross-platform mobile application for tracking infections in communities.

Certain development in project, reveal that this is not implementable in scale that we hoped, till the further notice, this project is postponed.

Scenario

First of all, we should do at this time is social distancing, but we can't survive without food so we have to expose ourselves to some degree to get groceries among other essentials.

Going to market in these times poses a risk of getting in close contact with someone who can be infected. Going to a public place in these times poses a risk of getting in close contact with someone who can be infected. To track proximity connections we can use TrackIT app. When you are grocery shopping app is constantly scanning your environment and stores other devices information to your local database so you don't have to be using data plans. To track proximity connections we can use TrackIT app. When you are grocery shopping, turn on the app and it will constantly be scanning your environment and stores other devices information to your local database so you don't have to be using celular data.

Another person uses an android version of TrackIT too, and it's located at the same place as you are. Anyone can use TarckIT including android users. Your device is advertising itself the whole time you are scanning so this other user can record your device as well. Your device is advertising itself the whole time you are scanning so this other user can record your device as well.

After you connect to the internet ( keep in mind that app should at least be in the background not closed) app connects to a server and syncs your stored sessions. After you connect to the internet ( keep in mind that app should at least be in the background not closed) app connects to a server and syncs your stored sessions.

Some days later, you have received notification that is stating that you have been in close proximity with someone who has tested positive for COVID-19. Some days later, you have received notification that is stating that you have been in close proximity with someone who has tested positive for COVID-19.

Your direct order is to self-quarantine and reports your symptoms trough your government suggested channel. if you receive such a notification it is a good idea to self-quarantine and report your symptoms trough your government suggested channel.

Functionalities

TrackIT mobile app utilizes Bluetooth capability of the device and tracks infections in the community.
When application opens the app it utilizes two features simultaneously:

  • Creating BLE service and assigning new UUID and saving every service to a local database
  • Start scanning environment for all Bluetooth devices and saving all their data to a local database

App functions

App functions are divided into two separate parts:

  • First part is in charge of scanning for other devices
  • The second part is in charge of maintaining runnable service

Scanning for devices

TrackIT uses Bluetooth to scan your environment. App must be in the foreground for scanning to be effective because of Apple background policy.

The app is built to recognize states of Bluetooth on the device, where most important states are .unknown .on .off.

App scans and stores every scanned device and prepares it for syncing with a server.
All scanned devices that are stored can be seen under Tracked devices segment in Devices tab.

App stores devices:

  • name
  • uuid
  • rssi
  • timestamp yyyy-mm-dd HH:mm:ss

Syncing with the server is done automatically in the background as soon as the user connects to the internet. If syncing was not done application will send alert to the user requiring manual sync.

Emitting service

Emitting or advertising service is used for a device to advertise itself as peripheral.
Advertising device as a peripheral is important because it enables other devices to scan and store UUID of the advertised peripheral.

The flow of starting the service:

  • generating UUID
  • advertising it to the environment with unique name and UUID
  • storing service to a local database

Every stored service can be seen under My devices segment in Devices tab.

App stores services generatedID to a local database.

Background syncing

server in development

The app will sync with the server when it stays in the background. The app can't sync with the server if it was terminated by the user itself.
For further use of the app, syncing is required.

Stack used

Application is light-weight because of a limited number of libraries that are used in development.
We strived to achieve as many as possible without requiring an external library.

This project has been completely free of CocoaPods and every library was implemented trough Swift Package manager to ensure greater stability.

User interface stability has been achieved mostly using a storyboard. App user interface follows Human interface guidelines

Libraries used:

  • Lottie pulsing animation
  • Realm local database storing
  • CoreBluetooth Apple built-in framework

Programming language

Project was written in Swift 5.

Team

nedimf 2020Nonprofit

Buy us coffee

We have invested a lot time in building this app and implementing new features to it, so we would really appricate if you would take moment and

Buy Me A Coffee

MIT License

Copyright (c) 2020 TechAvangers

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

trackit-ios's People

Contributors

andreasink2 avatar nedimf avatar

Stargazers

 avatar

Watchers

 avatar

trackit-ios's Issues

iOS deployment target

I think it is necessary to lower the ios version needed to be compatible with many devices.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.