
swift-motions
A wrapper on the CoreMotion framework replacing the completion blocks with Swift concurrency.
Overview
CoreMotion reports motion and environment related data from the accelerometers, gyrometers, magnetometer and barometer on iOS devices.
Availability
- iOS 13.0+
- iPadOS 13.0+
- macCatalyst 15.0+
- macOS 10.15+
- watchOS 6.0+
Installation
The Swift Package Manager is a tool for managing the distribution of Swift code and is integrated into the swift compiler.
Add the package to the dependencies in your Package.swift
file.
let package: Package = .init(
...
dependencies: [
.package(url: "https://github.com/alexandrehsaad/swift-motions.git", branch: "main")
],
...
)
Add the package as a dependency on your target in your Package.swift
file.
let package: Package = .init(
...
targets: [
.target(name: "MyTarget", dependencies: [
.product(name: "Motions", package: "swift-motions")
]),
],
...
)
Import the package in your source code.
import Motions
Demonstration
Initiate the accelerometer, gyrometer or the magnetometer with your desired frequency.
let meter: Accelerometer = .init()
Subscribe to any meter, and do something with the asynchronous stream of values you receive. The return type is Point
, which conforms to a new protocol PlottableInThreeDimensions
.
do {
let stream: AsyncStream<Point> = try meter.subscribe()
for await data in stream {
// Do something with the data.
print(data)
}
} catch let error {
// Do something with the error.
print(error)
}
Unsubscribe from the meter.
meter.unsubscribe()
Troubleshooting common errors
Your app must include usage description keys in its Info.plist
file for the types of data it needs. Failure to include these keys cause the app to crash. To access motion data specifically, it must include NSMotionUsageDescription
.
Documentation
You can read more about this package by visiting the documentation page.
Contribution
Contributions are what makes the open source community such an amazing place to learn, inspire, and create. If you wish to contribute and be part of this project, please fork the repository and create a pull request.
- Fork the repository
- Create your feature branch
git checkout -b feature/NewFeature
- Commit your changes
git commit -m 'Added a new feature'
- Push to your branch
git push origin feature/NewFeature
- Open a pull request
Reporting a bug
If you find a bug, please create an issue.
Contacting the maintainers
If you want to share your thoughts on how to improve this repository, you can contact the code owner. See the CODEOWNERS.txt
file for more information.
Supporting this repository
If this repository has been useful to you in some way, show your support by starring it.
Code of Conduct
To be a truly great community, we welcome developers from all walks of life, with different backgrounds, and with a wide range of experience. A diverse and friendly community will have more great ideas, more unique perspectives, and produce more great code. We will work diligently to make this community welcoming to everyone. See the CODEOFCONDUCT.md
file for more information.
License
Distributed under Apache License v2.0 with Runtime Library Exception. See the LICENSE.md
file for more information.
swift-motions
A wrapper on the CoreMotion framework replacing the completion blocks with Swift concurrency.
Overview
CoreMotion reports motion and environment related data from the accelerometers, gyrometers, magnetometer and barometer on iOS devices.
Availability
Installation
The Swift Package Manager is a tool for managing the distribution of Swift code and is integrated into the swift compiler.
Add the package to the dependencies in your
Package.swift
file.Add the package as a dependency on your target in your
Package.swift
file.Import the package in your source code.
Demonstration
Initiate the accelerometer, gyrometer or the magnetometer with your desired frequency.
Subscribe to any meter, and do something with the asynchronous stream of values you receive. The return type is
Point
, which conforms to a new protocolPlottableInThreeDimensions
.Unsubscribe from the meter.
Troubleshooting common errors
Your app must include usage description keys in its
Info.plist
file for the types of data it needs. Failure to include these keys cause the app to crash. To access motion data specifically, it must includeNSMotionUsageDescription
.Documentation
You can read more about this package by visiting the documentation page.
Contribution
Contributions are what makes the open source community such an amazing place to learn, inspire, and create. If you wish to contribute and be part of this project, please fork the repository and create a pull request.
git checkout -b feature/NewFeature
git commit -m 'Added a new feature'
git push origin feature/NewFeature
Reporting a bug
If you find a bug, please create an issue.
Contacting the maintainers
If you want to share your thoughts on how to improve this repository, you can contact the code owner. See the
CODEOWNERS.txt
file for more information.Supporting this repository
If this repository has been useful to you in some way, show your support by starring it.
Code of Conduct
To be a truly great community, we welcome developers from all walks of life, with different backgrounds, and with a wide range of experience. A diverse and friendly community will have more great ideas, more unique perspectives, and produce more great code. We will work diligently to make this community welcoming to everyone. See the
CODEOFCONDUCT.md
file for more information.License
Distributed under Apache License v2.0 with Runtime Library Exception. See the
LICENSE.md
file for more information.