Thingy
A modern device detection and querying library.
Features
- Swift 5 support
- Modern syntax
- Documentation
- Device detection
- Device family detection
- Device screens
- Simulator detection
- Simple querying
Requirements
Installation
Swift Packager Manager (SPM)
Use Xcode 11 to add Thingy as a package or update your Package.swift for manual setups:
import PackageDescription
let package = Package(
name: "HelloWorld",
dependencies: [
.Package(url: "https://github.com/bojan/Thingy.git", "3.0.0")
]
)Carthage
Add this to your Cartfile:
github "bojan/Thingy"
Manually
Add the repository as a submodule to your project.
git submodule add https://github.com/bojan/Thingy.git Vendor/ThingyOpen the newly created folder in Finder and drag Thingy.xcodeproj to your project.
In your project's settings, select your target and under General > Embedded Binaries, add the framework depending on the target OS (iOS, watchOS or tvOS).
Usage
Import the module where needed:
import ThingyDevice properties
Inspect the current device:
let myDevice = Device()
// Compare models or product families
if myDevice.family == .tv {
print("This is an Apple TV device.")
}
if myDevice.model != .iPhoneXSMax {
print("This is NOT an iPhone XS Max.")
}
// Pretty printed device properties
print(myDevice.family.marketingName) // e.g. iPad
print(myDevice.model.marketingName) // e.g. iPhone 7 Plus
print(myDevice.productLine.marketingName) // e.g. Air
Model comparison
let myDevice = Device()
do {
let result = try myDevice.isEqual(to: Thingy.iPadPro12Inch)
}
catch {
print("The devices are incompatible.")
}
do {
let result = try myDevice.isOlder(than: Thingy.iPadPro10Inch)
}
catch {
print("The devices are incompatible.")
}Device size
let myDevice = Device()
if myDevice.display == .screen10_5Inch {
print("This is the 10.5in iPad Pro.")
}
Contributions
All contributions and suggestions are welcome and very much appreciated.
Should you have a feature request or a problem that you may experience, feel free to open an issue.
If you are willing to contribute by adding a feature or squashing a bug or two, please submit a pull request.
Author
Bojan Dimovski
License
Thingy is available under the WTFPL license. Check the LICENSE file for more info.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
