四川長(zhǎng)虹網(wǎng)絡(luò)科技有限責(zé)任公司 曾祥根
近年來(lái)IPTV機(jī)頂盒獲得大規(guī)模普及。通常不同運(yùn)營(yíng)商的不同市場(chǎng)會(huì)引入不同的IPTV平臺(tái)和機(jī)頂盒廠家的產(chǎn)品,需要機(jī)頂盒終端去適配不同市場(chǎng)的不同平臺(tái),由于IPTV平臺(tái)上的網(wǎng)頁(yè)代碼編寫(xiě)不規(guī)范,存在各種語(yǔ)法、變量定義、JS函數(shù)定義以及和瀏覽器版本兼容等問(wèn)題,常常需要終端去適配前端頁(yè)面的錯(cuò)誤和兼容性,傳統(tǒng)做法都是在機(jī)頂盒端做針對(duì)性修改,同時(shí)需要升級(jí)機(jī)頂盒軟件,由于頁(yè)面也會(huì)不定期的更新,導(dǎo)致經(jīng)常需要升級(jí)機(jī)頂盒軟件,增加維護(hù)工作量和導(dǎo)致用戶體驗(yàn)不友好。為了提高機(jī)頂盒維護(hù)方便性和友好性,需要有一種IPTV網(wǎng)頁(yè)動(dòng)態(tài)適配技術(shù),實(shí)現(xiàn)一套軟件自動(dòng)適應(yīng)所有市場(chǎng),不同平臺(tái)的方法,同時(shí)達(dá)到不需要升級(jí)軟件就可適配新市場(chǎng),新平臺(tái),新頁(yè)面的需求,提高適配效率,維護(hù)方便性,軟件復(fù)用性。
(1)針對(duì)每個(gè)市場(chǎng)的不同軟件版本定義不同的適配解析文件;
(2)程序啟動(dòng)會(huì)自動(dòng)從服務(wù)器端同步對(duì)應(yīng)市場(chǎng)版本的適配解析文件;
(3)修改標(biāo)準(zhǔn)瀏覽器內(nèi)核,滿足各個(gè)運(yùn)營(yíng)商IPTV頁(yè)面技術(shù)要求;
(4)修改瀏覽器內(nèi)核,使得瀏覽器內(nèi)核支持解析適配文件內(nèi)容,動(dòng)態(tài)修改頁(yè)面內(nèi)容,達(dá)到自動(dòng)適應(yīng)IPTV網(wǎng)頁(yè)錯(cuò)誤,兼容性等問(wèn)題。
(1)頁(yè)面適配文件的版本定義;
(2)頁(yè)面適配文件定義;
(3)定義和實(shí)現(xiàn)頁(yè)面適配文件更新接口;
(4)頁(yè)面適配文件下載更新;
(5)瀏覽器解析配置文件,替換或者動(dòng)態(tài)修改js,css,html文件內(nèi)容,呈現(xiàn)頁(yè)面最終顯示內(nèi)容。
版本文件名命名格式規(guī)定如下:
xxxx.xx.version
第一個(gè)xxxx為市場(chǎng)編號(hào),例如四川電信為0001,四川移動(dòng)為1001等
第二個(gè)xx為平臺(tái)變化,例如中興平臺(tái),00,華為2.0為01等
例如:四川電信中興平臺(tái)文件名為0001.00.version
版本配置內(nèi)容格式定義如下:
xx.xx
第一個(gè)xx為主版本號(hào)
第二個(gè)xx為次版本號(hào)
例如:版本內(nèi)容為01.01
頁(yè)面適配文件名命名格式規(guī)定如下:
xxxx.xx.config
第一個(gè)xx為市場(chǎng)編號(hào),例如四川電信為0001,四川移動(dòng)為1001等
第二個(gè)xx為平臺(tái)變化,例如中興平臺(tái)為0,華為2.0為1等
例如:四川電信中興平臺(tái)文件名為0001.00.config
頁(yè)面適配配置內(nèi)容格式定義如下:
例如,替換指定頁(yè)面的指定內(nèi)容;
需要替換字符串內(nèi)容,替換后字符串內(nèi)容
例如:
其他規(guī)則采用類(lèi)似的json定義
(1)客戶端和服務(wù)端之間采用http post機(jī)制通訊;
(2)通信接口定義如下:
POST /api/configver
輸入:
(1)機(jī)頂盒開(kāi)機(jī)發(fā)送configver請(qǐng)求;
(2)服務(wù)器處理客戶端請(qǐng)求,獲取對(duì)應(yīng)的版本信息,配置文件地址;
(3)服務(wù)器返回對(duì)應(yīng)的版本信息和url;
(4)客戶端判斷版本,如果版本相同,不更新;
(5)如果版本不一致,下載配置文件同時(shí)更新到本地。
客戶端頁(yè)面適配文件下載更新流程圖(詳見(jiàn)圖1所示)。
圖1 客戶端頁(yè)面適配文件下載更新流程圖
(1)在瀏覽器載入html內(nèi)存內(nèi)容前,解析配置文件,查找并且替換符合條件的內(nèi)容,或者增加新的頁(yè)面內(nèi)容,更新后的html內(nèi)存載入內(nèi)核解析。
(2)在瀏覽器載入css內(nèi)存內(nèi)容前,解析配置文件,查找并且替換符合條件的內(nèi)容,或者增加新的頁(yè)面內(nèi)容,更新后的css內(nèi)存載入內(nèi)核解析。
(3)在瀏覽器載入js內(nèi)存內(nèi)容前,解析配置文件,查找并且替換符合條件的內(nèi)容,或者增加新的頁(yè)面內(nèi)容,更新后的js內(nèi)存載入內(nèi)核解析。
(4)瀏覽器解析動(dòng)態(tài)更新后的頁(yè)面內(nèi)容,并且顯示頁(yè)面內(nèi)容。