1. 程式人生 > >Android Studio-個推-實現簡單聊天(一)

Android Studio-個推-實現簡單聊天(一)

官方文件

一、註冊賬號,建立個推應用

註冊好賬號之後,看開發文件步驟建立應用。建立好的應用列表如下
在這裡插入圖片描述
點選應用配置,會看到後續程式碼會用到的內容,注意[應用標識],它是填專案的包名。
在這裡插入圖片描述

二、專案開發
1.添加個推SDK及相關配置

在主專案build.gradle中新增url

 //個推
 maven { url 'http://mvn.gt.igexin.com/nexus/content/repositories/releases/' }

app目錄下的build.gradle中新增相關依賴-以及-配置

android{
//這裡就用到圖二的內容了
    manifestPlaceholders = [
                GETUI_APP_ID : "APPID",
                GETUI_APP_KEY : "APPKEY",
                GETUI_APP_SECRET : "APPSECRET"
        ]
	ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86_64","x86"
        }
}

dependencies {
implementation 'com.getui:sdk:2.12.5.0'
}

主目錄下的settings.gradle中新增配置

android.useDeprecatedNdk=true
2.程式碼開發測試

(1)PushService.class

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

import com.igexin.sdk.GTServiceManager;

public class PushService extends Service {
    @Override
    public void onCreate() {
        super.onCreate();
        GTServiceManager.getInstance().onCreate(this);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        super.onStartCommand(intent, flags, startId);
        return GTServiceManager.getInstance().onStartCommand(this, intent, flags, startId);
    }

    @Override
    public IBinder onBind(Intent intent) {
        return GTServiceManager.getInstance().onBind(intent);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        GTServiceManager.getInstance().onDestroy();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        GTServiceManager.getInstance().onLowMemory();
    }
}

(2)DemoIntentService,呼叫這個方法onReceiveClientId()得到cid,測試

import android.content.Context;
import android.util.Log;

import com.igexin.sdk.GTIntentService;
import com.igexin.sdk.message.GTCmdMessage;
import com.igexin.sdk.message.GTNotificationMessage;
import com.igexin.sdk.message.GTTransmitMessage;

/**
 * 繼承 GTIntentService 接收來自個推的訊息, 所有訊息線上程中回撥, 如果註冊了該服務, 則務必要在 AndroidManifest中宣告, 否則無法接受訊息
 * onReceiveMessageData 處理透傳訊息
 * onReceiveClientId 接收 cid 
 * onReceiveOnlineState cid 離線上線通知 
 * onReceiveCommandResult 各種事件處理回執 
 */
public class DemoIntentService extends GTIntentService {
    @Override
    public void onReceiveServicePid(Context context, int i) {

    }

    @Override
    public void onReceiveClientId(Context context, String clientid) {
        Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);
    }

    @Override
    public void onReceiveMessageData(Context context, GTTransmitMessage gtTransmitMessage) {
        Log.e(TAG, "onReceiveMessageData -> " + "message = " + new String(gtTransmitMessage.getPayload()));
    }

    @Override
    public void onReceiveOnlineState(Context context, boolean b) {

    }

    @Override
    public void onReceiveCommandResult(Context context, GTCmdMessage gtCmdMessage) {

    }


    @Override
    public void onNotificationMessageArrived(Context context, GTNotificationMessage gtNotificationMessage) {

    }

    @Override
    public void onNotificationMessageClicked(Context context, GTNotificationMessage gtNotificationMessage) {

    }
}

以上倆個類寫好,繫結這個服務【用全域性Application繫結】如果不知道,看一下這裡
在這裡插入圖片描述
(3)現在寫繫結推送服務的類

import com.igexin.sdk.PushManager;
import org.litepal.LitePalApplication;

public class App extends LitePalApplication{
    @Override
    public void onCreate() {
        super.onCreate();
        // com.getui.demo.DemoPushService 為第三方自定義推送服務
        PushManager.getInstance().initialize(this.getApplicationContext(), PushService.class);
        // com.getui.demo.DemoIntentService 為第三方自定義的推送服務事件接收類
        PushManager.getInstance().registerPushIntentService(this.getApplicationContext(), DemoIntentService.class);
    }
}

以上寫好之後,執行,看到Log有以下資訊,說明成功啦。
在這裡插入圖片描述

GOOD LUCK!!!