Swiftpack.co -  Package - ezefranca/WatchShaker
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
ezefranca/WatchShaker
Simple motion detector for ⌚️ (watchOS) shake gesture.
.package(url: "https://github.com/ezefranca/WatchShaker.git", from: "1.0.2")

WatchShaker

Simple motion detector for ⌚️ (watchOS) shake gesture.

Swift Version Platform


WatchShaker is a watchOS helper to get your ⌚️ shake movements

Requirements

  • watchOS 6.0+
  • Xcode 11.0+

Installation

Swift Package Manager

Once you have your Swift package set up, adding WatchShaker as a dependency is as easy as adding it to the dependencies value of your Package.swift.

dependencies: [
    .package(url: "https://github.com/ezefranca/WatchShaker.git", .upToNextMajor(from: "1.0.2"))
]

Manually

  1. Download and drop WatchShaker folder in your project to your watch target.
  2. Congratulations!

Usage example

Closure Style

import WatchKit
import Foundation
import WatchShaker

class InterfaceController: WKInterfaceController {
    
    var shaker:WatchShaker = WatchShaker(shakeSensibility: .shakeSensibilityNormal, delay: 0.2)
    
    override func awake(withContext context: Any?) {
        super.awake(withContext: context)
    }
    
    override func willActivate() {
        super.willActivate()
        
        shaker.start()
        
        shaker.startWatchShakerUpdates = { shakeSensibility, error in
            
            guard error == nil else
            {
                print(error?.localizedDescription)
                return
            }
            print("I'm shook! ⌚️⌚️⌚️")
        }
    }
    
    override func didDeactivate() {
        super.didDeactivate()
        shaker.stop()
    }

}

Delegate Style

import WatchKit
import Foundation


class InterfaceController: WKInterfaceController {

    override func awake(withContext context: Any?) {
        super.awake(withContext: context)
        // Configure interface objects here.
    }

    var shaker:WatchShaker = WatchShaker(shakeSensibility: .shakeSensibilityNormal, delay: 0.2)

    override func willActivate() {

        super.willActivate()
        shaker.delegate = self
        shaker.start()
    }

    override func didDeactivate() {

        super.didDeactivate()
        shaker.stop()

    }

}

extension InterfaceController: WatchShakerDelegate
{
    func watchShaker(_ watchShaker: WatchShaker, didShakeWith sensibility: ShakeSensibility) {
        print("I'm shook! ⌚️⌚️⌚️")
    }

    func watchShaker(_ watchShaker: WatchShaker, didFailWith error: Error) {
        print(error.localizedDescription)
    }
}

Optional Directions

If you interested you can get the direction of the shake on the didShakeWith method.

func watchShaker(_ watchShaker: WatchShaker, didShakeWith sensibility: ShakeSensibility, 
                     direction: ShakeDirection) {
    print("I'm shook! ⌚️⌚️⌚️ \(direction)")
}

ShakeDirection is a simple enum who gives you up, down, left or right direction. The image bellow is the way used to determine what is each direction.


This gentleman bellow for example, is clearly doing a shake with ShakeDirection.shakeDirectionRight 😂


Contribute

We would love for you to contribute to WatchShaker, check the LICENSE file for more info.

Meta

Ezequiel França – @ezefranca and all awesome Contributors

Distributed under the MIT license. See LICENSE for more information.

GitHub

link
Stars: 184
Last commit: Yesterday

Release Notes

1.0.2
Yesterday
  • Directions :)

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco