Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
apk_product
/
IPTVLaunchTest
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
42a1199e
...
42a1199ec69cff8450f429e6a3e9368429de67c2
authored
2024-10-11 17:35:51 +0800
by
胡波
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
js启动模块代码,使用说明
1 parent
d144a634
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
325 additions
and
0 deletions
jsTestFile/JsAppStartUp.html
readme.md
jsTestFile/JsAppStartUp.html
0 → 100644
View file @
42a1199
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<meta
charset=
"UTF-8"
>
<meta
name=
"page-view-size"
content=
"1280*720"
/>
<title>
startUpPage
</title>
</head>
<body
style=
"background-color: black"
>
<a
style=
"color: azure"
>
JsApp 启动模块
</a>
<div
id=
"console"
style=
"color: azure;"
></div>
<script>
//当前是否已经安装基座
let
isBaseAppExists
=
false
;
//安装重试次数
let
tryCount
=
0
;
//单次安装超时
let
times
=
0
;
//JsApp启动参数
let
ExtraParam
=
{
UserID
:
""
,
UserToken
:
""
,
TokenExpireTime
:
""
,
UserGroup
:
""
,
EPGGroup
:
""
,
AreaCode
:
""
,
Province
:
""
,
City
:
""
,
County
:
""
,
Cellphone
:
""
,
STBType
:
""
,
STPID
:
""
,
STBMAC
:
""
,
STPIP
:
""
,
Partner
:
""
,
SessionServer
:
""
,
SessionID
:
""
,
EPGDomain
:
""
,
//EPG home页
ReturnURL
:
"http://192.168.12.98:8080/JsAppLaunch/JsAppStartUp.html"
,
JsAppID
:
""
,
JsAppURL
:
"http://139.196.145.150:8060/AppEngine/apps/jsviewSCepg/js/main.jsv.mjs?coreVersionRange=1021848&engineUrl=http://139.196.145.150:8060/AppEngine/apps/shijiuBase/JsViewES6_js2c_r963.jsv.4b3a9429.js&updateUrl=http://139.196.145.150:8060/AppEngine/apps/shijiuBase/"
,
//js app地址 目前需要传递视九的地址
JSAppParam
:
""
,
ChannelList
:
"[]"
//Channel频道播放数据
}
//基座最新版本配置
const
BaseAppConfig
=
{
force
:
1
,
versionCode
:
3
,
versionName
:
"0.0.3"
,
packageName
:
"com.lh.jsapp"
,
className
:
"MainActivity"
,
path
:
"http://192.168.12.98:8080/JsAppLaunch/newJsBaseApp.apk"
,
md5
:
""
,
size
:
0
,
desc
:
"测试安装"
};
/**
* 基座应用入口参数
*/
let
StartUpParam
=
{
appName
:
BaseAppConfig
.
packageName
,
className
:
BaseAppConfig
.
className
,
action
:
""
,
category
:
""
,
data
:
""
,
extra
:
[]
//启动参数
}
/**
* 通用工具
*/
const
CommonUtil
=
{
initParam
:
function
()
{
const
that
=
this
;
that
.
printLn
(
JSON
.
stringify
(
BaseAppConfig
));
if
(
that
.
checkAuthFunc
())
{
ExtraParam
.
EPGDomain
=
Authentication
.
CTCGetConfig
(
"EPGDomain"
);
that
.
printLn
(
"EPGDomain="
+
EPGDomain
);
ExtraParam
.
UserToken
=
Authentication
.
CTCGetConfig
(
"accessToken"
);
ExtraParam
.
EPGGroup
=
Authentication
.
CTCGetConfig
(
"EPGGroupNMB"
);
ExtraParam
.
ChannelList
=
Authentication
.
CTCGetConfig
(
"Channel"
);
let
sjParams
=
{
userId
:
that
.
getUrlParams
(
'userId'
)
||
that
.
getCookie
(
'userId'
)
||
''
,
platformAccount
:
that
.
getPlatformAccount
(),
}
let
params
=
{
sj
:
sjParams
};
ExtraParam
.
JSAppParam
=
JSON
.
stringify
(
params
);
}
},
getUrlParams
:
function
(
name
){
const
that
=
this
;
let
url
=
window
.
location
.
href
.
split
(
'?'
)[
1
]
||
''
;
let
obj
=
{};
// 声明参数对象
let
arr
=
url
.
split
(
'&'
)
;
// 以&符号分割为数组
for
(
let
i
=
0
;
i
<
arr
.
length
;
i
++
)
{
let
arrNew
=
arr
[
i
].
split
(
'='
);
// 以"="分割为数组
obj
[
arrNew
[
0
]]
=
arrNew
[
1
];
}
return
obj
[
name
];
},
getCookie
:
function
(
name
){
const
that
=
this
;
const
value
=
name
.
replace
(
/
([\.
$?*|{}
\(\)\[\]\\\/\+
^
])
/g
,
'\\$1'
);
let
regex
=
new
RegExp
(
'(^| )'
+
value
+
'=([^;]*)'
);
let
result
=
regex
.
exec
(
document
.
cookie
);
return
result
?
decodeURIComponent
(
result
[
2
])
:
null
;
},
getPlatformAccount
()
{
const
that
=
this
;
let
platformAccount
=
top
.
userId
||
that
.
getUrlParams
(
'platformAccount'
)
||
that
.
getUrlParams
(
'platformUserId'
)
||
that
.
getCookie
(
'platformAccount'
)
||
that
.
getCookie
(
'platformUserId'
)
||
'topdraw'
return
platformAccount
},
checkAuthFunc
:
function
()
{
const
that
=
this
;
if
(
typeof
Authentication
===
'undefined'
)
{
console
.
log
(
"this webview isn't support Authentication!"
);
that
.
printLn
(
"this webview isn't support Authentication!"
);
return
false
;
}
that
.
printLn
(
"check Authentication success!"
);
return
true
;
},
checkSTBFunc
:
function
()
{
const
that
=
this
;
if
(
typeof
STBAppManager
===
'undefined'
)
{
console
.
log
(
"this webview isn't support STBAppManger!"
);
that
.
printLn
(
"this webview isn't support STBAppManger!"
);
return
false
;
}
that
.
printLn
(
"check STBAppManger success!"
);
return
true
;
},
checkFileIsExists
:
function
(
url
){
const
that
=
this
;
return
fetch
(
url
)
.
then
(
response
=>
{
if
(
response
.
status
===
200
)
{
that
.
printLn
(
'文件存在'
);
return
true
;
}
else
{
that
.
printLn
(
'文件不存在或请求出错'
);
return
false
;
}
})
.
catch
(
error
=>
{
that
.
printLn
(
'请求出错:'
,
error
);
return
false
;
});
},
printLn
:
function
(
string
)
{
document
.
getElementById
(
"console"
).
innerHTML
+=
`<a>
${
string
}
</a><br>`
;
}
};
/**
* 启动模块
*/
const
StartUpHelper
=
{
/**
* 启动epg home
*/
goEpgHome
:
function
()
{
if
(
CommonUtil
.
checkAuthFunc
())
{
if
(
ExtraParam
.
EPGDomain
.
length
>
0
)
{
window
.
open
(
ExtraParam
.
EPGDomain
);
}
}
},
/**
* 启动基座
*/
goBaseJsApp
:
function
()
{
const
that
=
this
;
if
(
CommonUtil
.
checkSTBFunc
())
{
const
extraArray
=
Object
.
keys
(
ExtraParam
).
map
(
key
=>
({
name
:
key
,
value
:
ExtraParam
[
key
]
}));
StartUpParam
.
extra
=
extraArray
;
CommonUtil
.
printLn
(
"启动参数="
+
JSON
.
stringify
(
StartUpParam
));
STBAppManager
.
startAppByIntent
(
JSON
.
stringify
(
StartUpParam
));
}
}
};
/**
*升级模块
*/
const
UpdateHelper
=
{
Common
:
{
errorCount
:
3
,
//安装错误阈值
timeout
:
60
,
//安装后检测状态超时 单位s
},
/**
* 判断基座是否需要安装或者升级
*/
needUpdateBaseApp
:
function
()
{
const
that
=
this
;
if
(
CommonUtil
.
checkSTBFunc
())
{
if
(
that
.
isAppExists
(
BaseAppConfig
.
packageName
))
{
isBaseAppExists
=
true
;
CommonUtil
.
printLn
(
"基座已安装"
);
if
(
BaseAppConfig
.
force
!==
1
)
{
//不强制则不升级
return
false
;
}
let
versionName
=
STBAppManager
.
getAppVersion
(
BaseAppConfig
.
packageName
);
let
versionCode
=
that
.
getVersionCode
(
versionName
);
CommonUtil
.
printLn
(
"versionCode = "
+
versionCode
);
CommonUtil
.
printLn
(
"BaseAppConfig versionCode = "
+
BaseAppConfig
.
versionCode
);
return
BaseAppConfig
.
versionCode
>
versionCode
;
}
}
return
false
;
},
/**
* 升级基座
* @param callback 安装结果回调
*/
updateBaseApp
:
function
(
callback
)
{
const
that
=
this
;
if
(
CommonUtil
.
checkSTBFunc
())
{
if
(
tryCount
>
that
.
Common
.
errorCount
)
{
CommonUtil
.
printLn
(
"install failed more than 3 times!"
);
callback
(
false
);
return
;
}
if
(
!
CommonUtil
.
checkFileIsExists
(
BaseAppConfig
.
path
))
{
callback
(
false
);
return
;
}
STBAppManager
.
installApp
(
BaseAppConfig
.
path
);
const
checkInstallStatusInterval
=
setInterval
(
function
()
{
CommonUtil
.
printLn
(
"安装检查 time="
+
times
);
if
(
times
>
that
.
Common
.
timeout
)
{
//安装超时
clearInterval
(
checkInstallStatusInterval
);
if
(
tryCount
<
that
.
Common
.
errorCount
)
{
//安装次数未超过阈值
tryCount
++
;
STBAppManager
.
installApp
(
BaseAppConfig
.
path
);
return
;
}
callback
(
false
);
return
;
}
if
(
!
isBaseAppExists
)
{
//之前没安装过
if
(
that
.
isAppExists
(
BaseAppConfig
.
packageName
))
{
clearInterval
(
checkInstallStatusInterval
);
callback
(
true
);
return
;
}
}
else
{
let
versionName
=
STBAppManager
.
getAppVersion
(
BaseAppConfig
.
packageName
);
CommonUtil
.
printLn
(
"已安装包版本信息="
+
that
.
getVersionCode
(
versionName
));
CommonUtil
.
printLn
(
"安装包版本信息="
+
BaseAppConfig
.
versionCode
);
if
(
that
.
getVersionCode
(
versionName
)
===
BaseAppConfig
.
versionCode
)
{
clearInterval
(
checkInstallStatusInterval
);
callback
(
true
);
return
;
}
}
times
++
;
},
1000
);
}
},
/**
* 判断应用是否存在
* @param packageName
*/
isAppExists
:
function
(
packageName
)
{
const
that
=
this
;
if
(
CommonUtil
.
checkSTBFunc
())
{
return
(
STBAppManager
.
checkPackage
(
packageName
)
||
STBAppManager
.
isAppInstalled
(
packageName
));
}
},
/**
* 转化versionName 为 versionCode
* @param versionName
*/
getVersionCode
:
function
(
versionName
)
{
const
regex
=
/^
\d{1,2}\.\d{1,2}\.\d{1,2}
$/
;
if
(
!
regex
.
test
(
versionName
))
{
return
0
;
}
let
numArr
=
versionName
.
split
(
"."
);
return
Number
(
numArr
[
0
]
*
10000
+
numArr
[
1
]
*
100
+
numArr
[
2
]);
}
};
window
.
addEventListener
(
"load"
,
function
()
{
CommonUtil
.
printLn
(
"页面加载完成"
);
CommonUtil
.
initParam
();
if
(
UpdateHelper
.
needUpdateBaseApp
())
{
CommonUtil
.
printLn
(
"需要升级"
);
tryCount
=
0
;
times
=
0
;
UpdateHelper
.
updateBaseApp
(
status
=>
{
if
(
!
status
)
{
if
(
isBaseAppExists
)
{
StartUpHelper
.
goBaseJsApp
();
return
}
StartUpHelper
.
goEpgHome
();
return
;
}
StartUpHelper
.
goBaseJsApp
();
});
return
;
}
CommonUtil
.
printLn
(
"不需要升级"
);
StartUpHelper
.
goBaseJsApp
();
});
</script>
</body>
</html>
readme.md
0 → 100644
View file @
42a1199
### 启动app demo使用说明
*
1.需要一个tomcat环境,webapp下部署html启动页面,本地测试的tomcat版本为8.5.91,端口为8080
*
2.修改MainActivity中webview的load地址,指向tomcat中的启动页面url即可
*
3.启动页代码路径在项目jsTestFile中,目前启动页面中包含升级模块逻辑
*
4.在公网高系统版本盒子中,首次安装app时需要给予读写权限后再重新启动进行测试
\ No newline at end of file
Please
register
or
sign in
to post a comment