yvan / malamute

Share photos between phones with no internet

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

malamute 🐕

Malamute is a little file manager that allows your share files with nearby friends. It doesn't require a network wifi or internet connection.

Currently the best implementation we have lets you pick some photos and share them with a best bud or best gal.

Note of warning: All UI elements were made with autolayout to work on any device. Please do not change any layout configurations without first testing on all device simulators.

Code Structure

ViewController

The ViewController class controls the display of the app. The most important parts of this class are our buttons and the UICollectionView that displays the icons for each file's representation. The other important asp

Networking

We used the Multipeer Connectivity (MC) Framework to beam files from User to User. After having used the MC framework on a previous hackathon project (wave) we knew that it would be problematic to throw all the MC delegate methods and session objects into the main ViewController class. So we created wrappers for the Session, Browser, and Advertiser. I have put the the Multipeer Wrapper as a separate boilerplate called passably-connected on github. This modularity is cleaner from a reader's perspective, it's maintainable, andallows us to re-use the same wrappers on different projects. The ViewController is a delegateof each wrapper and the wrappers send information in one direction to the ViewControllerwhich then effects the appropriate changes in the FileSystem and View.

FileSystem

Deal with the app sandbox was the hardest part of this project. There are not visual representations of the filesystem while developing. The filesystem is located in the FileSystem class; it contains arrays which havemany "File" (a class we made) objects. The filesystem is an created as an object in the ViewController class and manipulated there. The class itself contains many methods for manipulating the app sandbox filesystem. Their names are pretty obvious and each method has comments describing what it does. Crucial the filesystem saves on app crashing or entering the background, this is a precaution measure, if we don't do this we risk losing user data. This happens in AppDelegate.

Todo

  1. Find a way to automatically enable the user's wifi card and bluetooth, it's a pain to have to check to make sure they are on every time we run the app. I mean once they are turned on there's no reason for them to be off again for a long time, it's still lame to have to check.

  2. Add a user queue so that new users joining previously active sessions can send a signal to users already in the session to send them their stuff.

  3. Connect to Dropbox, box, other file services via the sync API that's really when this app becomes useful.

  4. Find a way to hook up this app to the itunes library?

About

Share photos between phones with no internet


Languages

Language:Objective-C 100.0%