日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android项目-IPTV经验总结

發布時間:2023/12/31 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android项目-IPTV经验总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文鏈接: https://blog.csdn.net/feather_wch/article/details/81251771

個人項目總結的內容,對你們沒有任何幫助。千萬不要看。

IPTV總結

版本: 20180917-2(1700)


  • IPTV總結
    • iptv
    • 登陸
      • 擴展知識點
        • 負載均衡
        • Token和Session
        • 轉發和重定向
        • AES和Base64
      • 項目中實戰
        • 短信驗證碼登陸
    • 網絡請求
    • 播放
    • 升級策略
    • 產品包訂購
      • 我的訂購
    • 首頁海報
      • 專題
    • 預約(直播、影視、連續劇)
    • 消息推送
    • DLNA
      • 投屏
      • 回甩
    • 性能優化
      • 布局優化
        • 層級優化
      • 代碼優化
      • 內存優化
      • 功耗優化
      • 網絡優化
      • 內存泄露優化
    • 版本兼容適配
    • 影視頁面
    • 即將上線、直播看什么
    • 播放器相關
    • 下載
    • 換膚
    • 數據緩存
    • 參考資料

iptv

1、IPTV是什么?

IPTV即交互式網絡電視

2、EPG服務器是什么?

IPTV的一個子系統,用于向用戶提供節目等各方面服務。

登陸

1、登陸流程

graph TD;A(登陸頁面_60號業務_密碼驗證);B(獲取EncryToken_61號業務_Getencrytoken.jsp_EPP負載均衡);C(獲取UserToken_63號業務_Moblieusertoken.jsp);A-->B;B-->C;

2、60/61號業務講解

  • 將用戶賬號/密碼發送到服務器,驗證是否有效。
  • 走61號業務獲取EncryToken,此時會進行EPG的負載均衡。
  • EncryToken是用于后續的加密認證。
  • 3、62/63號業務

  • 帶上驗證加密串去獲取用戶令牌
  • 驗證加密串:對EncryToken、時間戳、隨機字符串等按照一定組合生成了一個字符串,然后通過AES加密算法進行加密,對加密后的結果用Base64算法轉換為字符串。
  • 其他會返回EPG服務器新地址、特定請求的實際地址(搜索服務器等)、JSESSIONID。
  • 擴展知識點

    負載均衡

    4、負載均衡是什么?

  • 負載均衡是一種網絡技術
  • 將多個服務器以等價地位的方式組成一個服務器集合,將服務器的負載分攤到所有服務器上面。
  • 5、EPG負載均衡

  • 是指用戶登錄EPG1,EPG1會將用戶信息交給一個總控的Manager,Manager通過判斷進行負載均衡,然后將合適的服務器如EPG3的地址交給EPG1,EPG1將地址重定向到EPG3.
  • Token和Session

    6、EncryToken是什么?

  • 加密令牌 :業務管理平臺為用戶分配的臨時身份證明,只用于認證加密。
  • 在62/63號業務,利用該Token去獲取UserToken
  • 7、UserToken

  • 用戶令牌:用于表明用戶的身份。
  • 項目中多用于訂購產品包等需要驗證用戶身份的情況。
  • 8、Token和Session

  • Session的狀態是存儲在服務器端,客戶端只有session id;
  • 而Token的狀態是存儲在客戶端
  • 9、Token和Session的區別

  • Session基于Cookie實現,應用重啟后丟失。
  • Token是為了防止Cookie被清除。
  • 廣義來說一切維護用戶狀態的技術都是session,
  • 一切動態生成的服務端有能力鑒別真假而本身無涵義的字符串都是token
  • 10、sessionID

  • Session用于解決Http協議中不能維持狀態的問題,只存儲于服務器,不進行網絡傳輸,相對于Cookie更安全些
  • 第一次訪問服務器會在服務器端生成一個session,有一個sessionid和它對應。
  • tomcat生成的sessionid叫做jsessionid。
  • 轉發和重定向

    11、轉發和重定向的區別

  • 轉發是服務器行為,重定向是客戶端行為
  • 請求次數:
  • 轉發:客戶端只進行了一次請求
  • 重定向:客戶端進行了兩次請求
  • 內部機制不同:
  • 轉發: 服務端必須是在同一個web容器下的url,不能再轉向到其他的web路徑上。中間傳遞的是自己的容器內的request。
  • 重定向: 新的location可以重定向到任何URL上,實質是客戶端發起了兩次請求,也就沒有request傳遞的概念。
  • 12、轉發的流程和原理

  • 客戶端發送http請求
  • web服務器接受此請求
  • 服務端在內部完成請求處理和轉發動作
  • 將目標資源發送給客戶端。
  • 對于客戶端來說依然是第一次訪問的路徑,也就是客戶端感覺不到服務端進行了轉發。
  • 轉發行為就是客戶端只進行了一次訪問請求。
  • 13、重定向的流程

  • 客戶端發送http請求
  • 服務端接受請求后發送302狀態碼響應及對應新的location給客戶端
  • 客戶端發現302狀態碼后會在發起一個新的http請求,請求的url是新的location地址
  • 新的location可以重定向到任何URL上
  • 客戶端可以觀察到地址的變換。
  • AES和Base64

    14、AES(高級加密標準)

    是對稱密鑰加密中最流行的算法之一。

    15、Base64的作用?

    Base64編碼的作用:由于某些系統中只能使用ASCII字符。Base64就是用來將非ASCII字符的數據轉換成ASCII字符的一種方法。

    項目中實戰

    16、LoginFragment登陸頁面

  • 會先初始化Preference(存儲用戶名、是否記住賬號)、初始化等待登陸的Dialog
  • 初始化LoginImp。
  • 點擊“登陸”按鈕后,會檢查網絡,然后通過LoginImpl.requestLogin()發起登陸請求
  • 請求完成后,會通過EventBus調用到自身的onEventMainThread()方法
  • 登錄失敗會彈出提示
  • 登陸成功后: 會有登陸成功提示框,確認后退出登陸頁面。
  • 17、LoginImp封裝登陸流程

  • requestLogin(): 通過SDKLoginMgr.startLogin()發起登陸請求。游客賬號和密碼是配置在配置頁面中。
  • SDK發起登陸請求后,會回調:onLoginReturn()接口,判斷返回碼
  • 登陸成功: 會去設置用戶語言、用戶媒體服務類型,并且保存用戶名、密碼、EPG的地址、SessiondId和FrameID(模板ID),模板涉及到服務端的jsp接口。
  • 登錄失敗: 將結果打包好后,發送EventBus到登陸頁面。
  • 此外登陸成功后,還會開啟后臺的服務,包括推送服務、本地直播提醒和影視預約的服務、以及定時更新用戶Token的服務。 然后發送成功的EventBus到登陸頁面。
  • 并且有一個回調onHeartbeatReturn()接口進行心跳保活
  • 18、SDKLoginMgr

  • 封裝登陸業務的SDK
  • 封裝了60/61號業務,將用戶賬號/密碼發送到服務器進行驗證,然后走61號業務獲取EncryToken,并且會進行EPG的負載均衡。
  • 封裝了62/63號業務,利用EncryToken加密令牌,去獲取UserToken(用戶令牌),此外該業務會返回EPG服務器新地址、特定請求的實際地址(搜索服務器等)、JSESSIONID。
  • 短信驗證碼登陸

    19、短信驗證碼登陸的實現

  • 利用短信接口發送驗證碼到用戶手機
  • 走短信登陸接口去進行用戶的登陸。
  • 短信登陸接口分為兩個情況:
  • 一種是直接內部會走服務端的60/61-62/63業務,獲取到用戶Token、Epg地址、特殊服務器地址、SessionbID等關鍵數據
  • 另一種業務系統較老,從短信登陸接口獲取到該手機號對應的密碼,然后額外使用登陸SDK封裝的功能去進行登錄。
  • 網絡請求

    1、項目網絡請求的方法?

  • 對OKHttp進行封裝。
  • 采用線程池-CachedThreadPool
  • 接收到返回數據后切換到UI線程,回調給上層。
    • Cookies用于存放JSESSIONID
  • 2、OkHttp3提供了Cookie的自動管理

  • 客戶端請求登陸后,服務端會返回帶有唯一登陸認證信息Session的Response(存放在Cookie中),如何實現在下次請求時自動放入呢?
  • OkHttp3提供了自動管理
  • 也可以手動添加。
  • 播放

    播放器初始化
    1. 查詢VOD/Channel/片花/時移/TVOD 播放等的URL ;
    1. 播放器初始化
    1. 播放器open
    1. 播放器start
    1. 播放器pause
    1. 播放器resume
    1. 播放器stop
    1. 播放器seek跳轉到具體位置

  • continuePlay
  • playerStart()
  • openPlayerToPlay
  • 是否需要支持加密播放的URL
  • 進行重定向
  • IBasePlayer.open url =

  • AbstractPlayer.class openInternal

  • 升級策略

    產品包訂購

    我的訂購

    首頁海報

    專題

    預約(直播、影視、連續劇)

    1、直播預約

  • 用戶預約該節目單,等到達節目單時間,前5分鐘的時候,服務端就會推送消息到客戶端
  • 客戶端彈窗提示。選擇進入“消息中心”或者“直接播放”
  • 直接播放就是會進入TV詳情頁面,因為暫時節目單還沒到,因此會播放當前正在播放的內容。等到了時間,就會繼續播放。
  • 1、直播進行預約

  • 調用預約接口,將直播的節目單的節目code,內容code, 還有電信code。媒體類型等十幾個數據。
  • 預約成功:return 0
  • 預約失敗:return 其他code和erro msg
  • 消息推送

    1、后臺Service利用Socket和服務端進行長連接。

    2、持續和服務端發送心跳包

    3、Socket斷線重連

  • 定時發送心跳包。
  • socket.connect會有異常SocketTimeOutException表示連接超時,因此進行重連。
  • 4、如何和服務端通信

  • 發送數據:獲取OutPutStream向里面write數據
  • 讀取數據:獲取InpuSTream,從中read數據。
  • 5、獲取到推送的消息

  • 服務端會通過該長連接向客戶端發送消息
  • 客戶端接收,按照事先規定的格式進行解析。
  • DLNA

    投屏

    回甩

    性能優化

    布局優化

    移除了四層過度繪制:
    1. 給Activity設置了主題,并將背景設置為null。
    1. Activity中主動調用getWindow().setBackgroundDrawable(null);消除默認Window背景
    1. 原來項目中存在一個老舊的側滑菜單。該菜單已經廢棄卻依然占據了一次過度繪制。因此將該側滑菜單進行了移除。
    1. 將MainFragment的背景設置為透明色。

    層級優化

    將最多的17層布局,優化到了7層。
    1. 用約束布局對所有頁面進行優化。
    1. 一些動態欄目,在一些局點上用不到,因此使用ViewStub進行優化。
    1. 用include對通用UI進行了優化
    1. 用merge標簽配合include減少了布局層級。

    代碼優化

  • 移除了所有早前遺留內容里面的Hashtable
  • 用SparseArray在一定情況下替換了HashMap
  • 內存優化

  • 使用線程池進行優化,減少系統開銷。
  • Bitmap優化
  • listview等列表優化,在滑動時禁止加載,避免了快速滑動的性能問題。
  • 功耗優化

  • 將執行后后臺任務的Service換為IntentService
  • Toast在后臺時,不會在生效。
  • 網絡優化

  • 三級緩存
  • 內存泄露優化

  • 一個第三方開源庫,控件存儲了Activity Context,并且在內部的靜態數據集合上存儲了控件,但是在Activity退出的時候,沒有將這個靜態的內部集合中的控件移除,最終導致了內存泄露10MB。
  • 版本兼容適配

    影視頁面

    即將上線、直播看什么

    播放器相關

    下載

    換膚

    數據緩存

    參考資料

    OkHttp3簡單的使用說明和Cookie自動化管理管理

    總結

    以上是生活随笔為你收集整理的Android项目-IPTV经验总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。