Install iOS Sdk

This page will give detailed description of how you can integrate Growlytics iOS SDK to your native iOS app.

1. Install the SDK

The easiest way to use Growlytics in your iOS project is with CocoaPods.

Before beginning this process please ensure that you are using Ruby version 2.0.0 or greater. Knowledge of Ruby syntax isn’t necessary to install this SDK.

Step 1: Download CocoaPods

CocoaPods is a dependency manager for Swift and Objective-C projects. Install CocoaPods by running the following command.

Shell
Shell
$ sudo gem install cocoapods

If you face issues with CocoaPods, please refer to the CocoaPods Troubleshooting Guide.

Step 2: Add a Podfile

In the terminal, navigate to your Xcode project directory. Create a Podfile by running the following command.

Shell
Shell
$ pod init

Step 3: Edit your Podfile

Add the following in your Podfile under your project's target.

For Xcode 10 and above:

Ruby
Ruby
# Avoid use_frameworks! declaration in your Podfile. Contact us at [email protected] if you face any issue.
target 'YourAppTarget' do
platform :ios, '8.0'
pod 'Growlytics'
end

For Xcode 9:

Ruby
Ruby
target 'YourAppTarget' do
platform :ios, '8.0'
pod 'Growlytics/Xcode9'
end

Step 4: Install Growlytics SDK

To install the Growlytics SDK, navigate to your Xcode project directory and run the following command.

Shell
Shell
$ pod install

Step 5: Use the project workspace file created by CocoaPods (YOUR-PROJECT-NAME.xcworkspace) from now on instead of your project file (YOUR-PROJECT-NAME.xcodeproj) to ensure that the Growlytics SDK is properly loaded.

Step 6: Under Target -> General -> Linked Frameworks and Libraries, add AdSupport.framework with Status as Required.

2. Initialize the SDK

Call Growlytics application:didFinishLaunchingWithOptions: from the application:didFinishLaunchingWithOptions: of your AppDelegate. We recommended that you make this call at the end of didFinishLaunchingWithOptions:.

You can use alternate APIs for initialization in case you want to handle the APNs registration for push notifications manually, with an alternate SDK, or to set a delegate for in-app notification callbacks.

Swift
Objective-C
Swift
import Growlytics
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
/**
YOUR CODE GOES HERE
**/
Growlytics.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}
Objective-C
#import <Growlytics/Growlytics.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/**
YOUR CODE GOES HERE
**/
[[Growlytics sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
return YES;
}

More Information on `WEGEnvironment`

In your contract with Growlytics, if you have not specifically requested for your data to be stored in our India Data Center, then your data will be stored in our Global Data Center.

  • If your Growlytics dashboard URL starts with dashboard.growlytics.com, then it means you're using our Global Data Center.

  • If your Growlytics dashboard URL starts with dashboard.in.growlytics.com, then it means you're using our India Data Center.

4. Support for Swift

Important

Please follow this step if you are using Swift for writing your application. If you have already done this for another framework, the please skip it.

A demo Swift based app showcasing the integration of Growlytics SDK is available on GitHub.

This is the general method for integrating Objective-C frameworks in a Swift project:

Step 1: Navigate to File > New and select File.... Select Objective-C File under iOS Source and click Next.

Step 2: Name the file without any extension. Click Next. (Name this file such that you can use it generically for all frameworks, and not specific to Growlytics.)

Step 3: Select the Group as your main project and target as your main app target. Click Create.

Step 4: You will now be prompted to create a Bridging Header. Bridging Header is a file that makes Objective-C frameworks available to Swift and vice-versa. Click on Create Bridging Header to proceed.

Step 5: Above step will create two files in your main project’s Supporting Files folder with the following name formats: a. <YOUR_FILE_NAME>.m b. <YOUR_PROJECT_NAME>-Bridging-Header.h

  • Delete the file, <YOUR_FILE_NAME>.m.

Step 6: Add the following imports to <YOUR_PROJECT_NAME>-Bridging-Header.h file. You only need to specify this in Objective-C even if you are using Swift for your project.

Objective-C
Objective-C
// <YOUR_PROJECT_NAME>-Bridging-Header.h
#import <Growlytics/Growlytics.h>
#import <Growlytics/GrowUser.h>
#import <Growlytics/GrowAnalytics.h>
Objective-C
Objective-C
// ServiceExtension-Bridging-Header.h (Optional)
// Required if ServiceExtension Target is in Swift
#import <UserNotifications/UserNotifications.h>
#import <Growlytics/WEXPushNotificationService.h>
Objective-C
Objective-C
// ContentExtension-Bridging-Header.h (Optional)
// Required if ContentExtension Target is in Swift
#import <GrowlyticsAppEx/WEXRichPushNotificationViewController.h>

If you are using WebViews in your iOS app, check out Growlytics JavaScript bridge. For other advanced integration options such as location tracking, please refer the Advanced section.

Session Lifecycle

Growlytics SDK automatically starts tracking user data (e.g., device model, OS version, device IDs) and engagement with the basic setup above. This data is stored on the device and is periodically uploaded in batches to reduce network and power usage, and to increase the likelihood of successful uploads. The upload cycle is based on the number of datapoints in local database and last synced time. This local database size is capped and is deleted as soon as it is successfully uploaded.

Growlytics SDK also starts tracking user sessions with this basic setup. Upon app backgrounding, the SDK marks the current time. If the user returns to the app after more than 15 seconds since the user had last backgrounded the app, the SDK will close the previous session. If the user foregrounds the app within 15 seconds of the previous backgrounding, the previous session is resumed as if the user did not leave the app at all. Also, if the user force kills the app and launches it again after being force killed (irrespective of the time duration between force kill and launch), the SDK will close the previous session upon force-kill and start a new session upon app launch.

Congratulations!

You have successfully integrated the Growlytics SDK with your iOS app and are sending user session and system events data to your Growlytics account. Please note that it may take a up to few minutes for your data to reflect on your dashboard.

Please feel free to drop in a few lines at connect.growlytics.in case you have any further queries. We're always just an email away