张善主

Merge remote-tracking branch 'origin/main'

Showing 21 changed files with 683 additions and 42 deletions
... ... @@ -26,4 +26,12 @@ export class SpConstants{
//未登录保存兴趣标签
static PUBLICVISUTORMODE_INTERESTTAGS = 'PublicVisitorMode_InterestTags'
//定位相关
static LOCATION_CITY_NAME = "location_city_name" //定位
static LOCATION_CITY_CODE = "location_city_code" //定位
//启动页数据存储key
static APP_LAUNCH_PAGE_DATA_MODEL = 'app_launch_page_data_model'
}
\ No newline at end of file
... ...
... ... @@ -43,3 +43,9 @@ export { ErrorToastUtils } from './src/main/ets/utils/ErrorToastUtils'
export { EmitterUtils } from './src/main/ets/utils/EmitterUtils'
export { EmitterEventId } from './src/main/ets/utils/EmitterEventId'
export { NetworkUtil } from './src/main/ets/utils/NetworkUtil'
export { NetworkManager } from './src/main/ets/network/NetworkManager'
export { NetworkType } from './src/main/ets/network/NetworkType'
... ...
import connection from '@ohos.net.connection';
import { BusinessError } from '@ohos.base';
import { Logger } from '../utils/Logger';
import { EmitterUtils } from '../utils/EmitterUtils';
import { EmitterEventId } from '../utils/EmitterEventId';
import { NetworkType } from './NetworkType';
const TAG = 'NetworkManager'
/**
* 网络管理类
*/
export class NetworkManager {
private netCon: connection.NetConnection | null = null;
private static instance: NetworkManager;
private networkType: NetworkType = NetworkType.TYPE_UNKNOWN
public static getInstance(): NetworkManager {
if (!NetworkManager.instance) {
NetworkManager.instance = new NetworkManager();
}
return NetworkManager.instance;
}
public init() {
// 初始化
if (this.netCon) {
// 拦截重复初始化
return
}
this.networkMonitorRegister()
}
public release() {
this.networkMonitorUnregister()
}
private constructor() {
}
private networkMonitorRegister() {
this.netCon = connection.createNetConnection();
this.netCon.register((error) => {
if (error) {
Logger.error(TAG, 'register error:' + error.message);
return;
}
Logger.info(TAG, 'register success');
})
this.netCon.on('netAvailable', (data: connection.NetHandle) => {
Logger.info(TAG, 'netAvailable, data is: ' + JSON.stringify(data))
})
this.netCon.on('netBlockStatusChange', (data: connection.NetBlockStatusInfo) => {
Logger.info(TAG, 'netBlockStatusChange, data is: ' + JSON.stringify(data))
// TODO 网络阻塞,是否创建新的网络、提示
})
this.netCon.on('netCapabilitiesChange', (data: connection.NetCapabilityInfo) => {
Logger.info(TAG, 'netCapabilitiesChange, data is: ' + JSON.stringify(data))
this.parseData(data)
// 可能多次通知
EmitterUtils.sendEvent(EmitterEventId.NETWORK_CONNECTED, JSON.stringify(this.networkType))
})
this.netCon.on('netConnectionPropertiesChange', (data: connection.NetConnectionPropertyInfo) => {
Logger.info(TAG, 'netConnectionPropertiesChange, data is: ' + JSON.stringify(data))
})
this.netCon.on('netUnavailable', ((data: void) => {
Logger.info(TAG, 'netUnavailable, data is: ' + JSON.stringify(data))
}));
this.netCon.on('netLost', ((data: connection.NetHandle) => {
Logger.info(TAG, 'netLost, data is: ' + JSON.stringify(data))
// TODO 断网
EmitterUtils.sendEvent(EmitterEventId.NETWORK_DISCONNECTED)
this.networkType = NetworkType.TYPE_NONE
}))
}
private networkMonitorUnregister() {
if (this.netCon) {
this.netCon.unregister((error: BusinessError) => {
if (error) {
Logger.error(TAG, 'unregister error:' + error.message);
return;
}
Logger.info(TAG, 'unregister success');
})
}
}
/**
* @deprecated
*/
private getNetworkMessage(netHandle: connection.NetHandle) {
connection.getNetCapabilities(netHandle, (error, netCap) => {
if (error) {
Logger.error(TAG, 'getNetCapabilities error:' + error.message);
return;
}
let netType = netCap.bearerTypes;
this.reset(netType)
})
}
private reset(netType: Array<connection.NetBearType>) {
if (netType == null) {
return
}
for (let i = 0; i < netType.length; i++) {
if (netType[i] === 0) {
// 蜂窝网
this.networkType = NetworkType.TYPE_CELLULAR
} else if (netType[i] === 1) {
// Wi-Fi网络
this.networkType = NetworkType.TYPE_WIFI
} else {
// 以太网网络
this.networkType = NetworkType.TYPE_ETHERNET
}
}
}
/**
* 获取网络类型,网络监听网络变化刷新类型,这里优先返回变量
*/
public getNetType(): NetworkType {
if (this.networkType != NetworkType.TYPE_UNKNOWN) {
return this.networkType
}
return this.getNetTypeSync()
}
/**
* 同步获取网络类型,耗时
*/
public getNetTypeSync(): NetworkType {
let netHandle = connection.getDefaultNetSync();
let netCapabilities = connection.getNetCapabilitiesSync(netHandle)
this.reset(netCapabilities.bearerTypes)
return this.networkType;
}
private parseData(data: connection.NetCapabilityInfo) {
// 解析网络信息
this.reset(data.netCap.bearerTypes)
}
}
\ No newline at end of file
... ...
/**
* 网络管理类
*/
export enum NetworkType {
// 未知
TYPE_UNKNOWN = -1,
// 无网络
TYPE_NONE = 0,
// wifi
TYPE_WIFI = 1,
// 蜂窝网
TYPE_CELLULAR = 2,
// 以太网
TYPE_ETHERNET = 3,
}
\ No newline at end of file
... ...
... ... @@ -3,6 +3,10 @@
*/
export enum EmitterEventId {
// 通知登出,事件id
FORCE_USER_LOGIN_OUT = 1
FORCE_USER_LOGIN_OUT = 1,
// 网络连接成功,事件id
NETWORK_CONNECTED = 2,
// 网络断开,事件id
NETWORK_DISCONNECTED = 3,
}
... ...
import { NetworkManager } from '../network/NetworkManager'
import { NetworkType } from '../network/NetworkType'
/**
* 网络相关工具类
* 要实时监听网络,需要添加注册函数{例:src/main/ets/entryability/EntryAbility.ets:32}
*/
export class NetworkUtil {
/**
* 网络环境:0:无网 1:WiFi 2:2G 3:3G 4:4G 5:5G,暂时只识别出蜂窝网
* 扩展6-以太网
*/
static TYPE_NONE = '0'
static TYPE_WIFI = '1'
static TYPE_CELLULAR = '5'
// TODO 以太网,手机不涉及
static TYPE_ETHERNET = '6'
static getNetworkType(): string {
let type = NetworkManager.getInstance().getNetType()
return NetworkUtil.parseType(type)
}
static parseType(type: NetworkType): string {
switch (type) {
case NetworkType.TYPE_UNKNOWN:
case NetworkType.TYPE_NONE:
return NetworkUtil.TYPE_NONE;
case NetworkType.TYPE_WIFI:
return NetworkUtil.TYPE_WIFI;
case NetworkType.TYPE_CELLULAR:
return NetworkUtil.TYPE_CELLULAR;
case NetworkType.TYPE_ETHERNET:
return NetworkUtil.TYPE_ETHERNET;
default:
return NetworkUtil.TYPE_NONE;
}
}
}
\ No newline at end of file
... ...
... ... @@ -8,6 +8,11 @@
"tablet",
"2in1"
],
"deliveryWithInstall": true
"deliveryWithInstall": true,
"requestPermissions": [
{
"name": "ohos.permission.GET_NETWORK_INFO"
}
]
}
}
\ No newline at end of file
... ...
... ... @@ -324,8 +324,9 @@ export class HttpUrlUtils {
headers.set('EagleEye-TraceID', 'D539562E48554A60977AF4BECB6D6C7A')
headers.set('imei', HttpUrlUtils.getImei())
headers.set('Accept-Language', 'zh')
headers.set('city', HttpUrlUtils.getCity())
headers.set('city_dode', HttpUrlUtils.getCityCode())
// headers.set('city', HttpUrlUtils.getCity())
// headers.set('city_dode', HttpUrlUtils.getCityCode())
HttpUrlUtils.setLocationHeader(headers)
// TODO 判断是否登录
headers.set('userId', HttpUrlUtils.getUserId())
headers.set('userType', HttpUrlUtils.getUserType())
... ... @@ -368,6 +369,17 @@ export class HttpUrlUtils {
}
}
static setLocationHeader(headers: HashMap<string, string>) {
let cityName = SPHelper.default.getSync(SpConstants.LOCATION_CITY_NAME, '') as string
if (StringUtils.isNotEmpty(cityName)) {
headers.set('city', encodeURI(cityName))
}
let cityCode = SPHelper.default.getSync(SpConstants.LOCATION_CITY_CODE, '') as string
if (StringUtils.isNotEmpty(cityCode)) {
headers.set('city_dode', encodeURI(cityCode))
}
}
static getHost() {
return HttpUrlUtils._hostUrl;
}
... ...
/**
* @Description: 信息集合
* @Author:
* @Email: liyubing@wondertek.com.cn
* @CreateDate:
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
export interface AdvertsBean{
/**
* 广告id
*/
id:string
/**
* 广告relId
*/
relId:string
/**
* 广告素材名称
*/
matTitle:string
/**
* 投放开始时间yyyy-MM-dd HH:mm:ss
*/
startTime:string
/**
* 投放结束时间yyyy-MM-dd HH:mm:ss
*/
endTime:string
/**
* 展现时段,多组数据:9:00:00-10:00:00|17:00:00-18:00:00
*/
displayTime:string
/**
* 展现优先级,数值越小,等级越高
*/
displayLevel:string
/**
* 链接跳转类型,0:无连接;1:内链(站内内容);2:外链
*/
linkType:number;
/**
* 外链广告外链地址,link_type=2生效
*/
linkUrl:string
/**
* 内链内容id 仅link_type=1生效
*/
contentId:string
/**
* 对象类型 0:不跳转 1:视频,2:直播,5:专题,6:链接,8:图文,9:组图,10:H5新闻,11:频道
*/
objectType:string
/**
* 内容标题
*/
contentTitle:string
/**
* 专题页面id
*/
topicPageId:string
/**
* 挂角封面图
*/
displayUrl:string
/**
* 页面id
*/
pageId:string
/**
* 跳转id
*/
objectId:string
/**
* 对象分类 ;频道(1:一级频道,2:二级频道),专题(1:普通专题,2:主题专题,3:作者专题)
*/
objectLevel:string
/**
* 底部导航栏 id(用于频道跳转)
*/
bottomNavId:string
}
\ No newline at end of file
... ...
/**
* @Description: 挂角广告数据
* @Author:
* @Email: liyubing@wondertek.com.cn
* @CreateDate:
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
import { AdvertsBean } from './AdvertsBean';
import { CompAdvMatInfoBean, CompAdvSlotInfoBean } from './CompAdvInfoBean';
export interface AdvRuleBean {
/**
* 广告投放位编码
*/
pos: string;
/**
* 广告展示顺序,0:随机展示;1列表循环
*/
displayMode:number
/**
* 每间隔刷新n次展示广告
*/
refreshFrequency:number
/**
* 广告信息集合
*/
advert:AdvertsBean;
}
/**
* 广告组件数据
*/
export interface CompAdvBean{
/**
* 广告订单id
*/
id:string;
/**
* 投放开始时间
*/
startTime:number;
/**
* 投放结束时间
*/
endTime:number;
/**
* 信息流广告素材
*/
matInfo:CompAdvMatInfoBean
/**
* 信息流广告位
*/
slotInfo:CompAdvSlotInfoBean
}
... ...
/**
* @Description: 组件广告信息
* @Author:
* @Email: liyubing@wondertek.com.cn
* @CreateDate:
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
/*
信息流广告素材解析累
*/
export interface CompAdvMatInfoBean {
/**
* 广告标题
*/
advTitle: string
/**
* 3:信息流广告
*/
advType: string
/**
* 信息流广告类型(4:轮播图 5:三图广告 6:小图广告 7:长通栏广告 8:大图广告 9:视频广告 10:展会广告 11:冠名广告 12:顶部长通栏广告)
*/
advSubType: string
/**
* 素材图片信息;adv_subtype=4,5,6,7,8,9,12 时使用
*/
matImageUrl: string[]
/**
* 视频广告地址(adv_subtype=9)
*/
matVideoUrl: string
/**
* 扩展信息:advSubType=10,11时使用,字段示例见接口备注。
*/
extraData: string
/**
* 链接类型: 0:无链接;1:内链(文章);2:外链
*/
linkType: string
/**
* 链接跳转类型 :0-没链接,不用打开,1-端内打开,2-端外打开
*/
openType: string
/**
* 广告跳转链接
*/
linkUrl: string
/**
* 素材类型(0:图片 1:视频)
*/
matType: string
/**
* 开屏样式(1:全屏样式 0:底部固定Logo)
*/
startStyle: string
}
/**
* 信息流广告位
*/
export interface CompAdvSlotInfoBean {
/**
* 组件id
*/
compId: string;
/**
* 广告位位置 从1开始
*/
position: number;
/**
* 频道id
*/
channelId: string;
}
\ No newline at end of file
... ...
/**
* page接口返回的Page数据DTO
*/
import { AdvRuleBean, CompAdvBean } from '../adv/AdvsRuleBean';
export interface PageInfoDTO {
pageId: string; // 页面id
id: number; // 楼层id
name: string; // 名称
hasAdInfo: number;
hasPopUp: number;
baselineShow: number;
groups: GroupInfoDTO[];
channelInfo: ChannelInfoDTO;
/**
* 1-有过广告配置,0-没有广告配置
*/
hasAdInfo: number;
/**
* 挂角广告数据
*/
cornersAdv:AdvRuleBean
/**
* 广告中心-挂角广告信息
*/
cornersAdv2:CompAdvBean[]
}
export interface ChannelInfoDTO {
... ...
... ... @@ -20,7 +20,8 @@ import { ZhCarouselLayout01 } from './compview/ZhCarouselLayout01';
import { CardParser } from './CardParser';
import { LiveHorizontalReservationComponent } from './view/LiveHorizontalReservationComponent';
import { ZhGridLayout02 } from './compview/ZhGridLayout02';
import { Card5Component } from './cardview/Card5Component'
import { Card5Component } from './cardview/Card5Component';
import { Card2Component } from './cardview/Card2Component';
import { WDRouterPage, WDRouterRule } from 'wdRouter/Index';
/**
... ... @@ -71,6 +72,9 @@ export struct CompParser {
} else if (compDTO.compStyle === CompStyle.Zh_Single_Column_02) {
//头图卡 和comStyle 2相同,
Card5Component({ contentDTO: compDTO.operDataList[0] })
} else if (compDTO.compStyle === CompStyle.Zh_Single_Column_03) {
// 大图卡
Card2Component({ contentDTO: compDTO.operDataList[0] })
} else if (compDTO.compStyle === CompStyle.Zh_Single_Column_04) {
ZhSingleColumn04({ compDTO: compDTO })
} else if (compDTO.compStyle === CompStyle.Zh_Single_Column_05) {
... ...
import { abilityAccessCtrl, bundleManager, Permissions } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { geoLocationManager } from '@kit.LocationKit';
import { SpConstants } from 'wdConstant/Index';
import { Logger, PermissionUtils, ResourcesUtils, SPHelper } from 'wdKit/Index';
import { ResponseDTO } from 'wdNetwork/Index';
/**
* 系统定位服务实现
* */
export class HWLocationUtils {
//d定位相关
static LOCATION_CITY_NAME = "location_city_name" //定位
static LOCATION_CITY_CODE = "location_city_code" //定位
static LOCATION: Permissions = 'ohos.permission.LOCATION'
... ... @@ -107,10 +106,14 @@ export class HWLocationUtils {
Logger.debug('location :' + JSON.stringify(data))
if (data[0] && data[0].administrativeArea && data[0].subAdministrativeArea) {
let cityName = data[0].subAdministrativeArea;
let name = await SPHelper.default.get(SpConstants.LOCATION_CITY_NAME, '') as string
if (cityName == name) {
return
}
let code = await HWLocationUtils.getCityCode(data[0].administrativeArea, data[0].subAdministrativeArea)
if (code) {
SPHelper.default.save(HWLocationUtils.LOCATION_CITY_NAME, cityName)
SPHelper.default.save(HWLocationUtils.LOCATION_CITY_CODE, code)
SPHelper.default.save(SpConstants.LOCATION_CITY_NAME, cityName)
SPHelper.default.save(SpConstants.LOCATION_CITY_CODE, code)
}
}
}
... ... @@ -151,23 +154,6 @@ export class HWLocationUtils {
}
}
interface ResponseDTO<T> {
success: boolean;
// 服务请求响应值/微服务响应状态码”
code: number;
// 服务请求响应说明
message: string;
// 响应结果
data?: T;
totalCount?: number;
// 请求响应时间戳(unix格式)
timestamp?: number;
}
interface LocalData {
"code": string,
"id": string,
... ...
... ... @@ -9,6 +9,18 @@
"2in1"
],
"deliveryWithInstall": true,
"pages": "$profile:main_pages"
"pages": "$profile:main_pages",
"requestPermissions": [
{
"name": "ohos.permission.APPROXIMATELY_LOCATION",
"reason": "$string:location_reason",
"usedScene": {
"abilities": [
"FormAbility"
],
"when": "inuse"
}
}
]
}
}
\ No newline at end of file
... ...
... ... @@ -3,6 +3,10 @@
{
"name": "shared_desc",
"value": "description"
},
{
"name": "location_reason",
"value": " "
}
]
}
\ No newline at end of file
... ...
... ... @@ -4,7 +4,16 @@ import UIAbility from '@ohos.app.ability.UIAbility';
import Want from '@ohos.app.ability.Want';
import window from '@ohos.window';
import { registerRouter } from 'wdRouter';
import { SPHelper, StringUtils, WindowModel } from 'wdKit';
import {
EmitterEventId,
EmitterUtils,
Logger,
NetworkManager,
NetworkType,
SPHelper,
StringUtils,
WindowModel
} from 'wdKit';
import { HttpUrlUtils, WDHttp } from 'wdNetwork';
export default class EntryAbility extends UIAbility {
... ... @@ -12,15 +21,30 @@ export default class EntryAbility extends UIAbility {
SPHelper.init(this.context);
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
registerRouter();
NetworkManager.getInstance().init()
WDHttp.initHttpHeader()
const spHostUrl = SPHelper.default.getSync('hostUrl', '') as string
if (StringUtils.isNotEmpty(spHostUrl)) {
HttpUrlUtils.hostUrl = spHostUrl
}
// 注册监听网络连接
EmitterUtils.receiveEvent(EmitterEventId.NETWORK_CONNECTED, ((str?: string) => {
let type: NetworkType | null = null
if (str) {
type = JSON.parse(str) as NetworkType
}
Logger.info('network connected: ' + type?.toString())
}))
// 注册监听网络断开
EmitterUtils.receiveEvent(EmitterEventId.NETWORK_DISCONNECTED, (() => {
Logger.info('network disconnected')
}))
}
onDestroy(): void {
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
NetworkManager.getInstance().release()
}
onWindowStageCreate(windowStage: window.WindowStage): void {
... ...
import router from '@ohos.router'
import { WDRouterRule } from 'wdRouter';
import { WDRouterPage } from 'wdRouter';
import { Logger, SPHelper } from 'wdKit/Index';
import { SpConstants } from 'wdConstant/Index';
import LaunchDataModel from '../viewModel/LaunchDataModel'
import { LaunchModel } from '../viewModel/LaunchModel';
import { ifaa } from '@kit.OnlineAuthenticationKit';
import common from '@ohos.app.ability.common';
import Want from '@ohos.app.ability.Want';
import { BusinessError } from '@ohos.base';
@Entry
@Component
struct LaunchAdvertisingPage {
@State time: number = 4
timer :number = -1
@State model : LaunchDataModel = {} as LaunchDataModel
enter() {
// router.replaceUrl({
... ... @@ -15,7 +28,22 @@ struct LaunchAdvertisingPage {
clearInterval(this.timer)
}
aboutToAppear(): void {
let dataModelStr : string = SPHelper.default.getSync(SpConstants.APP_LAUNCH_PAGE_DATA_MODEL,'') as string
let dataModel : LaunchDataModel = JSON.parse(dataModelStr)
this.model = dataModel
console.log(dataModelStr)
if(this.model.launchAdInfo.length){
//设置倒计时时间
this.time = this.model.launchAdInfo[0].displayDuration
}
}
onPageShow(){
this.timer = setInterval(() => {
this.time--
if (this.time < 1) {
... ... @@ -32,10 +60,20 @@ struct LaunchAdvertisingPage {
Stack({alignContent:Alignment.Bottom}){
Column(){
Image($r('app.media.app_icon'))
.margin({
top:'128lpx',left:'48lpx',right:'48lpx',bottom:'128lpx'
})
if(!(this.model.launchAdInfo[0].matInfo.matType == '1')){
//显示图片
Image(this.model.launchAdInfo[0].matInfo.matImageUrl[0])
.width('100%')
.height('100%')
// .margin({
// top:'128lpx',left:'48lpx',right:'48lpx',bottom:'128lpx'
// })
}else {
//显示视频播放
}
}
.justifyContent(FlexAlign.Center)
.width('100%')
... ... @@ -62,7 +100,8 @@ struct LaunchAdvertisingPage {
}
.width('100%')
.height('100%')
if(!(this.model.launchAdInfo[0].matInfo.startStyle == 1)){
//底部logo样式 按钮加载在背景展示图上
Button(){
Row(){
Text('点击跳转至详情或第三方应用')
... ... @@ -83,27 +122,83 @@ struct LaunchAdvertisingPage {
bottom: '51lpx'
})
.backgroundColor('#80000000')
.onClick(()=>{
this.action()
})
}
}
}
.width('100%')
.height('84%')
.backgroundColor('#FF6C75')
.margin({top:'0'})
if(this.model.launchAdInfo[0].matInfo.startStyle == 1){
//全屏样式,底部无logo 按钮放在原底部logo位置
Button(){
Row(){
Text('点击跳转至详情或第三方应用')
.fontSize('31lpx')
.fontColor(Color.White)
.margin({
left:'55lpx'
})
Image($r('app.media.Slice'))
.width('46lpx')
.height('46lpx')
.margin({right:'55lpx'})
}.alignItems(VerticalAlign.Center)
}
.width('566lpx')
.height('111lpx')
.margin({
top: '28lpx'
})
.backgroundColor('#80000000')
.onClick(()=>{
this.action()
})
}else {
//底部logo样式
Image($r('app.media.LaunchPage_logo'))
.width('278lpx')
.height('154lpx')
.margin({bottom: '48lpx'})
.margin({top: '28lpx'})
}
}
.width('100%')
.height('100%')
.backgroundColor(Color.White)
}
action(){
//跳转 url linkUrl https://news.bjd.com.cn/2024/03/19/10724331.shtml
// openType 端外 端内 打开
if (this.model.launchAdInfo[0].matInfo.openType == '2') {
//端外打开
let context = getContext(this) as common.UIAbilityContext;
let wantInfo: Want = {
// uncomment line below if wish to implicitly query only in the specific bundle.
// bundleName: 'com.example.myapplication',
action: 'ohos.want.action.viewData',
// entities can be omitted.
entities: ['entity.system.browsable'],
uri: 'https://news.bjd.com.cn/2024/03/19/10724331.shtml'
}
context.startAbility(wantInfo).then(() => {
// ...
}).catch((err: BusinessError) => {
// ...
})
}else {
//端内打开
}
}
}
\ No newline at end of file
... ...
... ... @@ -10,6 +10,9 @@ import { WDRouterRule } from 'wdRouter';
import { WDRouterPage } from 'wdRouter';
import { LaunchModel } from '../viewModel/LaunchModel'
import { LaunchPageModel } from '../viewModel/LaunchPageModel'
import LaunchDataModel from '../viewModel/LaunchDataModel'
import { Logger, SPHelper } from 'wdKit/Index';
import { SpConstants } from 'wdConstant/Index';
@Entry
@Component
... ... @@ -92,8 +95,19 @@ struct LaunchPage {
// }
} else {
//需要根据请求数据判断是否需要进入广告页,广告数据为nil则直接跳转到首页
//获取本地存储的启动页数据
let dataModelStr : string = SPHelper.default.getSync(SpConstants.APP_LAUNCH_PAGE_DATA_MODEL,'') as string
let dataModel : LaunchDataModel = JSON.parse(dataModelStr)
console.log(dataModelStr)
if (dataModel.launchAdInfo.length) {
//跳转广告页
this.jumpToAdvertisingPage();
}else {
//直接跳转首页
WDRouterRule.jumpWithReplacePage(WDRouterPage.mainPage)
}
//同意隐私协议后每次启动app请求启动页相关数据,并更新数据
this.requestLaunchPageData();
}
... ... @@ -161,7 +175,6 @@ struct LaunchPage {
//请求启动页相关接口数据并保存
let launchPageModel = new LaunchPageModel()
launchPageModel.getLaunchPageData()
}
aboutToAppear(): void {
... ...
... ... @@ -40,6 +40,7 @@ export interface NetLayerLauncherADInfoModel{
startTime : number
endTime : number
displayDuration : number
displayPriority : number
displayRound : number
matInfo : NetLayerLauncherADMaterialModel
... ...
... ... @@ -11,7 +11,7 @@ import { SpConstants } from 'wdConstant/Index';
export class LaunchPageModel {
getLaunchPageData() {
getLaunchPageData(): Promise<LaunchDataModel> {
let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
return new Promise<LaunchDataModel>((success, fail) => {
HttpRequest.get<ResponseDTO<LaunchDataModel>>(HttpUrlUtils.getLaunchPageDataUrl(), headers).then((data: ResponseDTO<LaunchDataModel>) => {
... ... @@ -26,8 +26,9 @@ export class LaunchPageModel {
Logger.debug("LaunchPageModel获取启动相关数据获取成功:success ", JSON.stringify(data))
success(data.data);
//存储数据
let obj : string = JSON.stringify(data.data)
console.log(obj)
SPHelper.default.saveSync(SpConstants.APP_LAUNCH_PAGE_DATA_MODEL,obj)
}, (error: Error) => {
Logger.debug("LaunchPageModel获取启动相关数据获取失败:error ", error.toString())
... ...