如何在App中實現IM功能之二快速實現離線訊息模組——箭扣科技Arrownock

來源:互聯網
上載者:User

標籤:小技巧   離線   如何   記錄   前台   

如何在App中實現IM功能之二快速實現離線訊息模組

 

一個App在實際使用聊天功能的時候,並非是一直呆在一個介面的,在等待好友發訊息來的同時,有可能已經跳轉到其他介面,也有可能切換到其他App。

在當前的App進入後台、好友發來訊息時,需要給裝置推送一條訊息。以安卓為例,收取離線訊息通知需要綁定anPush,具體做法是調用anIM.bindAnPushService(anID, AppKey, anPushType)。

在App進入後台時,調用anIM.disconnect();在App回到前台時,調用anIM.connect()。 但是,如果在每一個Activity中都寫這句話來實現收取離線功能,就太複雜了。

下面介紹一個統一系統管理使用者離線訊息的接收的小技巧:

步驟一

建立BaseActivity,其後所有的Activity都繼承BaseActivity。

 

步驟二

在BaseActivity建立一個全域變數isActive為true,用來記錄當前介面是否進入後台。

 

步驟三

當App進入後台時,在onStop生命週期的方法中寫:


    @Override    protected void onStop() {        super.onStop();        // APP進入後台        if (!isAppOnForeground()) {            try {                anIM.disconnect();            } catch (ArrownockException e) {                e.printStackTrace();            }            // 全域變數isActive = false 記錄當前已經進入後台            isActive = false;        }    }



步驟四


當App重新回到前台,在onResume方法中寫:

    @Override    protected void onResume() {        super.onResume();        // APP從後台喚醒,進入前台        if (!isActive) {            try {                anIM.connect(clientId);            } catch (ArrownockException e) {                e.printStackTrace();            }            isActive = true;        }    }


步驟五

判斷程式是否在前台啟動並執行方法:

//在進程中去尋找當前APP的資訊,判斷是否在前台運行    private boolean isAppOnForeground() {        ActivityManager activityManager =(ActivityManager) getApplicationContext()            .getSystemService(Context.ACTIVITY_SERVICE);        String packageName =getApplicationContext().getPackageName();        List<RunningAppProcessInfo>appProcesses = activityManager.getRunningAppProcesses();        if (appProcesses == null) {            return false;        }        for (RunningAppProcessInfo appProcess : appProcesses) {            if (appProcess.processName.equals(packageName)                    && appProcess.importance == RunningAppProcessInfo                        .IMPORTANCE_FOREGROUND) {                return true;            }        }        return false;    }


如何在App中實現IM功能系列文章:


之一離線訊息常見淺析

之二快速實現離線訊息模組

之三快速實現離線訊息推送模組

之四建立穩健的訊息發送模組

之五快速實現圖片接收和發送

之六快速實現群聊的進階功能

之七快速實現聊天列表排序模組


本文出自 “箭扣科技Arrownock” 部落格,轉載請與作者聯絡!

如何在App中實現IM功能之二快速實現離線訊息模組——箭扣科技Arrownock

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.