1 - Intro
2 - Application Home
3 - Initial Blank Screen
4 - Alarm Edit Screen
5 - Shake Alarm Screen
6 - Run Alarm Screen
7 - Settings Screen
Inspiration & What it does
If you've ever hit the snooze button again and again and again only to realize hours later that you should have been up long ago, then you've felt the pain that we have felt. Driven by the need for an alarm that genuinely got us up, we set out to create wake.
The app itself is simple. Instead of tapping or sliding a button to disable it, the user must get out of bed and walk a certain distance away to disable the alarm or vigorously shake the alarm for twenty-seconds. These physical triggers engage the user in a way that alarms have not done in the past. Leveraging the GPS and Accelerometer features of modern smartphones we created wake. Additionally, typical snooze features enable users to form bad habits by continuously snoozing an alarm. Instead, wake provides a unique form of negative reinforcement. Users can choose to enable or disable the snooze feature, but there's a catch. The snooze feature must be linked to the user's bank account, and every snooze donates a pre-set amount of money to an entity of the user's choice, such as a charity or political campaign.
How we built it
The application was built in Objective-C for iOS devices. We leveraged iOS’s NotificationCenter, AudioToolbox, AVFoundation, CoreLocation, and CoreMotion frameworks to implement all the features for this application. We integrated Plaid’s API for payment processing.
Challenges we ran into
Due to some of iOS’s restrictions, setting the alarm to trigger at a certain time and forcing the user to only use the app was technically impossible. So we could only display a notification for the user to open the app in order to disable the alarm. Additionally, the UILocalNotifications that we used for the event triggers were uncooperative and sometimes would not fire — so we also built a standard timer to alleviate this issue. Unfortunately, due to the lack of an Objective-C wrapper/library for Plaid, we were unable to complete integrating their payment processing system.
Accomplishments that we're proud of
We were proud of the UI animations, flow, and functionality of the app. We wanted to make the app not only be functional but also to look/feel great. (Watch the video demo! (Some interactions shortened for brevity.))
What we learned
We learned that making a alarm application was not as simple as we thought and that working with AutoLayout (through code) could be very painful at times.
What's next for wake
We will attempt to finish integrating the Plaid payment processing system and releasing wake to the app store.