In school, Kahoot and Quizlet Live are well known multiplayer games used to study. However, they are awfully inconvenient and are often buggy. We wanted to be able to easily and instantaneously start a quizzing game with a friend to compete and help each other study. We were surprised that Quizlet hadn't made an app or extension like this themselves, so we went ahead and made one.

What it does

Within iMessage, players may search for any public Quizlet study sets and send one as either an untimed or timed game. The two players then go back and forth in a point competition until all terms are gone through. Answers are written at first, but if you are unsure, there is an "I don't know" button that will automatically generate four multiple choice answers. Two points are rewarded for answering written and one point is rewarded for answering with multiple choice.

How I built it

We use the Quizlet API to gather data for public Quizlet study sets. We use Xcode 9 and Swift 4 as well as Apple's Messages Framework to make an iMessage game. Parameters are passed/sent with every iMessage to allow data to go back and forth.

Challenges I ran into

iMessage extensions have many more restrictions than iOS apps. For example, Apple's Messages Framework doesn't provide functionality for simultaneous interaction. There are considerably less documentation and information on iMessage apps compared to regular iOS apps, so we had to experiment a lot to get things working.

Accomplishments that I'm proud of

This app is something that my friends and I will all benefit from and can use practically to study.

What I learned

How to communicate through HTTP requests and passing parameters in iMessages. Even if something seems simple to make, there are always little mistakes and bugs that mess it up and set you back.

What's next for Flashcards with Friends

Adding features such as shuffling terms, reversing term and definition, and making it simultaneous through the use of a web socket and self-made backend.

Built With

Share this project: