A modern device detection and querying library.
- Swift 5 support
- Modern syntax
- Documentation
- Device detection
- Device family detection
- Device screens
- Simulator detection
- Simple querying
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")
]
)
Add this to your Cartfile
:
github "bojan/Thingy"
Add the repository as a submodule to your project.
git submodule add https://github.com/bojan/Thingy.git Vendor/Thingy
Open 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).
Import the module where needed:
import Thingy
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
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.")
}
let myDevice = Device()
if myDevice.display == .screen10_5Inch {
print("This is the 10.5in iPad Pro.")
}
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.
Bojan Dimovski
Thingy is available under the WTFPL license. Check the LICENSE file for more info.