Initialize Appoxee SDK to your Android Application Code

Introduction

This document explains how to add the Appoxee code to your application code (step 3 of the Appoxee Android SDK integration process).

Using Google Play Services

Appoxee SDK uses Google Play Services, which is supported on devices using the Google Play store, and are running Android 2.3 and above.

For more info / troubleshooting see Google Play Services documentation: https://developers.google.com/android/guides/setup

 

The code sections below use the following typographic conventions:

  • Regular text - existing code: You should already have this code in your project by default. No changes are required.
  • Bold text - new code: Make sure you add this Appoxee code to your app code.
  • Green text - comments: A comment describes the code that follows it and notes special issues you should pay attention to. Please read the comments carefully.
  • Blue text - AndroidManifest.xml updatesThe changes you should make in the app's AndroidManifest.xml file.

Integration Instructions

If you are using Eclipse and ProGuard, enter the following lines into the file "proguard-project.txt"

ProGuard in Eclipse
-dontwarn
# OrmLite uses reflection
-keep class com.j256.**
-keepclassmembers class com.j256.** { *; }
-keep enum com.j256.**
-keepclassmembers enum com.j256.** { *; }
-keep interface com.j256.**
-keepclassmembers interface com.j256.** { *; }
-keepattributes Signature
-keepattributes *Annotation*
-keepclassmembers class * { public <init>(android.content.Context); }

 

Source code integration

On your main activity class  add the following code to Activity life-cycle callback methods:

@Override
protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
		 ...
		 new initAsync(getApplicationContext(),"APP_KEY",
                     "SECRET_KEY", true, "com.package.MainActivity").execute();
		AppoxeeManager.setDebug(true);	//set 'false' to get less debug logs 	
		...
}
 
@Override  
protected void onStart() {
	super.onStart();
	Appoxee.onStart();
	...
}

@Override
protected void onStop() {
	Appoxee.onStop();	
	super.onStop();
	...
}

 

You may want to add observer to Appoxee callbacks.

To do so, you'll have to implement the AppoxeeObserver interface and implement callbacks.

Example:

public class AppoxeeExampleActivity extends Activity implements AppoxeeObserver{
	
	...
 
	@Override
	public void onRegistrationCompleted() {
		//from this point on, Appoxee API is avaliable
	}

	@Override
	public void onMessagesUpdateCompleted() {
		//callback for getting inbox messages
	}

	@Override
	public void onRegistrationFailure() {
		//Huston, we have a problem... 
	}

	@Override
	public void onGeoRegistrationFailure() {
		//This is for future support ;)
	}
 
	...

}

 

 

All Appoxee API calls will fail until Appoxee has finished initialization. When Integrating Appoxee and choosing not to use an Observer (and sometimes when do), you may consider checking if

Appoxee.isReady() == true 

before doing such operations.


To fully use Appoxee’s Analytics , all of your activities should implement onStart() & onStop in the actvities code :

@Override  
protected void onStart() {
	super.onStart();
	Appoxee.onStart();
	...
}

@Override
protected void onStop() {
	Appoxee.onStop();	
	super.onStop();
	...
}

 

Advanced Options (Inbox / DeepLink (URLScheme) ) :

  1. If prompted with an error, add this "Import" command to enable Appoxee SDK usage:

    import com.appoxee.Appoxee; 
  2. Inbox integration - after enabling the Inbox in your Appoxee account (by going to the app's Application Information page and checking Allow Inbox + Rich messages), add the Inbox to your code as follows: 

     

    The Inbox feature guarantees your ability to engage the user with rich messages (note that the Inbox cannot be disabled by users, as opposed to Push Notifications) and gives you the option to access features such as Feedback and More Apps . The Inbox must be used in your application's code in order to show it and utilize its features. The InboxMessage activity needs to be added in order to support Push Notifications by Appoxee. Check your Manifest.xml and see that it is added below the Receiver declaration.

     

    1. Add code that opens the Inbox - the Inbox can be opened from any activity. In the example code below, the Inbox is opened from the main activity layout, using the "openInbox():" function:

      public void openInbox(View view) { 
       Intent intent = new Intent(this, Inbox.class);
       intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
       this.startActivity(intent);
      } 
    2. Add a button that opens the Inbox - it is recommended to add a button to open the Inbox. This button is added in the activity layout as follows:

      <Button 
      android:id="@+id/open_inbox" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:onClick="openInbox"
      android:text="Open Appoxee Inbox" /> 
    3. Show the number of unread messages - to show the user the number of unread messages, fetch this number using the following command:

      Appoxee.getUnreadMessages(); 

       

       

  3. Deep Link / URL Scheme in Appoxee & Android

    1. Add to your AndroidManifest.xml

      <activity android:name="com.appoxee.example.DeepLinkActivity" >
         <!-- Add the Intent Filter for activity needed to be URLScheme compatible -->
         <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.BROWSABLE" />
                 <data android:scheme="example"
      				 android:host="pushnotification" />
          </intent-filter>
      </activity>

       

       

    2. Create DeepLinkActivity.java

      DeepLink Activity Sample
      //This sample extends AppoxeeBaseActivity, for onStart() & onStop() integration and analytics
      public class DeepLinkActivity extends AppoxeeBaseActivity {
      
       @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Intent intent = getIntent();
            if (intent == null || intent.getData() == null) {
                    finish();
            }
      
            openDeepLink(intent.getData());
      
            // Finish this activity
            finish();
         }
         
         public void openDeepLink(Uri deepLink) {
          String path = deepLink.getPath();
          Utils.Debug("Base path: " + path);
          //Implement your Code here
          path = path.replace("/", "");
      
      
          Intent intent = new Intent();
          intent.setClassName(this, path);
          this.startActivity(intent);      
         } .....
      
      
      

You are now done integrating the Appoxee SDK! Congrats!

1. If you wish to use the SDK Sync API's - press here

2. If you wish to use the SDK Async API's - press here 

3. If you wish to use the Custom Push Notification Builder - press here

As mentioned earlier, our Test Application contains a full code sample. it can be downloaded from here.