This requirement is for writing an SDK for iOS using Swift for our application.
The scope covers the following tasks:
1. Writing the SDK, and pushing the code to our private github repository in incremental basis.
2. Documenting steps on how to use the SDKs, with screenshots.
3. Writing Technical Documentation so that we can follow the future development in-house.
I'll cover each of the task to as much detail as possible, however, few minor requirements may afloat later (but before signoff), please bid accordingly.
1. Writing the SDK:
First thing first, we need an SDK which integrates in a very similar fashion as that of OneSignals' SDK ([url removed, login to view])
The user should be able to call methods from our SDK in both Swift/Objective-C.
The main features of this SDK is that, once people integrate it in their iOS app, they can leverage Our push notifications system, and can send events to our servers.
• User should be able to integrate our SDK via CocoaPods, Carthage and manually.
• Our software should be able to push notifications via APNS to the app which has integrated our SDK, with Notification Callbacks and Sounds. (similar to OneSignal).
• There should not be any external dependency.
• While integration, App developer will pass a unique ID (probably applications’ installation ID, to initialize the SDK), probably in AppDelegate, this ID will be used to call all future events to our Software.
• SDK should also have few methods that the app developer can call to send data to our server.
1.1.1 Methods required in the SDK
App developer should be able to call [url removed, login to view] (“email”, user at [url removed, login to view]) – where first parameter is kind of identification (string) and second parameter identifier (also string)
App developer should be able to call [url removed, login to view] (eventName, eventValue) – where first parameter is the name of the event as string, say VIEW, and second parameter is the event data, as serializable object, but usually string.
App developer should be able to call [url removed, login to view] (object) – where first parameter is a serializable object.
Each of these 3 APIs will call a REST method of our server, say, [url removed, login to view]<id>/<identify/track/index> and POSTing a JSON for the same. Where id is the unique ID of this application installation as described in step 1.1(4). You should ideally keep all the dynamic parameters in a single config file.
You must also ensure that these calls should retry if the application is closed in between and needs to be asynchronous, that means these calls should be done in background and calling these functions should not block the user from doing anything else.
1.2 Documenting the Usage Guide
We need a document very similar to OneSignals’ documentation as a PDF or HTML in grammatically correct English. This guide will be used by App developers who are trying to integrate our SDKs. They should be clear, to-the point, and step-by-step and should cover every aspect, including installation, integration, calling our methods and integrating push notifications. These should be with proper screenshots.
1.3 Writing Technical Documentation
We also need technical documentation of the project, including, but not limited to inline method signatures and code comments, guide to set up the project, building and release and sphinx like API docs.