|
//
// frontPageBannerCell.m
// ThePaperBase
//
// Created by scar1900 on 15/8/20.
// Copyright (c) 2015年 scar1900. All rights reserved.
//
#import "frontPageBannerCell.h"
@interface frontPageBannerCell() <asyncImageDelegate> {
NSInteger isSuccess;
}
@property(nonatomic, strong)AsyncImageView *bannerView;
@property(nonatomic, strong)UITapGestureRecognizer *blankTap;
@property(nonatomic, strong)UITapGestureRecognizer *tap;
@property(nonatomic, strong)UIPanGestureRecognizer *panGesture;
@property(nonatomic, strong)NSString *clickUrl;
@end
@implementation frontPageBannerCell
@synthesize delegate;
@synthesize adUrl = _adUrl;
@synthesize clickUrl;
- (instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor clearColor];
self.isReady = NO;
self.isHaveShow = NO;
self.showing = NO;
[self addSubview:self.bannerView];
self.blankTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(blankTap:)];
[self addGestureRecognizer:self.blankTap];
self.tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)];
[self.bannerView addGestureRecognizer:self.tap];
self.panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];
[self.bannerView addGestureRecognizer:self.panGesture];
isSuccess = -1;
}
return self;
}
- (UIView*)bannerView {
if (!_bannerView) {
_bannerView = [AsyncImageView new];
_bannerView.imageView.userInteractionEnabled = YES;
_bannerView.isHaveWaterPrint = NO;
_bannerView.backgroundColor = [UIColor clearColor];
_bannerView.hidden = YES;
_bannerView.delegate = self;
}
return _bannerView;
}
- (void)setAdUrl:(NSString *)url {
if ([_adUrl isEqualToString:url]) {
return;
}
_adUrl = url;
if (isBlankString(url)) {
[self.bannerView setHidden:YES];
if ([self.delegate respondsToSelector:@selector(loadAdFailed:)]) {
[self.delegate loadAdFailed];
self.isReady = NO;
}
return;
}
TPLOG(@"%@",url);
__weak typeof(self) weakSelf = self;
[Remote doXmlRequestWithBlock:url completion:^(BOOL success, NSString *message, id responseData) {
if (success) {
isSuccess = 1;
[self.bannerView setHidden:NO];
TPLOG(@"=======ad data is ready!=========%@",weakSelf.description);
if ([weakSelf.delegate respondsToSelector:@selector(loadAdSuccess)]) {
[weakSelf.delegate loadAdSuccess];
}
NSString *imageUrl = responseData[@"creative"];
NSString *imageID = getImageNameFromURL(imageUrl);
weakSelf.bannerView.imageUrl = imageUrl;
weakSelf.bannerView.imageId = imageID;
NSString *click = responseData[@"click"];
if ([click isMatchedByRegex:@"__IDFA__"]) {
[click stringByReplacingOccurrencesOfString:@"__IDFA__" withString:[TPUserDefault instance].IDFA];
}
weakSelf.clickUrl = click;
NSString *impressionUrl = responseData[@"Impression"];
if (!isBlankString(impressionUrl)) {
if ([impressionUrl isMatchedByRegex:@"__IDFA__"]) {
[impressionUrl stringByReplacingOccurrencesOfString:@"__IDFA__" withString:[TPUserDefault instance].IDFA];
}
[Remote doSimpleAction:0 requestUrl:impressionUrl];
}
}else {
isSuccess = 0;
[self.bannerView setHidden:YES];
TPLOG(@"========load AD failed!========%@",weakSelf.description);
if ([weakSelf.delegate respondsToSelector:@selector(loadAdFailed)]) {
[weakSelf.delegate loadAdFailed];
self.isReady = NO;
}
}
}];
}
- (void)loadImageSuccess {
self.isReady = YES;
}
- (void)blankTap:(UITapGestureRecognizer*)blankTap {
if ([self.delegate respondsToSelector:@selector(dismissAd:bannerView:)]) {
[self.delegate dismissAd:self.index bannerView:self];
}
}
- (void)tap:(UITapGestureRecognizer*)gesture {
remotePushBO *pushBO = remotePushBO.new;
pushBO.linkType = @"6";
pushBO.contId = self.clickUrl;
pushBO.isComeFromRemote = @"0";
if ([self.delegate respondsToSelector:@selector(clickAdd:index:bannerView:)]) {
[self.delegate clickAdd:pushBO index:self.index bannerView:self];
}
}
- (void)pan:(UIPanGestureRecognizer*)swipe {
if ([self.delegate respondsToSelector:@selector(dismissAd:bannerView:)]) {
[self.delegate dismissAd:self.index bannerView:self];
}
}
- (void)layoutSubviews {
[self.bannerView makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.top).offset(self.naviHeight);
make.right.equalTo(self.right);
make.left.equalTo(self.left);
make.bottom.equalTo(self.bottom);
}];
[super layoutSubviews];
}
@end
|