Android Studio-個推-實現簡單聊天(一)
阿新 • • 發佈:2019-02-10
官方文件
一、註冊賬號,建立個推應用
註冊好賬號之後,看開發文件步驟建立應用。建立好的應用列表如下
點選應用配置,會看到後續程式碼會用到的內容,注意[應用標識],它是填專案的包名。
二、專案開發
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有以下資訊,說明成功啦。