Search code examples
iosweb-servicessecurityanalyticsadobe-analytics

iOS: Logging to Omniture via a proxy service


I'm designing an iOS app for a client with tight security requirements. I need to log analytics using Omniture. The app deals with extremely sensitive data and for security I cannot make calls from the app directly to the Omniture sitecatalyst url. Instead I have to set up a service on a back-end web/app server which will then make the call to Omniture (this way the call gets routed through a secure gateway just like other web services called from the iOS app)

I see two options for doing this.

  1. I set up the Omniture framework in my app and make the calls (except I configure the calls to go to https://myserverurl.com/analyticsservice instead of https://sc.omniture.com) I then setup a servlet or jsp at https://myserverurl.com/analyticsservice to handle the request. The servlet (written with Omniture SDK) will then pass the call to https://sc.omniture.com.

  2. I do not setup any Omniture framework on my app. Instead I set up a simple analytics web service on my server. The Webservice (written with Onniture SDK) will take the parameters I pass from the iOS app and make the tracking call to https://sc.omniture.com.

See figures 1 and 2 illustrating each option. Option 2 appears to be cleaner, while Option 1 could take a bit of playing-with jerry-rigging to get Omniture to work. Having a tight timeline I would appreciate any opinions and advice as to which option to take (pros, cons, other considerations etc) before I dive into a Proof of concept.

Thanks!

Option 1

Option 2


Solution

  • After running a POC on both approaches - I found Approach 2 to be the correct approach. Approach 1 in fact does not work - the reason being that the Omniture client side API is the first thing that activates on app start-up and local Omniture database within the App. The app (coded with customized security api) after authenticating the user, deletes the default app container and replaces it with its own container. So the next time Omniture tries to log anything it tries to write to the database pointer it held on to (when it created the local database) not knowing that the app had replaces that database when it recreated the app-container. This causes the app to crash.

    So the answer turns out to be approach 2.