GatheredKit it currently in a pre-release beta. The API is unstable, although the only large planned breaking fix is to introduce structured concurrency for thread safety.
GatheredKit a consistent protocol-oriented API for various data sources offered by macOS, iOS, watchOS, and tvOS.
Documentation is available online. This documentation is compiled against iOS. This doesn’t quite cover all symbols in the project so please checkout the project to view documentation for other platforms.
Features
Consistent API between types
Updating properties are marked @Published
Where reasonable, types have the same properties across platforms, using @available to mark properties as unavailable on some platforms
Protocol-oriented API
The Gathered app is protocol-driven, enabling the private packages to only depend on GatheredKit, enabling support for recording and remote sources of unknown types
Easily access formatted values
Sensible defaults, fully customisable
Measurement values for all applicable types
Provides type-safe and easy conversion to related units
Batteries included
Core library provides many types to help make new sources easily, such as properties for common types
Localised
Currently localisation is only provided for British English. Contributions are welcome!
Provided Libraries
The core library, GatheredKit, provides the protocols used by the other libraries, along with various convenience types such as BasicProperty.
The remaining libraries each provide one or more data sources. This is done to allow the a subset of the data sources to be included, which aids with documentation, discovery, and prevents accidentally include APIs that require extra permissions, such as accessing the IDFA.
Each of these libraries roughly correlates to one of Apple’s frameworks.
GatheredKitCamera provides access to cameras, both built-in and external. The CameraProvider can be used to query for connected cameras. It wraps the AVFoundation framework.
GatheredKitLocation provides the Location data source, which is used to access location-based information provided by the GPS and associated sensors. It relies on the Core Location framework.
GatheredKitMotion
GatheredKitMotion provides data sources that utilise the CoreMotion framework, such as an Accelerometer, Gyroscope, and Magnetometer.
GatheredKit a consistent protocol-oriented API for various data sources offered by macOS, iOS, watchOS, and tvOS.
The code originated from Gathered, hence the name and logo. Prior to version 2.0 Gathered used a closed-source version of GatheredKit. Version 2.0 is currently in beta and can accessed via TestFlight.
Documentation is available online. This documentation is compiled against iOS. This doesn’t quite cover all symbols in the project so please checkout the project to view documentation for other platforms.
Features
@Published
@available
to mark properties as unavailable on some platformsGatheredKit
, enabling support for recording and remote sources of unknown typesMeasurement
values for all applicable typesProvided Libraries
The core library,
GatheredKit
, provides the protocols used by the other libraries, along with various convenience types such asBasicProperty
.The remaining libraries each provide one or more data sources. This is done to allow the a subset of the data sources to be included, which aids with documentation, discovery, and prevents accidentally include APIs that require extra permissions, such as accessing the IDFA.
Each of these libraries roughly correlates to one of Apple’s frameworks.
GatheredKitCamera
GatheredKitCamera
provides access to cameras, both built-in and external. TheCameraProvider
can be used to query for connected cameras. It wraps theAVFoundation
framework.GatheredKitDevice
GatheredKitDevice
provides various sources relating to the current device.On iOS this wraps the
UIKit
framework, specificallyUIDevice
.GatheredKitLocation
GatheredKitLocation
provides theLocation
data source, which is used to access location-based information provided by the GPS and associated sensors. It relies on the Core Location framework.GatheredKitMotion
GatheredKitMotion
provides data sources that utilise theCoreMotion
framework, such as anAccelerometer
,Gyroscope
, andMagnetometer
.GatheredKitProcessInfo
GatheredKitProcessInfo
provides information relating to the computer the process is running on.GatheredKitScreen
GatheredKitScreen
provides access to the screens associated with the device.Future Libraries
Below are the sources that are available in the Gathered app but have not yet been added to this open source project.
Installation
SwiftPM
To install via SwiftPM add the package to the dependencies section and as the dependency of a target:
License
The project is released under the MIT license. View the LICENSE file for the full license.