Skip to content

fatum/atom-ios

Repository files navigation

ironSource.atom SDK for IOS

License Docs Build status Coverage Status Pods

atom-ios is the official ironSource.atom SDK for the IOS platform.

Installation

Installation from CocoaPods.

Add dependency in your pod file

pod 'AtomSDK'

Usage

High Level SDK - "Tracker"

The Tracker is used for sending events to Atom based on several conditions

  • Every 10 seconds (default)
  • Number of accumulated events has reached 50 (default)
  • Size of accumulated events has reached 64KB (default)
    Case of server side failure (500) the tracker uses an exponential back off mechanism with jitter.
    To see the full code check the example section

Example of sending an event in Swift:

// initialize atom-sdk api object
var apiTracker_ = ISAtomTracker()
apiTracker_!.enableDebug(true)
apiTracker_!.setAuth("<YOUR_AUTH_KEY>")
apiTracker_!.setBulkSize(<BULK_COUNT>)
apiTracker_!.setBulkBytesSize(<MAX_BULK_SIZE_IN_BYTES>)
apiTracker_!.setEndPoint("https://track.atom-data.io/")

// track event
apiTracker_!.trackWithStream("<YOUR_STREAM_NAME>",
                                data: "{\"test\":\"test\"}")

// flush all data in tracker
apiTracker_!.flush()

Example of sending an event in Objective-C:

// initialize atom-sdk api object
ISAtomTracker* apiTracker_ = [[ISAtomTracker alloc] init];
[apiTracker_ enableDebug:true];
[apiTracker_ setBulkSize:<BULK_COUNT>];
[apiTracker_ setBulkBytesSize:<MAX_BULK_SIZE_IN_BYTES>];
[apiTracker_ setEndPoint:@"https://track.atom-data.io/"];

// track event
[apiTracker_ trackWithStream: @"<YOUR_STREAM_NAME>" data: @"{\"test\":\"test\"}"
                       token: @"<YOUR_AUTH_KEY>"];

// flush all data in tracker
[apiTracker_ flush];

Low Level (Basic) SDK

The Low Level SDK has 2 methods:

  • putEvent - Sends a single event to Atom
  • putEvents - Sends a bulk (batch) of events to Atom

Example of sending an event in Swift:

// initialize atom-sdk api object
    var api_ = ISAtom()
    
    // print debug info in console
    api_!.enableDebug(true)
    api_!.setAuth("<YOUR_AUTH_KEY>")
    
    // send POST request
    api_!.putEventWithStream("<YOUR_STREAM_NAME>",
        data: "{\"test\":\"test\"}",
        callback: {response in
            
            let errorStr = (response.error == "") ? "nil" : "\"\(response.error)\""
            let dataStr = (response.data == "") ? "nil" : "\"\(response.data)\""
            let statusStr = "\(response.status)"
    })
    
    // send Bulk request
    api_!.putEventsWithStream("<YOUR_STREAM_NAME>",
                              arrayData: ["{\"test\":\"test\"}", "{\"test\":\"test\"}"],
                              callback: { response in
                                
                                let errorStr = (response.error == "") ? "nil" : "\"\(response.error)\""
                                let dataStr = (response.data == "") ? "nil" : "\"\(response.data)\""
                                let statusStr = "\(response.status)"
                                
                                let responseStr = "{\n\t\"error\": \(errorStr), " +
                                    "\n\t\"data\": \(dataStr), " +
                                    "\n\t\"status\": \(statusStr)\n}"
    })
    
    // check health of server
    api_!.health()

Example of sending an event in Objective-C:

// initialize atom-sdk api object
ISAtom* api_ = [[ISAtom alloc] init];

// print debug info in console
[api_ enableDebug:true];
[api_ setAuth: @"<YOUR_AUTH_KEY>"];

// send POST request
ISRequestCallback callback = ^(ISResponse* response) {
    // reponse data from server
};

[api_ putEventWithStream: @"<YOUR_STREAM_NAME>"
                    data: @"{\"test\":\"test\"}"
                callback: callback];

// send Bulk request
NSArray* data = [NSArray arrayWithObjects:@"{\"test\":\"test\"}", @"{\"test\":\"test\"}", nil];
[api_ putEventsWithStream: @"<YOUR_STREAM_NAME>"
                arrayData: data
                 callback: callback];

// check health of server
[api_ health];         

Swift version

There is a legacy swift version of the sdk.
it is considered beta and it is not officially supported.

Change Log

v1.2.0 - Rewrite to Objective C

  • Full re-write to Objective C

v1.1.2

  • Adding Cococapods release
  • Changing CommonCrypto to Arcane
  • Bugfix - fixing the case when there are multiple streams that need to be flushed
    while there is a bad response from server (retry Qs).
  • Increased coverage

v1.0.0 - Base Swift version

  • Basic features: putEvent, putEvents and Tracker

Example

You can use our example for sending data to Atom:

alt text

License

MIT