IMbeeCore

Installation

Add maven arguments to gradle.properties

m_contextUrl=...
m_user=...
m_password=...

Add maven repository to the application level build.gradle

allprojects {
    repositories {
        jcenter()
        maven {
            url "${m_contextUrl}/libs-release"
            credentials {
                username = "${m_user}"
                password = "${m_password}"
            }
        }
    }
}

Add the class path dependency to the project level build.gradle (Module:app)

dependencies {
    compile(group: 'com.imbee.core', name: 'imbeecorelib', version: '0.9.14', ext: 'aar') {
        transitive = true;
    }
}

Add the class path dependency to the project level build.gradle (Module:app)

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "io.realm:realm-gradle-plugin:3.7.2"
    }
}

Apply the realm-android plugin to the top of the application level build.gradle

apply plugin: 'realm-android'

Configuration

You need add internet permission to AndroidManifest:

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

In onCreate() on an application subclass, you must initialize:

@Override
public void onCreate() {
    super.onCreate();
    IMbeeCore.init(this);
}

In onCreated() on an activity subclass, you can prepare, delete an existing user, configure ...

@Override
public void onCreate() {
    super.onCreate();

    // Servers configuration
    final String WS_URL= "...";
    final String XMPP_URL= "...";
    final String apikey = "...";
    final String userIdsha = "...";
    final String uniqueIdsha = "...";
    final String hardwareId = "...";
    final String platform = "android";
    final String deviceName = "...";
    final String osVersion = "...";

    (new ExternalUserRegistration(apikey, uniqueIdsha, hardwareId, platform, deviceName, osVersion)).get(new Response.Listener() {
        @Override
        public void onResponse(Object response) {

            boolean previouslyRegistered = (boolean) response;
            startXmpp();

            (new ChatCreate(userIdsha)).get(new Response.Listener() {
                @Override
                public void onResponse(Object response) {

                    ChatCreateResponse chatCreateResponse = (ChatCreateResponse) response;
                    String CONVERSATION_ID = chatCreateResponse.conversationId;
                    boolean previouslyCreated = chatCreateResponse.previouslyCreated;

                    Intent intent = new Intent();
                    intent.setAction("chatListDone");
                    intent.putExtra("conversationId", CONVERSATION_ID);
                    IMbeeUI.getLocalBroadcastManager().sendBroadcast(intent);
                }
            }, null);
        }
    }, null);
}

public void startXmpp() {
    Realm realm = IMbeeCore.getRealm();

    Profile profile = IMbeeCore.getProfile(realm);
    IMbeeCore.xmppSetCredentials(profile);
    IMbeeCore.xmppStartService(this);

    realm.close();
}

New quick configuration

Now you can with the new function

UserAndChatCreation(Context context, String apikey, String uniqueIdsha,
                    String hardwareId, String platform, String deviceName,
                    String osVersion,
                    String ws_url, String xmpp_url,
                    String idsha_bot, boolean production)

create both your user and connect to a conversation in one step:

@Override
public void onCreate() {
    super.onCreate();

     // Servers configuration
    final String WS_URL= "...";
    final String XMPP_URL= "...";

    final String apikey = "...";

    final String userIdsha = "...";
    final String uniqueIdsha = "...";
    final String hardwareId = "...";
    final String platform = "android";
    final String deviceName = "...";
    final String osVersion = "...";

    (new UserAndChatCreation(this, APIKEY, u_uniqueIdsha, u_hardwareId, 
            u_platform, u_deviceName, u_osVersion, WS_URL, XMPP_URL,
            IDSHA_BOT, production))
           .get(new UserAndChatCreateResponse.OnUserAndChatCreateListener() {
        @Override
        public void onResponse(UserAndChatCreateResponse response) {
            //You can now start your Chat Activity.
        }
    }, null);
}

Examples

Polling unread messages by conversation:

Conversation c = ...;
c.messages.getCountPendingReadMessages();

Sending an invisible message:

Text textContent = new Text();
textContent.text = "invisible message bla bla...";

IMbeeCore.sendMessageWithFlags(CONVERSATION_ID, IMMPFormat.TYPE_MESSAGE, textContent

Last updated