需求说明
1.进入启动页后先跟服务端请求广告数据,请求时间为1s,超时则代表无广告。
2.有广告时显示广告,并倒计时3s,若无广告则直接进入首页不倒计时。
3.点击跳过广告按钮直接进入首页。
4.点击广告图片也跳过广告倒计时并打开广告的url。
需求地址
http://192.168.1.75/114la/220/114la_220/#g=1&p=1_0_%E5%90%AF%E5%8A%A8
接口说明
URL:
www.114larc.com/q/api/1.0/android/1.0/getIndexCake
请求方式:GET
返回参数说明:
参数名称 | 类型 | 描述 |
---|---|---|
type | int | 广告 |
style | int | 类型 |
pics | Array | 图片地址 |
src | string | 跳转地址 |
name | string | 名称 |
title | string | 广告标题 |
返回格式:
{
"state": 1,
"code": 0,
"message": "",
"data": {
"type": 999,
"style": 5,
"pics": {
"src": "http://img.114larc.com/thumb/P/RC/87/PRC87896D1FDDA6E9984BE7E7505054A16D_0?s=769nEgUfDcxscCr7XA8Okw"
},
"src": "http://www.baidu.com",
"name": "百度猫",
"title": ""
}
}
核心代码
创建请求,并设置超时时间为1s。
根据返回的json数据判断是否显示广告。
func setUpAdertising() {
guard let url = URL(string: YYWApiCenter.getAdvertsing()) else {
//跳过广告
return
}
let requset = URLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 1.0)
let urlSession = URLSession(configuration: URLSessionConfiguration.default)
let task = urlSession.dataTask(with: requset) { (data, respone, error) in
DispatchQueue.main.async {
if let data = data {
let json = JSON.init(data: data)
if json["state"].intValue == 1 {
let picArr = json["data"]["pics"].arrayValue
guard picArr.count >= 3 else { self.skipAction(self.skipBtn); return }
var imageurl = ""
let indexs = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad ? [2,0,1] : [0,1,2]
for index in indexs {
if !picArr[index]["src"].stringValue.isEmpty {
imageurl = picArr[index]["src"].stringValue
break
}
}
guard let url = URL(string: imageurl) else {
self.skipAction(self.skipBtn)
return
}
if !json["data"]["src"].stringValue.isEmpty {
self.advertsingUrl = json["data"]["src"].stringValue
self.advertisingImageView.sd_setImage(with: url)
self.setUpTimer()
return
}
}
}
self.skipAction(self.skipBtn)
}
}
task.resume()
}
有广告会进入倒计时3s,否则直接进入首页。
网友评论