Setup a server that can act as an intermediate between an iOS app and Facebook(accessed via API).
A bit about the iOS app.
The application is envisioned to allow users to mine data on their facebook friends from their iOS device. It does this by passing a series of requests to Facebook and analyzing what Facebook returns. The server acts as an intermediate between the local application and facebook, taking the data mine parameters set out by the iOS app, sending the necessary requests to facebook, performing analysis on the results and finally sending back the results to the iOS device.
Application User Flow (UF)
1. User opens application
2. User logs into facebook (or returns to a previously opened session)
3. User searches for a facebook friend. From now on this friend will be referred to as the ‘subject’.
4. User then selects what data to gather from the subject’s timeline
5. User specifies time range for which to gather data and initiates mine.
6. Push notification sent to user’s device, notifying them that their results are ready for viewing.
7. User revisits app and is presented with the results.
8. User opts whether or not to return to step (3)
9. User exits application.
Put more simply, the user decides which facebook friend they would like to analyze. Chooses a type of data (Likes, comments, posts or interactions(a weighted sum of the three)), and runs the data mine. Sometime later (this will have to be established during testing) they will receive a notification on their device letting them know that they their results are ready. These results will show who the most frequent likers, commenters etc are for the facebook friend they chose.
(Server specific) Communication with iOS App:
In order for the data to be displayed on an iOS app, the server must have an API for the iPhone to communicate with, supporting two requests -
a) starting a new data request
b) retrieving results of a data request
When a new data request is received, the server should use the provided parameters (eg OAuth hash, ID of subject of data mine etc) to start retrieving the relevant information, using the Facebook Graph API.
Since the data mining may take a while, we don't want to keep the iOS app hanging whilst waiting for the request to return (potential problems due to app closing, battery out, bad/lost connection etc.). Instead the server should start running the data mine, and respond to the iOS app request with a confirmation that the data mine has begun (and probably a data mine ID, see below), or reporting any errors with the request parameters.
When the data mine has finished, the server should send a push notification informing the app that the results are ready.
When a results retrieval request is received, the server should then return the relevant results, using the parameters of the request (eg a data mine ID) to return the corresponding results.
Data does not need to be stored once it has been retrieved, so data can be cleared a short specified time frame (eg 12 hours) after a retrieval request has been made for them.
More technical information available on request.