Find Jobs
Hire Freelancers

Build an iOS SDK that wraps an existing REST API

$500-800 USD

Cancelled
Posted about 13 years ago

$500-800 USD

Paid on delivery
This project is to build an iOS SDK that wraps the Kontagent REST API. For API details, please see [login to view URL] **NOTE: Bidders that include implemented OCUnit tests for the example header below will be given strong preference. The client itself doesn't have to be implemented (in other words, the tests can fail). The intent is to show how they will be structured and implemented. ** The SDK should have the following features - * API calls are handled in a background thread managed by the SDK to avoid impacting the performance of the main thread of the application. * When the network is reachable, API calls are queued to an in-memory queue (to be called Online Queue throughout the rest of this document). Can be as simple as the queue described here ([login to view URL]) and then pushed the REST API. * When network is unreachable, the API calls will be queued to an on-device SQLite database (to be called Offline Queue throughout the rest of this document). * Users of SDK should not see a difference when online vs. offline. * The first time the SDK is used for a given app on a given device, the application should generate a GUID. (See [login to view URL] for one way to do this.) Then whenever the REST API requires a userid (usually called 's'), pass the generated GUID. * Compiles to a single static library file (kontagent.a) with a header file (kontagent.h). The library must be a fat file that will work on device and in simulator. * Must rely only on iOS SDK frameworks. No 3rd party dependencies. * Must work be tested on iOS 3 or greater. * Simple way switch between Test and Live servers and API secret without recompiling static library. * Code must have full tests using OCUnit framework. * API calls should have a simple and advance form. Simple form takes required parameters, advanced form allows setting of optional parameters. When there are more than 1 optional parameters, then use an NSDictionary as the final argument. * Good coding standards including Don't Repeat Yourself applied to code. ## Deliverables API Header Examples (rest to be determined by the developer) @interface Kontagent : NSObject /* Lifecycle Events */ // Add to applicationDidFinishLoading // This is where the thread is started. Notice the use of class methods // The first time this is run, the GUID should be generated. // Check for network reachability. // If reachable, check to see if there are offline events queued and push them into the in memory queue. // If not reachable, setup SDK to log events offline. + (void) startSession: (NSString *)apiKey; //This alternative form allows a user to set the 'u' or 'su' params on the request. + (void) startSession:(NSString *)apiKey withParams:(NSDictionary *)params; // If OnlineQueue has items, push to OfflineQueue. // Intended to be used in either the applicationDidEnterBackground or applicationDidTerminate lifecycle events. + (void) pauseSession: (NSString *)apiKey; // If OfflineQueue has items and network is reachable, convert OfflineQueue to OnlineQueue. // Otherwise, keep pushing calls to OfflineQueue. // Intended to be used for the applicationDidEnterForeground lifecycle event. + (void) resumeSession: (NSString *)apiKey; /* REST wrapped methods */ // Basic Custom Action [evt] + (void) customAction:(NSString *)name; // Advanced Custom Action [evt] + (void) customAction:(NSString *)name withParams:(NSDictionary *)params; @end
Project ID: 3173363

About the project

Remote project
Active 13 yrs ago

Looking to make some money?

Benefits of bidding on Freelancer

Set your budget and timeframe
Get paid for your work
Outline your proposal
It's free to sign up and bid on jobs

About the client

Flag of UNITED STATES
United States
5.0
5
Payment method verified
Member since Mar 30, 2005

Client Verification

Thanks! We’ve emailed you a link to claim your free credit.
Something went wrong while sending your email. Please try again.
Registered Users Total Jobs Posted
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Loading preview
Permission granted for Geolocation.
Your login session has expired and you have been logged out. Please log in again.