คู่มือการรวมฟังก์ชัน MA สำหรับ Android

เคล็ดลับการใช้งาน

เพื่อใช้ฟังก์ชัน MA ของ EngageLab SDK คุณจำเป็นต้องรวมโมดูล AppPush พร้อมกัน โปรดสร้างแอปพลิเคชันบนแพลตฟอร์ม AppPush ก่อนเพื่อรับ AppKey

1. การนำเข้าแพ็คเกจใน libs

  • วิธีการแบบ Manual
นำเข้า mt-sdk-x.x.x-engagelab.aar ภายใต้แพ็คเกจ libs ไปยังไดเรกทอรี libs นำเข้า mt-sdk-ma-x.x.x.aar ภายใต้แพ็คเกจ libs ไปยังไดเรกทอรี libs
              
                  นำเข้า mt-sdk-x.x.x-engagelab.aar ภายใต้แพ็คเกจ libs ไปยังไดเรกทอรี libs
    นำเข้า mt-sdk-ma-x.x.x.aar ภายใต้แพ็คเกจ libs ไปยังไดเรกทอรี libs

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
  • วิธีการแบบอัตโนมัติ
dependencies { // จำเป็น, แพ็คเกจหลัก implementation 'com.engagelab:engagelab:5.0.0' // ใช้เวอร์ชัน 5.0.0 เป็นตัวอย่าง // ตัวเลือก, ฟังก์ชัน ma implementation 'com.engagelab.plugin:oth_ma:5.0.0' // ใช้เวอร์ชัน 5.0.0 เป็นตัวอย่าง }
              
              dependencies {
  // จำเป็น, แพ็คเกจหลัก
  implementation 'com.engagelab:engagelab:5.0.0' // ใช้เวอร์ชัน 5.0.0 เป็นตัวอย่าง
  // ตัวเลือก, ฟังก์ชัน ma
  implementation 'com.engagelab.plugin:oth_ma:5.0.0' // ใช้เวอร์ชัน 5.0.0 เป็นตัวอย่าง
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

2. การตั้งค่า build.gradle

plugins { id 'com.android.application' } android { ... defaultConfig { // app packageName, ต้องเหมือนกับที่อยู่บนคอนโซล applicationId "com.engagelab.app" ... manifestPlaceholders = [ // appKey, ต้องเหมือนกับที่อยู่บนคอนโซลและมีความสัมพันธ์แบบหนึ่งต่อหนึ่งกับ packageName ENGAGELAB_PRIVATES_APPKEY : "Your appkey", // Engagelab appChannel, ใช้สำหรับสถิติช่องทาง ENGAGELAB_PRIVATES_CHANNEL: "developer", // Engagelab process, กระบวนการที่ Engagelabsdk ทำงาน หมายเหตุ: จุดเริ่มต้น ENGAGELAB_PRIVATES_PROCESS: ":remote" ] } } dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') }
              
              plugins {
    id 'com.android.application'
}

android {
    ...

    defaultConfig {
        // app packageName, ต้องเหมือนกับที่อยู่บนคอนโซล
        applicationId "com.engagelab.app"
        ...
                
        manifestPlaceholders = [
                // appKey, ต้องเหมือนกับที่อยู่บนคอนโซลและมีความสัมพันธ์แบบหนึ่งต่อหนึ่งกับ packageName
                ENGAGELAB_PRIVATES_APPKEY : "Your appkey",
                // Engagelab appChannel, ใช้สำหรับสถิติช่องทาง
                ENGAGELAB_PRIVATES_CHANNEL: "developer",
                // Engagelab process, กระบวนการที่ Engagelabsdk ทำงาน หมายเหตุ: จุดเริ่มต้น
                ENGAGELAB_PRIVATES_PROCESS: ":remote"
        ]
    }
}

dependencies {
    implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

3. การสร้างคอมโพเนนต์ที่จำเป็น

package com.engagelab.app.component; import com.engagelab.privates.common.component.MTCommonService; /** * นักพัฒนาสืบทอดจาก MTCommonService ซึ่งสามารถรักษาการเชื่อมต่อแบบยาวให้อยู่ได้นานขึ้น * <p> * การใช้งานแบบว่างเปล่าก็เพียงพอแล้ว */ public class UserService extends MTCommonService { }
              
              package com.engagelab.app.component;

import com.engagelab.privates.common.component.MTCommonService;

/**
 * นักพัฒนาสืบทอดจาก MTCommonService ซึ่งสามารถรักษาการเชื่อมต่อแบบยาวให้อยู่ได้นานขึ้น
 * <p>
 * การใช้งานแบบว่างเปล่าก็เพียงพอแล้ว
 */
public class UserService extends MTCommonService {


}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
package com.engagelab.app.component; import android.content.Context; import android.widget.Toast; import java.util.Arrays; import com.engagelab.app.common.ExampleGlobal; import com.engagelab.app.listener.StatusObserver; import com.engagelab.app.log.ExampleLogger; import com.engagelab.privates.common.component.MTCommonReceiver; import com.engagelab.privates.core.api.MTCorePrivatesApi; import com.engagelab.privates.core.api.WakeMessage; import com.engagelab.privates.push.api.CustomMessage; import com.engagelab.privates.push.api.MobileNumberMessage; import com.engagelab.privates.push.api.NotificationMessage; import com.engagelab.privates.push.api.PlatformTokenMessage; /** * นักพัฒนาสืบทอดจาก MTCommonReceiver และสามารถรับการเรียกกลับของวิธีการของ SDK * <p> * การเรียกกลับทั้งหมดอยู่ในเธรดหลัก */ public class UserReceiver extends MTCommonReceiver { private static final String TAG = "UserReceiver"; /** * การเรียกกลับสถานะการเชื่อมต่อแบบยาว * * @param context ไม่เป็น null * @param enable เชื่อมต่อหรือไม่ */ @Override public void onConnectStatus(Context context, boolean enable) { ExampleLogger.i(TAG, "onConnectState:" + enable); if (enable) { // ตราบใดที่การเชื่อมต่อแบบยาวสำเร็จครั้งหนึ่ง สามารถเรียกได้ทุกที่ในภายหลัง MTMAApi.getInstance(this).start(new CallBack() { @Override public void onCallBack(int code, String msg) { Log.e(TAG, "start code:" + code); Log.e(TAG, "startmsg:" + msg); } }); } } }
              
              package com.engagelab.app.component;

import android.content.Context;
import android.widget.Toast;

import java.util.Arrays;

import com.engagelab.app.common.ExampleGlobal;
import com.engagelab.app.listener.StatusObserver;
import com.engagelab.app.log.ExampleLogger;
import com.engagelab.privates.common.component.MTCommonReceiver;
import com.engagelab.privates.core.api.MTCorePrivatesApi;
import com.engagelab.privates.core.api.WakeMessage;
import com.engagelab.privates.push.api.CustomMessage;
import com.engagelab.privates.push.api.MobileNumberMessage;
import com.engagelab.privates.push.api.NotificationMessage;
import com.engagelab.privates.push.api.PlatformTokenMessage;

/**
 * นักพัฒนาสืบทอดจาก MTCommonReceiver และสามารถรับการเรียกกลับของวิธีการของ SDK
 * <p>
 * การเรียกกลับทั้งหมดอยู่ในเธรดหลัก
 */
public class UserReceiver extends MTCommonReceiver {

    private static final String TAG = "UserReceiver";

    /**
     * การเรียกกลับสถานะการเชื่อมต่อแบบยาว
     *
     * @param context ไม่เป็น null
     * @param enable  เชื่อมต่อหรือไม่
     */
    @Override
    public void onConnectStatus(Context context, boolean enable) {
        ExampleLogger.i(TAG, "onConnectState:" + enable);

        if (enable) { // ตราบใดที่การเชื่อมต่อแบบยาวสำเร็จครั้งหนึ่ง สามารถเรียกได้ทุกที่ในภายหลัง
            MTMAApi.getInstance(this).start(new CallBack() {
                    @Override
                    public void onCallBack(int code, String msg) {
                        Log.e(TAG, "start code:" + code);
                        Log.e(TAG, "startmsg:" + msg);

                    }
                });
        }


    }

}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

4. การตั้งค่า AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.engagelab.app"> <!-- จำเป็น, สิทธิ์เครือข่าย --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- ตัวเลือก, การสั่นแจ้งเตือน --> <uses-permission android:name="android.permission.VIBRATE" /> <application android:name="com.engagelab.app.MainApplication" android:allowBackup="false" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.MT" android:usesCleartextTraffic="true" tools:targetApi="m"> <!-- หากใช้คำขอ http ต้องอนุญาตให้ใช้ http --> ..................................................................................................... <!-- เนื่องจากคลาสนี้มีฟังก์ชันการเชื่อมต่อแบบยาว บริการที่มีคำว่า Engagelab ในชื่อแพ็คเกจอาจถูกฆ่าโดยตรงระหว่างการประหยัดพลังงานโดยผู้ผลิตโทรศัพท์ --> <!-- ดังนั้นนักพัฒนาจำเป็นต้องสืบทอดจาก com.engagelab.app.component.MTCommonService เพื่อเพิ่มอัตราการอยู่รอดของการเชื่อมต่อแบบยาว เพื่อให้บรรลุวัตถุประสงค์ในการเพิ่มอัตราการมาถึงของข้อความ --> <service android:name="com.engagelab.app.component.UserService" android:exported="false" android:process="${ENGAGELAB_PRIVATES_PROCESS}"> <intent-filter> <action android:name="com.engagelab.privates.intent.USER_SERVICE" /> </intent-filter> </service> <!-- ใช้เพื่อรับการเรียกกลับของบริการ Engagelab รวมถึงสถานะการเชื่อมต่อแบบยาว/สถานะสวิตช์การแจ้งเตือน/การมาถึงของข้อความการแจ้งเตือน/การคลิกข้อความการแจ้งเตือน/การลบข้อความการแจ้งเตือน/ข้อความที่กำหนดเอง/การเรียกกลับโทเค็นของผู้ขาย --> <!-- ไม่จำเป็นต้องกำหนดค่ากระบวนการย่อย การเรียกกลับนี้อยู่ในกระบวนการหลัก ซึ่งสะดวกสำหรับการดำเนินการทางธุรกิจ --> <receiver android:name="com.engagelab.app.component.UserReceiver" android:exported="false"> <intent-filter> <action android:name="com.engagelab.privates.intent.USER_RECEIVER" /> </intent-filter> </receiver> </application> </manifest>
              
              <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.engagelab.app">
        
    <!-- จำเป็น, สิทธิ์เครือข่าย -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- ตัวเลือก, การสั่นแจ้งเตือน -->
    <uses-permission android:name="android.permission.VIBRATE" /> 
        
    <application
        android:name="com.engagelab.app.MainApplication"
        android:allowBackup="false"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.MT"
        android:usesCleartextTraffic="true"
        tools:targetApi="m"> <!-- หากใช้คำขอ http ต้องอนุญาตให้ใช้ http -->

                .....................................................................................................
                
        <!-- เนื่องจากคลาสนี้มีฟังก์ชันการเชื่อมต่อแบบยาว บริการที่มีคำว่า Engagelab ในชื่อแพ็คเกจอาจถูกฆ่าโดยตรงระหว่างการประหยัดพลังงานโดยผู้ผลิตโทรศัพท์ -->
        <!-- ดังนั้นนักพัฒนาจำเป็นต้องสืบทอดจาก com.engagelab.app.component.MTCommonService เพื่อเพิ่มอัตราการอยู่รอดของการเชื่อมต่อแบบยาว เพื่อให้บรรลุวัตถุประสงค์ในการเพิ่มอัตราการมาถึงของข้อความ -->
        <service
            android:name="com.engagelab.app.component.UserService"
            android:exported="false"
            android:process="${ENGAGELAB_PRIVATES_PROCESS}">
            <intent-filter>
                <action android:name="com.engagelab.privates.intent.USER_SERVICE" />
            </intent-filter>
        </service>

        <!-- ใช้เพื่อรับการเรียกกลับของบริการ Engagelab รวมถึงสถานะการเชื่อมต่อแบบยาว/สถานะสวิตช์การแจ้งเตือน/การมาถึงของข้อความการแจ้งเตือน/การคลิกข้อความการแจ้งเตือน/การลบข้อความการแจ้งเตือน/ข้อความที่กำหนดเอง/การเรียกกลับโทเค็นของผู้ขาย -->
        <!-- ไม่จำเป็นต้องกำหนดค่ากระบวนการย่อย การเรียกกลับนี้อยู่ในกระบวนการหลัก ซึ่งสะดวกสำหรับการดำเนินการทางธุรกิจ -->
        <receiver
            android:name="com.engagelab.app.component.UserReceiver"
            android:exported="false">
            <intent-filter>
                <action android:name="com.engagelab.privates.intent.USER_RECEIVER" />
            </intent-filter>
        </receiver>

    </application>

</manifest>

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

5. การเริ่มต้น

package com.engagelab.app; import android.app.Application; import com.engagelab.privates.core.api.Address; import com.engagelab.privates.core.api.MTCorePrivatesApi; import com.engagelab.privates.push.api.MTPushPrivatesApi; public class MainApplication extends Application { private static final String TAG = "MainApplication"; @Override public void onCreate() { super.onCreate(); // ต้องกำหนดค่าใน application.onCreate อย่าตัดสินกระบวนการ SDK มีการตัดสินของตัวเองภายใน MTCorePrivatesApi.configDebugMode(this, true); // เริ่มต้น push สำหรับการแจ้งเตือน // MTPushPrivatesApi.init(this); } }
              
              package com.engagelab.app;

import android.app.Application;

import com.engagelab.privates.core.api.Address;
import com.engagelab.privates.core.api.MTCorePrivatesApi;
import com.engagelab.privates.push.api.MTPushPrivatesApi;

public class MainApplication extends Application {

    private static final String TAG = "MainApplication";

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

        // ต้องกำหนดค่าใน application.onCreate อย่าตัดสินกระบวนการ SDK มีการตัดสินของตัวเองภายใน
        MTCorePrivatesApi.configDebugMode(this, true);

        // เริ่มต้น push สำหรับการแจ้งเตือน
        // MTPushPrivatesApi.init(this);

    }

}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
icon
ติดต่อฝ่ายขาย