Mobile SDK Sizes

iOS SDK Framework

The pre-compiled iOS Framework is approx. 100 Mb

Why is it so big?

  • the pre-compiled framework has to support several iOS architectures (arm7, arm7s, arm64)

Once compiled into an .ipa the sdk is ~3MB

Android SDK Library

Once included in the apk the additional size <1 MB and adds ~5K methods.

 

More details here:

HelloWorld application w/o the Applause SDK

HelloWorld application with the Applause SDK

 

 

 

iOS SDK Migration Guidelines

Migration from 3.10.1 to 3.11.0

If you were using Logger.swift you need to revert back to Objective-C class APLLogger available in Swift projects. Please refer to docs to checkout example usages of APLLogger in Swift.

Migration from 3.10.0 to 3.10.1

No migration needed.

Migration from 3.9.0 to 3.10.0 (3.10.0-swift2.3)

In order to compile project you need to update to Xcode 8 – Applause framework is compiled using iOS SDK 10 (Xcode 8) using Swift 3.

If you plan to not migrate to Swift 3 and instead update to Swift 2.3 using Xcode 8, please use 3.10.0-swift2.3 of the Applause iOS SDK.

Migration from 3.8.0 to 3.9.0

No migration needed.

Migration from 3.7.0 to 3.8.0

No migration needed.

Migration from 3.6.0 to 3.7.0

No migration needed.

Migration from 3.5.1 to 3.6.0

Since we’ve dropped support for iOS 7, deployment target of the app using Applause SDK needs to be set to iOS 8 or higher.
We’ve added a Swift Logger class, so it is required to set Embedded Content Contains Swift Code to Yes in “Build Settings” tab in target settings.
Applause SDK is now an embedded framework, so it will link all necessary frameworks by itself. They can be removed from “Link Binary With Libraries” section of “Build Phases” tab in target settings.
It is recommended to use @import Applause; instead of #import <Applause/APLLogger.h> in Objective-C classes.
There is no need of adding -ObjC and -all_load linker flags, so they can be removed from “Other Linker Flags” in “Build Settings”.
screenShotsFromGallery flag was removed, so all occurences of it’s usage should be removed as well.

Migration from 3.5.0 to 3.5.1

No migration needed.

Migration from 3.4.1 to 3.5.0

No migration needed.

Migration from 3.4.0 to 3.4.1

No migration needed.

Migration from 3.3.0 to 3.4.0

No migration needed.

Migration from 3.2.5 to 3.3.0

Since we’ve dropped support for iOS 6, deployment target of the app using Applause SDK needs to be set to iOS 7 or higher.

Migration from 3.2.4 to 3.2.5

No migration needed.

Migration from 3.2.3 to 3.2.4

No migration needed.

Migration from 3.2.2 to 3.2.3

No migration needed.

Migration from 3.2.1 to 3.2.2

No migration needed.

Migration from 3.2.0 to 3.2.1

No migration needed.

Migration from 3.1.0 to 3.2.0

Since we’ve introduced Bitcode support for the library, to compile the app you need to update Xcode to version 7. Previous version – 3.1.0 – is the last one which supports Xcode 6.

Project Setup Migration

No migration needed.

Library Setup Migration

Integration with uTest is now disabled by default, so in case of using the default value for apps integrated with uTest platform, the value now needs to be set to YES.

Objective-C

[[APLLogger settings] setWithUTest:YES];

Swift

APLLogger.settings().withUTest = true

Migration from 3.0.1 to 3.1.0

No migration needed.

Migration from 3.0.0 to 3.0.1

For users which were affected by the bug APSDK-1944 (messages were not sent when server URL was not set), all sessions saved when running on 3.0.0 will be lost. Upgrading to 3.0.1 will send only new sessions and its messages.

Migration from 2.4.1 to 3.0.0

SDK version 3.0.0 introduced the Screen Recording and major overhaul of internals, which requires additional frameworks added to the project to work. Please also keep in mind that there’s no migration mechanism from sessions stored in 2.4.1 version of the SDK and 3.0.0. Once you’ve update to the newest version all previous data will be lost.

As of version 3.0.0 we’ve also changed deployment target of the library from iOS 5.0 to iOS 6.0.

Project Setup Migration

Cocoapods Integration

No migration needed, CocoaPods will manage all dependencies after updating SDK to the latest version.

Manual Integration

Open Xcode and in project navigator select project file of your application. From the list of targets, select your app target, and select Build Phases tab. Expand the Link Binary With Libraries tab, and press + button below Libraries list. A new window with Choose frameworks and libraries to add: title will pop up. From the list of frameworks, select and add:
* AVFoundation.framework
* CoreData.framework
* CoreMedia.framework
* CoreVideo.framework
* MediaPlayer.framework

No further project settings changes are required at this point.

Migration from 2.4.0 to 2.4.1

No migration needed.

Migration from 2.3.0 to 2.4.0

No migration needed.

Migration from 2.2.3 to 2.3.0

No migration needed.

Migration from 2.2.2 to 2.2.3

No migration needed.

Migration from 2.0.x or 2.1.x to 2.2.2

Starting from 2.2.0, Applause SDK comes in signle binary, as opposed to two binaries for Pre-Production and Production.

Project Setup Migration

Cocoapods Integration

Replace the following entry in your Podfile:

pod 'Applause-SDK-PreProd', '~> 2.1.2'

with the entry:

pod 'Applause-SDK', '~> 2.2.2'

Save the file and re-install pods:

$ pod install

Once it’s finished the new version of the Applause SDK is integrated with your project. Move to section called Code Migration in order to finish migration.

Manual Integration

Step 1: Remove previous version of the Applause SDK

Open Xcode and project navigator find the previous version of the Applause SDK, a file called Applause-Pre-Production.framework. Select the file and delete it (either by pressing Backspace or using context menu). You will be prompted with the following question:

Do you want to move the file “Applause-Pre-Production.framework” to the Trash, or only remove the reference to it?

Select: Move to Trash.

Do the same for the Applause-Production.framework if your app was using it.

This is recommanded way of removing the old Applause SDK, rather then just deleting the file from your project. This way Xcode takes care of removing all references to the SDK from the project settings.

Step 2: Add the new Applause SDK to the project

Do this by dragging and dropping the Applause.framework folder you downloaded onto the “Frameworks” folder in your Xcode Project Navigator. The Applause framework should now be visible in Xcode just like any other framework (like the UIKit.framework, for instance).

No further project settings changes are required at this point.

Code Migration

Header Imports

Search in your project (in Xcode press Cmd + Shift + F) for:

#import <Applause-Pre-Production/APLLogger.h>

and replace it with:

#import <Applause/APLLogger.h>

This should be the only Applause SDK header import in your code. If for some reason you’ve imported other public headers you should search for Applause-Pre-Production to double check your imports.

Modes

Prior to version 2.2.0 you had to include two frameworks for Pre-Production and Production modes of Applause SDK. Now you can control the mode of the Applause SDK from your code. You can use #ifdef statement and preprocessor macro to switch between modes.

#####Example in Objective-C

Given you’ve added a macro to your project called APP_STORE (under Preprocessor Macros) you could do the following:

#ifdef APP_STORE
[[APLLogger settings] setMode:APLModeMarket];
#else
[[APLLogger settings] setMode:APLModeQA];
#endif
[APLLogger startNewSessionWithApplicationKey:@"Your APP Key goes here"];

#####In Swift:

Swift code can be conditionally compiled with use of build configuration (read more at https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html). You can specify command line flags using -D <#flag#> in other swift flags in project settings. For example, when specified -D Debug for Debug build configuration, and respectively -D Release for Release configuration.

you could do the following:

#if Debug
APLLogger.settings().mode = APLMode.QA
#elseif Release
APLLogger.settings().mode = APLMode.Market
#endif
APLLogger.startNewSessionWithApplicationKey("Your APP Key goes here")

Using an Alternate Host Server

Customize server URL

This step is ONLY needed if you need to target a server other than the default server (which is: https://sdk.applause.com).

import com.applause.android.Applause;
import com.applause.android.config.Configuration;

public class MyApplication extends Application {

    String APP_KEY = "Your-Application-Key-Goes-Here";

    @Override
    public void onCreate() {
        super.onCreate();
        Configuration configuration = new Configuration.Builder(this)
              .withAPIKey("Your-Application-Key-Goes-Here")                
              .withServerURL("Your-Server-Url-Goes-Here")               
              .build();
        Applause.startNewSession(this, configuration);
    }
}

How to Manage App Settings

Manage App Settings

First, login to the SDK panel via:

To manage and edit the settings of your app, click the wrench in the upper right hand corner of the screen and choose “App Settings.”

If you are an Administrator, you can use the settings page to:

  • Change your application name
  • Regenerate your Application Key
  • Select the tester login authentication method
  • Delete your app

CHANGE YOUR APPLICATION NAME

You can change your application name by simply typing a new name in the Name field under Application Details.

REGENERATE YOUR APPLICATION KEY

The Application Key is the unique identifier your application uses when reporting data to Applause. You can regenerate the Application Key at any time. However, older builds using an older Application Key will no longer report Mobile SDK sessions.

To regenerate your Application Key check the Regenerate key box.

SELECT THE TESTER LOGIN AUTHENTICATION METHOD

There are two authentication methods for testers using the Mobile SDK. With Quick Authentication mode, your testers do not need to provide a password while creating new device sessions. Password authentication will require a password for each new device session.

You can select which method you prefer in the Login Method section.

SET LOGGING CRITERIA AND FILTERING CONDITIONS

You can select which types of logging you want to see from your app and whether you want reports from emulators. Select your log preferences in the Basic Settings section. Depending on the needs of your app, you can filter out what types of device conditions you want reported under the Condition Filtering section.

DELETE YOUR APP

If you want to delete your app, you can check the Delete Application box. Please bear in mind that the deletion process will take approximately 7 days during which testers cannot send logs to the application. This process cannot be undone.

Migrating from iOS Apphance Pre Production SDK 1.9.4 to Applause SDK 2.0.2

This tutorial is for migrating from Apphance Pre Production SDK 1.9.4 to Applause SDK 2.0.2. To make it work please follow these steps:

1) Recreate Product on sdk.applause.com or aph.applause.com

Users will need to re-create their products within the new SDK dashboard.

  1. Log into your Applause SDK account on http://sdk.applause.com (if using Applause Testing Services) or http://aph.applause.com (if NOT using Applause Testing Services).
  2. Click the ‘+Add New App’ button.
  3. Complete the new app creation wizard, and a new APP_KEY will be generated for you. You will use this new APP_KEY to replace your currently configured APP_KEY.

2) Remove Apphance Pre-Production References

  1. Remove Apphance-Pre-Production.framework from your project

3) Download, install and configure Applause SDK 2.x

  1. Download Applause SDK 2.1.2 and unzip it. You will see Applause.framework
  2. Drag & drop Applause.framework to your XCode project (the same way as you did with Apphance)
  3. Add CoreMotion.framework in “Project Navigation” -> “Build Phases” -> “Link Binary With Libraries” section
  4. If you have used “-force_load” or “-all_load” linker flags you can remove them. They are no longer needed.

4) Change Import Line

  1. Change import line (it should be in your *.pch file):
          #import <Apphance-Pre-Production/APHLogger.h>

to

          #import <Applause/APLLogger.h>

5) Change/Customize APHLogger Settings

  1. Wherever you used [APHLogger defaultSettings] change it to [APLLogger settings]
  2. Applause is now integrated with the Applause 360 App Quality Dashboard by default. If you don’t use Applause testing services, modify the default by calling:
    [[APLLogger settings] setWithUTest:NO]
  3. Deprecated settings have been removed from Applause, so if you have used reportOnDoubleSlideEnabled, apphanceMode please remove those lines.
  4. Change:
     [APHLogger startNewSessionWithApplicationKey:@"Your-Apphance-Application-Key-Goes-Here"];

to

     [APLLogger startNewSessionWithApplicationKey:@"Your-Applause-Application-Key-Goes-Here"];

6) Modify addtional settings if required

  1. If you have used APHUncaughtExceptionHandler change it to APLUncaughtExceptionHandler
  2. Rename all APHLog usage to APLLog
  3. Rename all APHExtendedLog usage to APLExtendedLog
  4. (Optional) Customize target server URL. The default server is https://sdk.applause.com. If you are using the SDK in conjunction with Applause testing services, you can skip this step. If you are NOT using the SDK in conjunction with Applause testing services, you will need to target https://aph.applause.com. Add the below:
[[APLLogger settings] setServerURL:@”https://aph.applause.com”];

SDK Error: “Application unavailable, please contact product managers”

If you are in the process of migrating from Apphance Pre Production 1.9.4 to 2.0.x, and are currently getting this error on launch, it’s likely you need to define an alternate server, instead of the default (https://sdk.applause.com), wherever you are also starting the SDK:

The most typical alternate server is https://aph.applause.com. This server should be used if you are NOT currently using the Applause SDK in conjunction with Applause testing services and the Applause 360 Dashboard.

For iOS: setServerURL

[[APLLogger settings] setServerURL:@”Your-Desired-Server-URL”];

For Android: .withServerURL

Configuration configuration = new Configuration.Builder(this)    
              .withAPIKey("Your-Application-Key-Goes-Here")                
              .withServerURL("Your-Desired-Server-URL")                
              .build();        

Applause.startNewSession(this, configuration);

Moving from Pre-Production Android SDK to Production Android SDK

If you have been using the Applause SDK in your pre-production environment and wish to continue using it in production to automatically capture crash and session data, a configuration change is needed before pushing the build to production.

The needed code change is made where the SDK sessions are started. The Pre-Production version is:

public class MyApplication extends Application {
    public static final String APP_KEY = "Your-Application-Key-Goes-Here";
 
	@Override
	public void onCreate() {
		super.onCreate();
		Applause.startNewSession(this, APP_KEY);
 
	}
}

That code block should be revised to the Production version:

public class MyApplication extends Application {
 
   final String APP_KEY = "Your-Application-Key-Goes-Here";
   @Override
   public void onCreate() {
       super.onCreate();
       Configuration configuration = new Configuration.Builder(this) 
           .withAPIKey("Your-Application-Key-Goes-Here") 
           .withMode(Applause.Mode.MARKET) 
           .build(); 
       Applause.startNewSession(this, configuration);
   }
}

SDK 2.2.x Runtime Error locating com.applause.android.ui.font.FontMontserrat

v2.2 of the Applause SDK for Android introduced a new UI font. Eclipse/ANT users who have downloaded the Android SDK v2.2 or later may see a runtime error if com.applause.android.ui.font.FontMontserrat can not be found. Fixing this is very easy.

When the SDK is interpreted by Eclipse, Eclipse will generate the below directory structure.

SDK-fonts

The assets folder MUST be placed into the Android application’s main directory. Unfortunately, there is a bug in Eclipse/ANT that prevents the assets folder from being copied to the .apk’s main directory automatically.

To resolve the error, simply manually place the ‘assets’ folder into your Android application’s main directory.

Applause SDK Production Installation Guide for Android

Android Installation (Production) DEPRECATED

Step 1 – Integrate the Mobile SDK

Please see: https://help.applause.com/hc/en-us/articles/204856785

Step 2 – Modify the Manifest File

Special Notes:

  • Gradle Users: No changes
  • Maven Users: You can merge the manifest if the <mergeManifests> flag is set to: true

Example:

<plugin>
      <groupID>com.jayway.maven.plugins.android.generation2</groupId>
      <artifactID>android-maven-plugin</artifactID>
      <version>3.8.2</version>
            <extensions>true</extensions>
      <configuration>
          <!-- add the following mergeManifests option -->
          <mergeManifests>true</mergeManifests>
      </configuration>
</plugin>

Add Required Permissions

Note: If you are using Maven or Gradle, you can skip this step.

The Applause SDK requires the INTERNET permission to connect with the Applause SDK server.

<uses-permission android:name="android.permission.INTERNET"/>

Optional Permissions

Note: We strongly recommend enabling the READ_PHONE_STATE permission. This is necessary to obtain the device ID (such as the IMEI) which the Applause SDK uses to identify each device uniquely on the server.

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

Note: We also strongly recommend adding the GET_TASKS permission. This is necessary for the Applause SDK to determine when your application has ended and needs to shutdown.

<uses-permission android:name="android.permission.GET_TASKS"/>

Optional Permissions

  • Connectivity Information

Will allow the SDK to collect detailed connectivity information including supported network interfaces, type of network (WiFi, 3G, etc.), WiFi Signal Strength, and more.

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  • Device Information

This will allow the SDK to collect basic information about the device, like DeviceID and IMEI.

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  • Geo-Location Information

These allow the Applause SDK to report location information based on both coarse references (the location of the nearest mobile network tower) and precise references (such as GPS).

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  • Bluetooth Information

This allows the Applause SDK to report information about the device’s Bluetooth interface, including its state (on/off) and pair/unpair events.

<uses-permission android:name="android.permission.BLUETOOTH"/>

See the Android security docs for more information about app permissions.

Manifest Example:

After applying the changes listed above, your AndroidManifest.xml should look a lot like the example below.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.helloworldandroid"
    android:versionCode="1"
    android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />
 
   <!-- Permissions required by the Applause SDK -->
   <uses-permission android:name="android.permission.INTERNET"/>
   <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
   <uses-permission android:name="android.permission.GET_TASKS" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
   <uses-permission android:name="android.permission.BLUETOOTH"/>
   <!-- ... rest of your application's permissions, if any -->
 
   <application
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
 
   <activity
     android:name=".MainActivity">
      <intent-filter>
         <action android:name="android.intent.action.MAIN"></action>
         <category android:name="android.intent.category.LAUNCHER"></category>
      </intent-filter>
   </activity>

</application>   
</manifest>

Step 3 – Start an Applause SDK Session

Each time your app launches, you should start a new Applause SDK session. The only action to take is to invoke the Applause.startNewSession() method in the onCreate event of your application instance

First, make sure you import the Applause SDK:

import android.app.Application;
import com.applause.android.Applause;
import com.applause.android.config.Configuration;
// Optionally import the Applause SDK logging functions
import com.applause.android.Log;

// This invokes the Applause SDK when the application launches

public class MyApplication extends Application {
 
   final String APP_KEY = "Your-Application-Key-Goes-Here";
 
   @Override
   public void onCreate() {
       super.onCreate();
       Configuration configuration = new Configuration.Builder(this) 
           .withAPIKey("Your-Application-Key-Goes-Here") 
           .withMode(Applause.Mode.MARKET) 
           .build(); 
       Applause.startNewSession(this, configuration);
   }
}

Step 4 – Add Your Application Key

In order to send data to the Applause SDK, you’ll need to have a valid Applause SDK application key. If you do not already have an Applause SDK account, create one now. Once your account is created, log into http://sdk.applause.com, create a new product, and an App Key will be automatically generated for you. Existing app key can be found by clicking on the Product Settings icon and choosing “App Settings”

appsettings

appkey

In the above code, replace the string Your-Applause-SDK-Application-Key-Goes-Here with your actual Applause SDK application key.

Step 5 – Send Your Log Calls to the Applause SDK

The Applause SDK allows you to manually log events to the Applause SDK server. This can be useful when you are debugging problems or crash reports because you can track custom defined activities from your application.

The Applause SDK comes with its own logging library com.applause.Log, which you can use in place of the standard Android logging library. This class mimics the standard android.util.Log and has the same interfaces including the Log.v, Log.d, Log.i, Log.w and Log.e methods. Also, the Applause SDK’s logging methods will still send your data to Logcat.

The easiest way to have all your logs go through the Applause SDK is to replace the import statement:

import android.util.Log;

with

import com.applause.Log;

Step 6 (optional) – Customize Server URL

This step is ONLY needed if you need to target a server other than the default server (which is: https://sdk.applause.com).

Example: Those developers who are NOT also using Applause testing services and so are not currently integrated with the Applause 360 Dashboard. These ‘stand-alone’ SDK users should target ‘https://aph.applause.com‘. In the below example, “Your-Server-Url-Goes-Here” would be replaced with “https://aph.applause.com”.

This code should be added to the same file within which you’re starting the SDK (as per Step 3)

import com.applause.android.config.Configuration;

Configuration configuration = new Configuration.Builder(this)    
              .withAPIKey("Your-Application-Key-Goes-Here")  
              .withMode(Applause.Mode.MARKET)              
              .withServerURL("Your-Server-Url-Goes-Here")                
              .build();        

Applause.startNewSession(this, configuration);