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);

Configuring User Feedback Options

User Feedback Methods

Apphance allows you to add a feedback widget to your app, providing you with a tool to gather and track insights provided by your customers. Learn what your customers care about by giving them the opportunity to tell you what they think from within the app experience itself – and not in the app store. This feature is only available in the production version of Apphance.

Enabling feedback in your app is easy, and you have the choice of using Apphance’s built-in feedback window or creating your own.

feedback

The feedback method opens Apphance’s feedback window. You can call this from inside your own application code – mostly likely tied to a widget of some sort that allows the user to trigger a feedback report.

Apphance’s feedback window does not feature any Apphance branding and can display your own custom window title. The window will use your application’s default color palette, meaning that it will match the look and feel of the rest of your application.

Note: The user is required to type in at least 2 characters and no more than 1,000 characters in their feedback report.

Prototype

Apphance.feedback(Context currentContext, final String title="Feedback", String placeholder="Write your feedback here")

The parameters are:

  • currentContext – The current context where you are calling the feedback process. Usually the context is simply ‘this’.
  • title – The title for your feedback window. This parameter is optional – the default title is simply “Feedback”.
  • placeholder – Any placeholder text for the feedback box. This parameter is optional – the default placeholder is “Write your feedback here.”

Examples

Open a simple feedback window with the default title and placeholder strings.

Apphance.feedback(this);

Open a feedback window using a custom title and placeholder string.

Apphance.feedback(this, ”How Can We Help?”, ”Tell us about your problems here.”);

sendFeedback

If you do not want to use Apphance’s built-in feedback window, you can manually send feedback data to Apphance using the sendFeedback method. Using this method, you can custom design your own user feedback experience (complete with your own custom branding), and send the feedback content to Apphance directly.

Prototype

Apphance.sendFeedback(String content)

This method has one required parameter: the feedback content itself. This content may be as short or as long as necessary.

Example

Manually send a feedback report to Apphance.

Apphance.sendFeedback(”The new app version is great, but I am having trouble finding the account settings.”);

Managing Version Schemas

Android apps all should have unique version numbers. The Applause SDK uses the app’s version number for build distribution purposes to identify the latest version of an app. The Applause SDK expects apps from each platform to include a version number in a fashion that’s consistent with their platform’s specifications.

If the Applause SDK is having trouble interpreting your app’s version information, take a look at how you are recording the version information.

ANDROID

Android’s versioning guidelines are available online here.

Android uses two values in the manifest.xml file to specify an app’s version:

  • android:versionName (string)
  • android:versionCode (integer)