TapTalk.io Documentation
  • Introduction
  • OneTalk Omnichannel Documentation
    • Getting Started with OneTalk
      • Team Members
      • Add Topic
      • Assign Agent to Topic
      • Paid Proactive Chat
    • Channel Integration
      • Telegram Integration
      • WhatsApp SME Integration
      • Instagram DM Integration
      • Facebook Messenger Integration
      • Live Chat Integration (iOS, Android, Web)
        • OneTalk Live Chat for Android
          • Get Started
          • Event Listener
          • Authentication
          • Case & Topic
          • Navigate Live Chat UI
          • Customize UI Appearance
        • OneTalk Live Chat for iOS
          • Get Started
          • Background Process in TapTalk.io Omnichannel iOS
          • Event Delegate
          • Authentication
          • Case & Topic
          • Navigate Live Chat UI
          • Customize UI Appearance
        • OneTalk Live Chat for Web
          • Get Started
          • Callback
          • Method
        • OneTalk Live Chat for React Native
          • Get Started - Android
          • Authentication - Android
          • Get Started - iOS
          • Authentication - iOS
        • OneTalk Live Chat for Flutter
          • Get Started - Android
          • Get Started - iOS
      • Google Business Messages Integration
      • Google Business Profile Integration
      • Tokopedia Integration
    • Integration API
      • Inbox API
      • User/Contact API
    • Live Chat Widget Callback Function
    • Social Channel Button
    • Custom Chatbot Integration
      • Get Started
      • Edit or Delete Chatbot
      • Development
    • QnA via API
    • Webhook
  • PowerTalk Chat SDK Documentation
    • Getting Started with PowerTalk
    • PowerTalk Android
      • Get Started
      • Enable Chat Features
      • Authentication
      • TapUI and TapCore
      • Background Process in TapTalk.io
      • Connection
      • Event Listener
      • Push Notification
      • General
      • User
      • Room List
        • Room List - TapUI
        • Room List - TapCore
      • Chat Room and Messages
        • Chat Room and Messages - TapUI
        • Chat Room and Messages - TapCore
      • Contact
      • Message Type
      • Customize UI Appearance
      • Customize Chat Features
      • Customize Chat Message Bubble
      • Customize Navigation Bar
      • Deep Linking
      • Error Codes
    • PowerTalk iOS
      • Get Started
      • TapUI and TapCore
      • Background Process in TapTalk.io
      • Implement Application Delegate
      • Authentication
      • Connection
      • Event Delegate
      • Push Notification
      • General
      • User
      • Room List
        • Room List - TapUI
        • Room List - TapCore
      • Chat Room and Messages
        • Chat Room and Messages - TapUI
        • Chat Room and Messages - TapCore
      • Contact
      • Message Type
      • Customize UI Appearance
      • Customize Chat Features
      • Customize Chat Message Bubble
      • Customize Navigation Bar
      • Deep Linking
      • Error Codes
    • PowerTalk React Native
      • Get Started - Android
      • Get Started - iOS
    • PowerTalk Flutter
      • Get Started - Android
      • Get Started - iOS
    • Javascript SDK
      • Get Started
      • Authentication
      • Connection
      • General
      • Event Listener
      • User
      • Room List
      • Chat Room
      • Messages
      • Contact
      • Message Type
    • Server API
      • Get Started
      • Base URL
      • Authentication
      • User
      • Contact
      • Message
      • Room
    • Webhook
      • Get Started
      • Webhook Payload
  • MeetTalk SDK Documentation
    • Getting Started with MeetTalk
    • MeetTalk Android
      • Get Started
      • Event Listener
    • MeetTalk iOS
      • Get Started
      • Implement Application Delegate
      • Event Delegate
  • SendTalk API Documentation
    • Introduction
    • Whatsapp Verification
Powered by GitBook
On this page
  • Quick Start
  • Configure and Initialize TapTalk.io Android SDK

Was this helpful?

  1. PowerTalk Chat SDK Documentation
  2. PowerTalk Flutter

Get Started - Android

This section will cover a step-by-step approach to bridge your Flutter project to PowerTalk Android SDK. We will be using Android Studio to configure native code in Flutter project.

PreviousPowerTalk FlutterNextGet Started - iOS

Last updated 28 days ago

Was this helpful?

Quick Start

TapTalk.io helps you to implement real-time chat with any type of your client app with speed and efficiency. Our Android SDK provides you with various methods to initialize, configure, and build the chat from the client-side - no server-side implementation is required because our reliable infra management service is delivered with the SDK. This page presents a brief overview of the SDK’s structure and abilities, then lets you go through the preliminary steps of implementing the SDK in your own app. We will be using Android Studio for the native side implementation.

Configure and Initialize TapTalk.io Android SDK

Step 1: Create a new application from your dashboard

1. Login to , then choose Development -> Apps

2. Click New App Button, input App Name and choose Platform, and then click Create New App Button.

3. A pop-up dialog will be shown with provided App Key ID & App Key Secret

Note: Please remember to save your App Key ID & your App Key Secret because it will only be shown once and will be used in TapTalk.io initialization

Step 2: Install TapTalk.io SDK

To start, open the android folder inside your Flutter project root folder as a project using Android Studio. Then add the following repositories to your top-level build.gradle file.

build.gradle (project)
allprojects {
   repositories {
      ...
      maven { url "https://jitpack.io" }
      maven { url "https://s3.amazonaws.com/repo.commonsware.com" }
      jcenter()
   }
}

Then add the following dependency to your app-level build.gradle:

build.gradle (:app)
dependencies {
    implementation 'com.github.taptalk-io:taptalk.io-android:2.17.0'
}

In the app build.gradle file, make sure that your project is using the supported Java version like below.

build.gradle (:app)
android {
    
    ...

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
}

After adding the required dependency, sync your project and begin the next step by writing custom platform-specific code using platform channels.

Step 3: Create Flutter Platform Client

In this example, we will add the following inside the MyHomePageState class:

  1. Method Channel to connect to the native Android host

  2. openPowerTalkUI() function to open the chat room list view

  3. A button to call the openPowerTalkUI() function

main.dart
class _MyHomePageState extends State<MyHomePage> {
  
  // Create the MethodChannel
  static const powerTalkMethodChannel = MethodChannel('io.taptalk.powertalk');
  
  // Function to open the chat room list UI
  Future<void> _openPowerTalkUI() async {
    try {
      // Initialize PowerTalk SDK
      final bool isPowerTalkInitialized = await powerTalkMethodChannel.invokeMethod('initPowerTalk');
      if (isPowerTalkInitialized) {
        // Authenticate PowerTalk SDK
        final bool isPowerTalkAuthenticated = await powerTalkMethodChannel.invokeMethod('authPowerTalk');
        if (isPowerTalkAuthenticated) {
          // Open chat room list
          await powerTalkMethodChannel.invokeMethod('openChatRoomList');
        }
      }
    }
    on PlatformException catch (e) {
      print(e.message);
    }
  }
  
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      ...
      body:
        ...
          // Sample button to call openPowerTalkUI
          ElevatedButton(
            onPressed: _openPowerTalkUI,
            child: Text(
              'Get Started with PowerTalk',
            ),
          ),
      ...
    );
  }
}

Please note the name parameter in the MethodChannel constructor that was used (io.taptalk.powertalk), and the method name in the invokeMethod() parameter (initPowerTalk, authPowerTalk & openChatRoomList). We will use the same names later to configure Flutter engine in the native side.

Step 4: Add an Android platform-specific implementation

Next, we will configure the native side of the Android host implementation. Go back to previously opened Android Studio project, and open MainActivity file. We will do the following to the Activity:

  1. Add a MethodChannel Result variable to handle asynchronous call

  2. override configureFlutterEngine to handle calls from the MethodChannel that we previously created.

  3. Add native functions to initialize & authenticate PowerTalk SDK and open the chat room list view

MainActivity.java
import io.taptalk.TapTalk.Helper.TapTalk;
import io.taptalk.TapTalk.Listener.TapCommonListener;
import io.taptalk.TapTalk.Listener.TapListener;
import io.taptalk.TapTalk.Manager.TapUI;

public class MainActivity extends FlutterActivity {

    // MethodChannel Result to handle asynchronous call
    private MethodChannel.Result powerTalkMethodChannelResult = null;

    // Override configureFlutterEngine
    @Override
    public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
        super.configureFlutterEngine(flutterEngine);
        
        // Handle MethodChannel calls
        new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), "io.taptalk.powertalk")
            .setMethodCallHandler((call, result) -> {
                // Save result to variable
                powerTalkMethodChannelResult = result;
                switch (call.method) {
                    // Call native methods
                    case "initPowerTalk":
                        initPowerTalk();
                        break;
                    case "authPowerTalk":
                        authPowerTalk();
                        break;
                    case "openChatRoomList":
                        openChatRoomList();
                        break;
                    default:    
                        result.notImplemented();
                }
            }
        );
    }
    
    // Method to initialize PowerTalk SDK
    private void initPowerTalk() {
        TapTalk.init(
            getApplicationContext(),
            POWERTALK_APP_KEY_ID,
            POWERTALK_APP_KEY_SECRET,
            R.drawable.your_app_icon,
            getString(R.string.your_app_name),
            POWERTALK_APP_BASE_URL,
            TapTalkImplementationType,
            new TapListener() {
                // You can override TapListener callbacks here
            }
        );
        if (powerTalkMethodChannelResult != null) {
            powerTalkMethodChannelResult.success(true);
        }
    }
    
    // Method to authenticate PowerTalk SDK
    private void authenticatePowerTalk() {
        TapTalk.authenticateWithAuthTicket(
            POWERTALK_AUTH_TICKET,
            true,
            new TapCommonListener() {
                @Override
                public void onSuccess(String successMessage) {
                    if (powerTalkMethodChannelResult != null) {
                        powerTalkMethodChannelResult.success(true);
                    }
                }

                @Override
                public void onError(String errorCode, String errorMessage) {
                    if (powerTalkMethodChannelResult != null) {
                        powerTalkMethodChannelResult.error(errorCode, errorMessage, null);
                    }
                }
            }
        )
    }

    // Method to open chat room list view
    private void openChatRoomList() {
        TapUI.getInstance().openRoomList(this);
        if (powerTalkMethodChannelResult != null) {
            powerTalkMethodChannelResult.success(true);
        }
    }
}
MainActivity.kt
import io.taptalk.TapTalk.Helper.TapTalk
import io.taptalk.TapTalk.Listener.TapCommonListener
import io.taptalk.TapTalk.Listener.TapListener
import io.taptalk.TapTalk.Manager.TapUI

class MainActivity: FlutterActivity() {

    // MethodChannel Result to handle asynchronous call
    private var powerTalkMethodChannelResult: MethodChannel.Result? = null

    // Override configureFlutterEngine
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)

        // Handle MethodChannel calls
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "io.taptalk.powertalk")
            .setMethodCallHandler {
                call, result ->
                powerTalkMethodChannelResult = result
                when (call.method) {
                    "initPowerTalk" -> initPowerTalk()
                    "authPowerTalk" -> authenticatePowerTalk()
                    "openChatRoomList" -> openChatRoomList()
                    else -> result.notImplemented()
                }
        }
    }
    
    // Method to initialize PowerTalk SDK
    private fun initPowerTalk() {
        TapTalk.init(
            applicationContext,
            POWERTALK_APP_KEY_ID,
            POWERTALK_APP_KEY_SECRET,
            R.drawable.your_app_icon,
            getString(R.string.your_app_name),
            POWERTALK_APP_BASE_URL,
            TapTalkImplementationType,
            object : TapListener() {
                // You can override TapListener callbacks here
            }
        )
        powerTalkMethodChannelResult?.success(true)
    }
    
    // Method to authenticate PowerTalk SDK
    private fun authenticatePowerTalk() {
        TapTalk.authenticateWithAuthTicket(
            POWERTALK_AUTH_TICKET,
            true,
            object : TapCommonListener() {
                override fun onSuccess(successMessage: String) {
                    powerTalkMethodChannelResult?.success(true)
                }

                override fun onError(errorCode: String, errorMessage: String) {
                    powerTalkMethodChannelResult?.error(errorCode, errorMessage, null)
                }
            }
        )
    }

    // Method to open chat room list view
    private fun openChatRoomList() {
        TapUI.getInstance().openRoomList(this)
        powerTalkMethodChannelResult?.success(true)
    }
}

Step 5: Enable Chat Features

You can now try running the app. Pressing the sample button will invoke the openPowerTalkUI() method that we previously created, which will initialize & authenticate PowerTalk SDK, and open the chat room list view once the initialization is completed. You may also try a different implementation and separate the init, authenticate, and the open view methods. You can also add more calls to other native methods with the same approach using the same MethodChannel.

You can check a more updated version release notes of the SDK .

If you have finished this step from the , you can skip to the .

You can obtain POWERTALK_AUTH_TICKET by following the guide in .

Please follow the steps in page to enable TapTalk.io's chat features, such as contact sync and sending media, document, and location messages.

Note: You can check a more complete implementation guide in the section.

here
Authentication page
Enable Chat Features
PowerTalk Android
TapTalk.io Dashboard
next step
iOS side