| | |
| | | 705F1F83251F1CA80065350E /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 705F1F68251F1CA70065350E /* MJRefreshAutoFooter.m */; }; |
| | | 705F1F84251F1CA80065350E /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 705F1F6A251F1CA70065350E /* MJRefreshComponent.m */; }; |
| | | 705F1F85251F1CA80065350E /* MJRefreshTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 705F1F6D251F1CA70065350E /* MJRefreshTrailer.m */; }; |
| | | 706CECB9264F6F72001FBEB7 /* BUAdSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 706CECB5264F6F6F001FBEB7 /* BUAdSDK.framework */; }; |
| | | 706CECBA264F6F72001FBEB7 /* BUFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 706CECB6264F6F71001FBEB7 /* BUFoundation.framework */; }; |
| | | 706CECBB264F6F72001FBEB7 /* BUCNAuxiliary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 706CECB7264F6F72001FBEB7 /* BUCNAuxiliary.framework */; }; |
| | | 706CECBC264F6F72001FBEB7 /* BUAdSDK.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 706CECB8264F6F72001FBEB7 /* BUAdSDK.bundle */; }; |
| | | 706CECC0264F76C1001FBEB7 /* PPTVNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = 706CECBF264F76C1001FBEB7 /* PPTVNavView.m */; }; |
| | | 706CECC5264F94CC001FBEB7 /* PPTVPppView.m in Sources */ = {isa = PBXBuildFile; fileRef = 706CECC4264F94CC001FBEB7 /* PPTVPppView.m */; }; |
| | | 706CECC9264F97EB001FBEB7 /* PPTVPopCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 706CECC8264F97EB001FBEB7 /* PPTVPopCell.m */; }; |
| | |
| | | 706CECD7264FB895001FBEB7 /* DWKWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 706CECD3264FB895001FBEB7 /* DWKWebView.m */; }; |
| | | 706CECDB264FB8CB001FBEB7 /* JSAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 706CECDA264FB8CB001FBEB7 /* JSAPI.m */; }; |
| | | 706CECDE264FC2A7001FBEB7 /* PPTVBottomVIpVIew.m in Sources */ = {isa = PBXBuildFile; fileRef = 706CECDD264FC2A7001FBEB7 /* PPTVBottomVIpVIew.m */; }; |
| | | 70C4921426AC1D6600D044F7 /* BUAdSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70C4921026AC1D6200D044F7 /* BUAdSDK.framework */; }; |
| | | 70C4921526AC1D6600D044F7 /* BUCNAuxiliary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70C4921126AC1D6400D044F7 /* BUCNAuxiliary.framework */; }; |
| | | 70C4921626AC1D6600D044F7 /* BUFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70C4921226AC1D6600D044F7 /* BUFoundation.framework */; }; |
| | | 70C4921726AC1D6600D044F7 /* BUAdSDK.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 70C4921326AC1D6600D044F7 /* BUAdSDK.bundle */; }; |
| | | 70D5934525EA1FAE00438F1A /* PPTVController.m in Sources */ = {isa = PBXBuildFile; fileRef = 70D5934425EA1FAE00438F1A /* PPTVController.m */; }; |
| | | 70ED36BC266233EC00E51E79 /* CWCarousel.m in Sources */ = {isa = PBXBuildFile; fileRef = 70ED36B6266233EC00E51E79 /* CWCarousel.m */; }; |
| | | 70ED36BD266233EC00E51E79 /* CWFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 70ED36B8266233EC00E51E79 /* CWFlowLayout.m */; }; |
| | |
| | | 705F1F6B251F1CA70065350E /* MJRefreshFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshFooter.h; sourceTree = "<group>"; }; |
| | | 705F1F6C251F1CA70065350E /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackFooter.h; sourceTree = "<group>"; }; |
| | | 705F1F6D251F1CA70065350E /* MJRefreshTrailer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshTrailer.m; sourceTree = "<group>"; }; |
| | | 706CECB5264F6F6F001FBEB7 /* BUAdSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = BUAdSDK.framework; sourceTree = "<group>"; }; |
| | | 706CECB6264F6F71001FBEB7 /* BUFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = BUFoundation.framework; sourceTree = "<group>"; }; |
| | | 706CECB7264F6F72001FBEB7 /* BUCNAuxiliary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = BUCNAuxiliary.framework; sourceTree = "<group>"; }; |
| | | 706CECB8264F6F72001FBEB7 /* BUAdSDK.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = BUAdSDK.bundle; sourceTree = "<group>"; }; |
| | | 706CECBE264F76C1001FBEB7 /* PPTVNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PPTVNavView.h; sourceTree = "<group>"; }; |
| | | 706CECBF264F76C1001FBEB7 /* PPTVNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PPTVNavView.m; sourceTree = "<group>"; }; |
| | | 706CECC2264F7C31001FBEB7 /* PPTVDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PPTVDelegate.h; sourceTree = "<group>"; }; |
| | |
| | | 706CECDA264FB8CB001FBEB7 /* JSAPI.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JSAPI.m; sourceTree = "<group>"; }; |
| | | 706CECDC264FC2A7001FBEB7 /* PPTVBottomVIpVIew.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PPTVBottomVIpVIew.h; sourceTree = "<group>"; }; |
| | | 706CECDD264FC2A7001FBEB7 /* PPTVBottomVIpVIew.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PPTVBottomVIpVIew.m; sourceTree = "<group>"; }; |
| | | 70C4921026AC1D6200D044F7 /* BUAdSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = BUAdSDK.framework; sourceTree = "<group>"; }; |
| | | 70C4921126AC1D6400D044F7 /* BUCNAuxiliary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = BUCNAuxiliary.framework; sourceTree = "<group>"; }; |
| | | 70C4921226AC1D6600D044F7 /* BUFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = BUFoundation.framework; sourceTree = "<group>"; }; |
| | | 70C4921326AC1D6600D044F7 /* BUAdSDK.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = BUAdSDK.bundle; sourceTree = "<group>"; }; |
| | | 70D5934325EA1FAE00438F1A /* PPTVController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PPTVController.h; sourceTree = "<group>"; }; |
| | | 70D5934425EA1FAE00438F1A /* PPTVController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PPTVController.m; sourceTree = "<group>"; }; |
| | | 70ED36B6266233EC00E51E79 /* CWCarousel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CWCarousel.m; sourceTree = "<group>"; }; |
| | |
| | | 184DBB321DDB0BB00034B39B /* libc++abi.tbd in Frameworks */, |
| | | 18F5CA971E1C862D001F526F /* libc++.tbd in Frameworks */, |
| | | 7B389BE21D61B2F90043A2F2 /* libc++.1.tbd in Frameworks */, |
| | | 706CECBB264F6F72001FBEB7 /* BUCNAuxiliary.framework in Frameworks */, |
| | | 2D732550212D6B5200E09821 /* WebP.framework in Frameworks */, |
| | | 2D73254E212D626B00E09821 /* YYWebImage.framework in Frameworks */, |
| | | 2D73254C212D626600E09821 /* YYCache.framework in Frameworks */, |
| | | 706CECBA264F6F72001FBEB7 /* BUFoundation.framework in Frameworks */, |
| | | 2D73254A212D626000E09821 /* YYImage.framework in Frameworks */, |
| | | 7B8AC4F01D5D802200450285 /* CFNetwork.framework in Frameworks */, |
| | | 7B8AC5221D5D822F00450285 /* CoreMotion.framework in Frameworks */, |
| | | 70C4921526AC1D6600D044F7 /* BUCNAuxiliary.framework in Frameworks */, |
| | | 7B8AC50A1D5D80A500450285 /* Security.framework in Frameworks */, |
| | | 7B8AC4EA1D5D7FFC00450285 /* libz.tbd in Frameworks */, |
| | | 7B8AC4F61D5D804100450285 /* CoreMedia.framework in Frameworks */, |
| | |
| | | 7B389BDC1D61B1D10043A2F2 /* ModelIO.framework in Frameworks */, |
| | | 1845BB4B209BF212009C639B /* PassKit.framework in Frameworks */, |
| | | 7B8AC52C1D5D828000450285 /* libz.1.2.5.tbd in Frameworks */, |
| | | 706CECB9264F6F72001FBEB7 /* BUAdSDK.framework in Frameworks */, |
| | | 70C4921426AC1D6600D044F7 /* BUAdSDK.framework in Frameworks */, |
| | | 7B1FF0DF1D6711CF00E6C207 /* libiconv.tbd in Frameworks */, |
| | | 1877D1791DCAE119000CEC83 /* JavaScriptCore.framework in Frameworks */, |
| | | 1877D1771DCAE100000CEC83 /* CoreData.framework in Frameworks */, |
| | |
| | | 7B8AC5141D5D810A00450285 /* Accelerate.framework in Frameworks */, |
| | | 7B8AC5121D5D80F700450285 /* libxml2.tbd in Frameworks */, |
| | | 7B8AC5021D5D807F00450285 /* MapKit.framework in Frameworks */, |
| | | 70C4921626AC1D6600D044F7 /* BUFoundation.framework in Frameworks */, |
| | | 7B8AC4FE1D5D806A00450285 /* EventKitUI.framework in Frameworks */, |
| | | 7B8AC4EC1D5D800B00450285 /* libsqlite3.0.tbd in Frameworks */, |
| | | 8619598F33C90A9D1035A2BD /* Pods_BuWanVideo2_0.framework in Frameworks */, |
| | |
| | | 7042C94A2515A4FE0017F5D8 /* CSJ */ = { |
| | | isa = PBXGroup; |
| | | children = ( |
| | | 706CECB8264F6F72001FBEB7 /* BUAdSDK.bundle */, |
| | | 706CECB5264F6F6F001FBEB7 /* BUAdSDK.framework */, |
| | | 706CECB7264F6F72001FBEB7 /* BUCNAuxiliary.framework */, |
| | | 706CECB6264F6F71001FBEB7 /* BUFoundation.framework */, |
| | | 70C4921326AC1D6600D044F7 /* BUAdSDK.bundle */, |
| | | 70C4921026AC1D6200D044F7 /* BUAdSDK.framework */, |
| | | 70C4921126AC1D6400D044F7 /* BUCNAuxiliary.framework */, |
| | | 70C4921226AC1D6600D044F7 /* BUFoundation.framework */, |
| | | ); |
| | | path = CSJ; |
| | | sourceTree = "<group>"; |
| | |
| | | 189787871D925B5D006245B9 /* GoogleAdTableViewCell.xib in Resources */, |
| | | 70ED36CB26623CCC00E51E79 /* 04.jpg in Resources */, |
| | | 7B1FF0A71D67094500E6C207 /* CellOne.xib in Resources */, |
| | | 706CECBC264F6F72001FBEB7 /* BUAdSDK.bundle in Resources */, |
| | | 7B59CC191D5B16DC000B357F /* ADCollectionReusableView.xib in Resources */, |
| | | 18D94EAC1ECD7B6E00B6FA54 /* newADCollectionViewCell.xib in Resources */, |
| | | 18BC12B21EDEA87D001E2FB0 /* LiveListTableViewCell.xib in Resources */, |
| | |
| | | 7B41E9A71D4A04AE00F05CE2 /* Main.storyboard in Resources */, |
| | | 18F254201DF0090900826AD0 /* FuLiSheViewController.xib in Resources */, |
| | | 7BC24A571D5074FC00F6D2D9 /* shufflingCollectionReusableView.xib in Resources */, |
| | | 70C4921726AC1D6600D044F7 /* BUAdSDK.bundle in Resources */, |
| | | 7B59CC051D5B15C4000B357F /* IntroductionCollectionViewCell.xib in Resources */, |
| | | 18F5CAAC1E1CFE8C001F526F /* PublishGoodsViewController.xib in Resources */, |
| | | 18B1C2661DB5B26B00AB709B /* LICENSE in Resources */, |
| | |
| | | "$(PROJECT_DIR)/BuWanVideo2.0/DKADSet_iOS_SDK_1.2.0_iphoneOS", |
| | | "$(PROJECT_DIR)/BuWanVideo2.0/GDT_iOS_SDK", |
| | | ); |
| | | MARKETING_VERSION = 3.1.8; |
| | | MARKETING_VERSION = 3.1.1; |
| | | ONLY_ACTIVE_ARCH = YES; |
| | | OTHER_LDFLAGS = ( |
| | | "$(inherited)", |
| | |
| | | "$(PROJECT_DIR)/BuWanVideo2.0/DKADSet_iOS_SDK_1.2.0_iphoneOS", |
| | | "$(PROJECT_DIR)/BuWanVideo2.0/GDT_iOS_SDK", |
| | | ); |
| | | MARKETING_VERSION = 3.1.8; |
| | | MARKETING_VERSION = 3.1.1; |
| | | ONLY_ACTIVE_ARCH = NO; |
| | | OTHER_LDFLAGS = ( |
| | | "$(inherited)", |
| | |
| | | uuid = "297DA90A-ED47-4DCA-BC7A-5F76C81057DB" |
| | | type = "0" |
| | | version = "2.0"> |
| | | <Breakpoints> |
| | | <BreakpointProxy |
| | | BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> |
| | | <BreakpointContent |
| | | uuid = "4FDB6570-9BF4-4B73-BD73-DA65D2E09288" |
| | | shouldBeEnabled = "Yes" |
| | | ignoreCount = "0" |
| | | continueAfterRunningActions = "No" |
| | | filePath = "BuWanVideo2.0/Recommend/lib/OC_CWCarousel/CWCarouselProtocol.h" |
| | | startingColumnNumber = "9223372036854775807" |
| | | endingColumnNumber = "9223372036854775807" |
| | | startingLineNumber = "12" |
| | | endingLineNumber = "12" |
| | | landmarkName = "unknown" |
| | | landmarkType = "0"> |
| | | </BreakpointContent> |
| | | </BreakpointProxy> |
| | | </Breakpoints> |
| | | </Bucket> |
| | |
| | | |
| | | @property (nonatomic) refrshData refrshData; |
| | | |
| | | @property (nonatomic, copy) NSString *url; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
| | |
| | | |
| | | [self.webView customJavascriptDialogLabelTitles:@{@"alertTitle":@"Notification",@"alertBtn":@"OK"}]; |
| | | |
| | | //192.168.3.135 |
| | | |
| | | NSString *url = @"http://192.168.3.122:8848/tejia-web/dsbridge-test.html"; |
| | | //[[NSUserDefaults standardUserDefaults] objectForKey:VIPLINK]; |
| | | NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; |
| | | NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:_url]]; |
| | | //[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://192.168.3.122:8848/tejia-web/dsbridge-test.html"]]; |
| | | [self.webView loadRequest:request]; |
| | | } |
| | | |
| | |
| | | "GetRewardAfterPlaying" = "قم بإستكمال التشغيل للحصول على المكافآت"; |
| | | "Wan" = "10 ألف"; |
| | | "ViewDetail" = "عرض"; |
| | | "CommitScore" = "%@ تصنيف (تصنيفات)"; |
| | |
| | | "GetRewardAfterPlaying" = "Bis zum Ende wiedergeben, um Prämien zu erhalten"; |
| | | "Wan" = "Zehntausend"; |
| | | "ViewDetail" = "Ansehen"; |
| | | "CommitScore" = "%@ Rating(s)"; |
| | | // Icon |
| | |
| | | "ContinuePlaying" = "Keep on"; |
| | | "GetRewardAfterPlaying" = "Finish playing to get rewards!"; |
| | | "ViewDetail" = "View"; |
| | | "CommitScore" = "%@ score"; |
| | | // Icon |
| | |
| | | "GetRewardAfterPlaying" = "Terminar la reproducción para reclamar recompensas"; |
| | | "Wan" = "10"; |
| | | "ViewDetail" = "Ver"; |
| | | "CommitScore" = "%@ valoración(es)"; |
| | | // Icon |
| | |
| | | "GetRewardAfterPlaying" = "Terminez la lecture pour obtenir vos récompenses"; |
| | | "Wan" = "10 000"; |
| | | "ViewDetail" = "Voir"; |
| | | "CommitScore" = "%@ cote(s)"; |
| | | // Icon |
| | |
| | | "GetRewardAfterPlaying" = "रिवॉर्ड्स का दावा करने के लिए पूरा देखें"; |
| | | "Wan" = "10 हज़ार"; |
| | | "ViewDetail" = "देखें"; |
| | | "CommitScore" = "%@ रेटिंग"; |
| | | // Icon |
| | |
| | | "GetRewardAfterPlaying" = "Selesaikan pemutaran untuk mendapatkan reward"; |
| | | "Wan" = "10 ribu"; |
| | | "ViewDetail" = "Lihat"; |
| | | "CommitScore" = "%@ peringkat";; |
| | | // Icon |
| | |
| | | "GetRewardAfterPlaying" = "Riproduci tutto per richiedere le ricompense"; |
| | | "Wan" = "10 mila"; |
| | | "ViewDetail" = "Visualizza"; |
| | | "CommitScore" = "Valutazione(i) %@"; |
| | |
| | | "ContinuePlaying" = "つづける"; |
| | | "GetRewardAfterPlaying" = "遊んで報酬をゲット!"; |
| | | "ViewDetail" = "チェック"; |
| | | "CommitScore" = "評価数:%@"; |
| | | // Icon |
| | |
| | | "ContinuePlaying" = "계속하다"; |
| | | "GetRewardAfterPlaying" = "리워드는 게임 플레이 이후에 지급됩니다."; |
| | | "ViewDetail" = "체크"; |
| | | "CommitScore" = "%@ 평점"; |
| | | // Icon |
| | |
| | | "GetRewardAfterPlaying" = "Finalizar a execução para solicitar as premiações"; |
| | | "Wan" = "10 mil"; |
| | | "ViewDetail" = "Visualizar"; |
| | | "CommitScore" = "%@ classificação(ões)"; |
| | | // Icon |
| | |
| | | "GetRewardAfterPlaying" = "Завершите просмотр, чтобы получить награду"; |
| | | "Wan" = "10 тысяч"; |
| | | "ViewDetail" = "Вид"; |
| | | "CommitScore" = "Оценки: %@"; |
| | |
| | | "GetRewardAfterPlaying" = "เล่นจนจบเพื่อรับรางวัล"; |
| | | "Wan" = "1 หมื่น"; |
| | | "ViewDetail" = "ดู"; |
| | | "CommitScore" = "%@ คะแนน"; |
| | |
| | | "GetRewardAfterPlaying" = "Chơi hết để giành phần thưởng"; |
| | | "Wan" = "10 nghìn"; |
| | | "ViewDetail" = "Xem"; |
| | | "CommitScore" = "%@ xếp hạng"; |
| | |
| | | "ContinuePlaying" = "继续试玩"; |
| | | "GetRewardAfterPlaying" = "试玩后才可领取奖励"; |
| | | "ViewDetail" = "查看详情"; |
| | | "CommitScore" = "%@个评分"; |
| | | // Icon |
| | |
| | | "GetRewardAfterPlaying" = "試玩後才可領取獎勵"; |
| | | "Wan" = "萬"; |
| | | "ViewDetail" = "查看詳情"; |
| | | "CommitScore" = "%@個評分"; |
| | |
| | | #import <BUAdSDK/BUMaterialMeta.h> |
| | | #import <BUAdSDK/BUPlayerPublicDefine.h> |
| | | #import <BUAdSDK/BUVideoAdView.h> |
| | | #import <BUAdSDK/BUVideoAdDelegate.h> |
| | | #import <BUAdSDK/BUVideoAdReportor.h> |
| | | #import <BUAdSDK/BUMopubAdMarkUpDelegate.h> |
| | | |
| | | |
| | | ///customize dislike style |
| | | #import <BUAdSDK/BUDislike.h> |
| | | #import <BUAdSDK/BUDislikeWords.h> |
| | | #import <BUAdSDK/BUDislikeReportor.h> |
| | | #import <BUAdSDK/BUPersonalizationPrompts.h> |
| | | |
| | | /// native ads |
| | | #import <BUAdSDK/BUNativeAd.h> |
| | |
| | | |
| | | /// splash ads |
| | | #import <BUAdSDK/BUSplashAdView.h> |
| | | #import <BUAdSDK/BUSplashZoomOutView.h> |
| | | |
| | | /// rewarded video ads |
| | | #import <BUAdSDK/BURewardedVideoModel.h> |
| | |
| | | |
| | | /// test tools |
| | | #import <BUAdSDK/BUAdSDKTestToolManager.h> |
| | | |
| | | /// pangle view |
| | | #import <BUAdSDK/PangleNativeBannerView.h> |
| | | #import <BUAdSDK/PangleNativeInterstitialView.h> |
| | |
| | | /// Custom set the CCPA of the user,CCPA is the short of General Data Protection Regulation,the interface only works in USA. |
| | | /// CCPA 0: "sale" of personal information is permitted, 1: user has opted out of "sale" of personal information -1: default |
| | | @property (nonatomic, strong) NSNumber *CCPA; |
| | | |
| | | /// Custom set the debugLog to print debug Log. |
| | | /// debugLog 0: close debug log, 1: open debug log. |
| | | @property (nonatomic, strong) NSNumber *debugLog; |
| | | |
| | | @property (nonatomic, strong) NSNumber *themeStatus; |
| | | |
| | | |
| | | |
| | | |
| | | /// Custom set the AB vid of the user. Array element type is NSNumber |
| | | @property (nonatomic, strong) NSArray<NSNumber *> *abvids; |
| | | |
| | | /// Custom set the tob ab sdk version of the user. |
| | | @property (nonatomic, copy) NSString *abSDKVersion; |
| | | @property (atomic, copy) NSString *abSDKVersion; |
| | | |
| | | /// Custom set idfa value |
| | | /// You can change its value at any time |
| | |
| | | BUUnionMedialCheckError = 40026, // Non-international account request for overseas delivery system |
| | | BUUnionSlotIDRenderMthodNoMatch = 40029,// The rendering method for slot ID does not match. |
| | | |
| | | BUErrorCodeSysError = 50001 // ad server error |
| | | |
| | | BUUnionCpidChannelCodeError = 40030, // Huawei browse impex cpid channeld code does not match. |
| | | BUUnionInternationalRequestCurrencyTypeError = 40031, // International request currency type is empty. |
| | | BUUnionOpenRTBRequestTokenError =40032, // OpenRTB request token is empty. |
| | | BUUnionHardCodeError = 40033, // Hard code not return ads, return message does not adjust. |
| | | |
| | | |
| | | BUUnionSDKVersionTooLow =40041, // SDK version is too low. |
| | | BUUnionNewInterstitialStyleVersionError = 40042, // New interstitial style use sdk version is too low. Plese upgrade SDK version to 3.5.5.0. |
| | | BUUnionPreviewFlowInvalid =40043, // Preview flow invalid. |
| | | |
| | | BUErrorCodeSysError = 50001, // ad server error |
| | | |
| | | |
| | | BUErrorCodeNetworkError = 98764, // network error. |
| | | BUErrorCodeUndefined = 98765, // error undefined |
| | | }; |
| | |
| | | #import "BUAdSDKDefines.h" |
| | | #import "BUMopubAdMarkUpDelegate.h" |
| | | |
| | | typedef NS_ENUM(NSInteger, BUAdSDKInitializationState) { |
| | | BUAdSDKInitializationStateNotReady = 0, |
| | | BUAdSDKInitializationStateReady = 1 |
| | | }; |
| | | |
| | | typedef void (^BUConfirmGDPR)(BOOL isAgreed); |
| | | |
| | | typedef void (^BUCompletionHandler)(BOOL success,NSError *error); |
| | |
| | | |
| | | @property (nonatomic, copy, readonly, class) NSString *SDKVersion; |
| | | |
| | | /// The PangleSDK initialization state |
| | | @property (nonatomic, assign, readonly, class) BUAdSDKInitializationState initializationState; |
| | | |
| | | /// The synchronize initialization method of Pangle |
| | | /// @param completionHandler Callback to the initialization state of the calling thread |
| | | + (void)startWithSyncCompletionHandler:(BUCompletionHandler)completionHandler; |
| | |
| | | - (void)loadAdData; |
| | | |
| | | /** |
| | | Ad slot material id |
| | | */ |
| | | - (NSString *)getAdCreativeToken; |
| | | |
| | | /** |
| | | Display video ad. |
| | | @param rootViewController : root view controller for displaying ad. |
| | | @return : whether it is successfully displayed. |
| | |
| | | BUFeedADModeImagePortrait = 16, |
| | | BUFeedADModeSquareImage = 33, //SquareImage Currently it exists only in the oversea now. V3200 add |
| | | BUFeedADModeSquareVideo = 50, //SquareVideo Currently it exists only in the oversea now. V3200 add |
| | | BUFeedADModeUnionSplashVideo = 154, // Video splash, V3800 add |
| | | }; |
| | | |
| | | @interface BUMaterialMeta : NSObject <NSCoding> |
| | |
| | | /// media configuration parameters. |
| | | @property (nonatomic, copy) NSDictionary *mediaExt; |
| | | |
| | | /// adx name, if it exists, it is recommended to display this text |
| | | @property (nonatomic, copy) NSString *ADXName; |
| | | |
| | | - (instancetype)initWithDictionary:(NSDictionary *)dict error:(NSError * __autoreleasing *)error; |
| | | |
| | |
| | | */ |
| | | - (void)loadAdData; |
| | | |
| | | /** |
| | | Ad slot material id |
| | | */ |
| | | - (NSString *)getAdCreativeToken; |
| | | |
| | | @end |
| | | |
| | | |
| | |
| | | */ |
| | | - (void)render; |
| | | |
| | | /** |
| | | Ad slot material id |
| | | */ |
| | | - (NSString *)getAdCreativeToken; |
| | | |
| | | |
| | | @end |
| | | |
| | |
| | | |
| | | - (void)loadAdData; |
| | | |
| | | /** |
| | | Ad slot material id |
| | | */ |
| | | - (NSString *)getAdCreativeToken; |
| | | |
| | | @end |
| | | |
| | | @interface BUNativeExpressBannerView (Deprecated) |
| | |
| | | - (void)loadAdData; |
| | | |
| | | /** |
| | | Ad slot material id |
| | | */ |
| | | - (NSString *)getAdCreativeToken; |
| | | |
| | | /** |
| | | Display video ad. |
| | | @param rootViewController : root view controller for displaying ad. |
| | | @return : whether it is successfully displayed. |
| | |
| | | */ |
| | | - (BOOL)showAdFromRootViewController:(UIViewController *)rootViewController; |
| | | |
| | | /** |
| | | Ad slot material id |
| | | */ |
| | | - (NSString *)getAdCreativeToken; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
| | |
| | | @interface BUNativeExpressRewardedVideoAd : NSObject <BUMopubAdMarkUpDelegate> |
| | | @property (nonatomic, strong) BURewardedVideoModel *rewardedVideoModel; |
| | | @property (nonatomic, weak, nullable) id<BUNativeExpressRewardedVideoAdDelegate> delegate; |
| | | @property (nonatomic, weak, nullable) id<BUNativeExpressRewardedVideoAdDelegate> rewardPlayAgainInteractionDelegate; |
| | | |
| | | /// media configuration parameters. |
| | | @property (nonatomic, copy, readonly) NSDictionary *mediaExt; |
| | | |
| | |
| | | */ |
| | | - (instancetype)initWithSlot:(BUAdSlot *)slot rewardedVideoModel:(BURewardedVideoModel *)model; |
| | | |
| | | /** |
| | | Ad slot material id |
| | | */ |
| | | - (NSString *)getAdCreativeToken; |
| | | |
| | | - (void)loadAdData; |
| | | |
| | | /** |
| | |
| | | - (void)loadAdData; |
| | | |
| | | /** |
| | | Ad slot material id |
| | | */ |
| | | - (NSString *)getAdCreativeToken; |
| | | |
| | | /** |
| | | Remove splash view. |
| | | Stop the countdown as soon as you call this method. |
| | | 移除开屏视图 |
| | |
| | | @interface BURewardedVideoAd : NSObject <BUMopubAdMarkUpDelegate> |
| | | @property (nonatomic, strong) BURewardedVideoModel *rewardedVideoModel; |
| | | @property (nonatomic, weak, nullable) id<BURewardedVideoAdDelegate> delegate; |
| | | |
| | | @property (nonatomic, weak, nullable) id<BURewardedVideoAdDelegate> rewardPlayAgainInteractionDelegate; |
| | | /** |
| | | Whether material is effective. |
| | | Setted to YES when data is not empty and has not been displayed. |
| | |
| | | - (void)loadAdData; |
| | | |
| | | /** |
| | | Ad slot material id |
| | | */ |
| | | - (NSString *)getAdCreativeToken; |
| | | |
| | | /** |
| | | Display video ad. |
| | | @param rootViewController : root view controller for displaying ad. |
| | | @return : whether it is successfully displayed. |
| | |
| | | */ |
| | | - (void)loadAdData; |
| | | |
| | | /** |
| | | Ad slot material id |
| | | */ |
| | | - (NSString *)getAdCreativeToken; |
| | | |
| | | @end |
| | | |
| | | |
| | |
| | | |
| | | @interface NSData (BUBase64) |
| | | |
| | | + (NSData *)dataWithBase64EncodedString:(NSString *)string; |
| | | - (NSString *)base64EncodedStringWithWrapWidth:(NSUInteger)wrapWidth; |
| | | - (NSString *)base64EncodedString; |
| | | + (NSData *)bu_dataWithBase64EncodedString:(NSString *)string; |
| | | - (NSString *)bu_base64EncodedStringWithWrapWidth:(NSUInteger)wrapWidth; |
| | | - (NSString *)bu_base64EncodedString; |
| | | |
| | | @end |
| | | |
| | | |
| | | @interface NSString (BUBase64) |
| | | |
| | | + (NSString *)stringWithBase64EncodedString:(NSString *)string; |
| | | - (NSString *)base64EncodedStringWithWrapWidth:(NSUInteger)wrapWidth; |
| | | - (NSString *)base64EncodedString; |
| | | - (NSString *)base64DecodedString; |
| | | - (NSData *)base64DecodedData; |
| | | + (NSString *)bu_stringWithBase64EncodedString:(NSString *)string; |
| | | - (NSString *)bu_base64EncodedStringWithWrapWidth:(NSUInteger)wrapWidth; |
| | | - (NSString *)bu_base64EncodedString; |
| | | - (NSString *)bu_base64DecodedString; |
| | | - (NSData *)bu_base64DecodedData; |
| | | |
| | | @end |
| | |
| | | #define BUCheckValidArray(__aArray) (__aArray && [__aArray isKindOfClass:[NSArray class]] && [__aArray count]) |
| | | #define BUCheckValidDictionary(__aDictionary) (__aDictionary && [__aDictionary isKindOfClass:[NSDictionary class]] && [__aDictionary count]) |
| | | #define BUCheckValidDate(__aDate) (__aDate && [__aDate isKindOfClass:[NSDate class]]) |
| | | #define BUCheckValidData(__aData) (__aData && [__aData isKindOfClass:[NSData class]]) |
| | | |
| | | /** Color String**/ |
| | | #define BUColorString(__string) [UIColor bu_colorWithHexString:(__string)] |
New file |
| | |
| | | // |
| | | // BUDownloadSpeedServer.h |
| | | // BUFoundation |
| | | // |
| | | // Created by bytedance on 2021/4/22. |
| | | // |
| | | |
| | | #import <Foundation/Foundation.h> |
| | | |
| | | @class BUDownloadSpeedModel; |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | @interface BUDownloadSpeedServer : NSObject |
| | | |
| | | + (instancetype)server; |
| | | |
| | | - (void)startDownloadWithUrl:(NSURL *)url; |
| | | |
| | | - (BUDownloadSpeedModel *)downloadingWithUrl:(NSURL *)url; |
| | | |
| | | - (void)finishDownloadWithUrl:(NSURL *)url; |
| | | |
| | | - (double)downloadSpeeds; |
| | | |
| | | @end |
| | | |
| | | @interface BUDownloadSpeedModel : NSObject |
| | | |
| | | @property (atomic, assign) NSTimeInterval startDownloadTime; |
| | | |
| | | @property (atomic, assign) NSTimeInterval finishDownloadTime; |
| | | |
| | | @property (atomic, assign) NSInteger downloadSize; |
| | | |
| | | @property (nonatomic, assign) double speed; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
| | |
| | | |
| | | CTTelephonyNetworkInfo *BUDefaultTelephonyNetworkInfo(void); |
| | | |
| | | @interface BUEnvironment : NSObject |
| | | |
| | | @end |
| | | |
| | | #endif /* BUEnvironment_h */ |
| | |
| | | |
| | | #import <BUFoundation/BUZipArchive.h> |
| | | #import <BUFoundation/BUGeckoPreloadManager.h> |
| | | |
| | | #import <BUFoundation/BUDownloadSpeedServer.h> |
| | | #import <BUFoundation/BU_ZFPlayer.h> |
| | | |
| | | /************************************ ThirdParty***********************************/ |
| | |
| | | #define BU_LogDebugD(BULogType, frmt, ...) BU_LogBaseD(debug, BULogType, frmt, ##__VA_ARGS__) |
| | | #define BU_LogVerboseD(BULogType, frmt, ...) BU_LogBaseD(verbose, BULogType, frmt, ##__VA_ARGS__) |
| | | #define BU_LogInternalD(BULogType, frmt, ...) BU_LogBaseD(internal, BULogType, frmt, ##__VA_ARGS__) |
| | | |
| | | #define BU_LogServerD(BULogType, frmt, ...) BU_LogBaseD(server, BULogType, frmt, ##__VA_ARGS__) |
| | | #define BU_LogBaseD(level, BULogType, frmt, ...) [BULogManager level##LogWithFormat:@"[PangleUnion-%@]-[%s]-[%@]%@", BUSDKVersion, #level, BULogType, [NSString stringWithFormat:frmt, ##__VA_ARGS__]]; |
| | | |
| | | |
| | |
| | | BULogManagerLevelVerbose, |
| | | }; |
| | | |
| | | typedef NS_ENUM(NSInteger, BULogServerControlMode) { |
| | | BULogManagerServerControlCloseMode, |
| | | BULogManagerServerControlDebugMode, |
| | | }; |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | @interface BULogManager : NSObject |
| | | |
| | | @property (nonatomic, assign) BULogManagerLevel level; |
| | | @property (nonatomic, assign) BULogServerControlMode mode; |
| | | |
| | | + (void)errorLogWithFormat:(NSString *)format, ...; |
| | | + (void)warningLogWithFormat:(NSString *)format, ...; |
| | |
| | | + (void)debugLogWithFormat:(NSString *)format, ...; |
| | | + (void)verboseLogWithFormat:(NSString *)format, ...; |
| | | + (void)internalLogWithFormat:(NSString *)format, ...; |
| | | + (void)serverLogWithFormat:(NSString *)format, ...; |
| | | |
| | | + (instancetype)sharedInstance; |
| | | @end |
| | |
| | | |
| | | - (void)replaceCurrentItemWithPlayerItem:(BUPlayerItem *)item; |
| | | |
| | | |
| | | - (void)insertGaosiMohuWithLayer:(CALayer *)layer; |
| | | |
| | | - (void)insertGaosiMohuWithView:(UIView *)view; |
| | | |
| | | @end |
| | | |
| | | @interface BUPlayer (BUPlayerControl) |
| | |
| | | This method is called when the player is ready. |
| | | */ |
| | | - (void)playerReadyToPlay:(BUPlayer *)player; |
| | | |
| | | /** |
| | | This method is called when the player is ready, while application in background. |
| | | */ |
| | | - (void)playerReadyToPlayWhenApplicationEnterBackground:(BUPlayer *)player; |
| | | |
| | | /** |
| | | This method is called when the player plays completion or occurrs error. |
| | | */ |
| | |
| | | */ |
| | | + (NSDictionary*)bu_parametersOfURLString:(NSString*)urlString DEPRECATED_MSG_ATTRIBUTE("使用 `bu_parametersOfURLQueryString` 代替此方法"); |
| | | + (NSDictionary*)bu_parametersOfURLQueryString:(NSString*)urlString; |
| | | + (NSDictionary*)bu_convertStringToDictionary:(NSString*)string; |
| | | |
| | | /* |
| | | * |
| | | url字符串拼接参数,需要判断是否是第一个 |
| | | */ |
| | | + (NSString *)bu_urlStringWithOriginUrlString:(NSString *)originUrlString appendParameters:(NSDictionary *)parameters; |
| | | |
| | | + (NSString *)bu_urlStringWithBaseUrlString:(NSString *)baseUrlString requestURLString:(NSString *)requestURLString; |
| | | |
| | | + (NSString *)bu_urlStringWithUrlString:(NSString *)urlString parameterString:(NSString *)parameterString; |
| | | |
| | | /* |
| | | * 格式转化 |
| | | 222222 -> 222,222 |
| | | */ |
| | | + (NSString *)bu_convertNumberFormatter:(NSString *)str; |
| | | |
| | | @end |
| | | |
| | | |
| | |
| | | + (NSString *)randomStringWithCount:(NSUInteger)count; |
| | | @end |
| | | |
| | | @interface NSString (BU_Size) |
| | | |
| | | - (CGSize)bu_boundingRectWithSize:(CGSize)size font:(UIFont *)font; |
| | | |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
| | |
| | | #import "JSAPI.h" |
| | | #import "dsbridge.h" |
| | | |
| | | #define Version [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] //build号 |
| | | #define Package @"com.yeshi.buwanshequ.ios" //相当于包名 |
| | | |
| | | @implementation JSAPI |
| | | |
| | | - (NSString *)login:(NSString *)msg { |
| | |
| | | - (NSString *)tryPlayFinish:(NSString *)msg { |
| | | [[NSNotificationCenter defaultCenter] postNotificationName:@"tryPlayFinish" object:nil]; |
| | | return msg; |
| | | } |
| | | |
| | | - (NSString *)getUid:(NSString *)msg { |
| | | NSString *ids = [[NSUserDefaults standardUserDefaults] objectForKey:@"LoginUid"]; |
| | | return ids?:@""; |
| | | } |
| | | |
| | | - (NSString *)getRequestBaseParams:(id)msg { |
| | | |
| | | NSMutableDictionary *parms = [NSMutableDictionary new]; |
| | | [parms addEntriesFromDictionary:msg]; |
| | | |
| | | if (!msg[@"Method"]) { |
| | | [parms setObject:@"1" forKey:@"Method"]; |
| | | } |
| | | |
| | | [parms setObject:@"ios" forKey:@"Platform"]; |
| | | NSString *sign; |
| | | if ([YTHsharedManger startManger].Uid) { |
| | | [parms setObject:[YTHsharedManger startManger].Uid forKey:@"Uid"]; |
| | | sign = [NSString stringWithFormat:@"%@%@%@", parms[@"Method"], [YTHsharedManger startManger].Uid,@"1"]; |
| | | |
| | | }else{ |
| | | sign = [NSString stringWithFormat:@"%@%@%@", parms[@"Method"],[[UIDevice currentDevice].identifierForVendor UUIDString],@"1"]; |
| | | } |
| | | |
| | | [parms setObject:Version forKey:@"Version"]; |
| | | [parms setObject:Package forKey:@"Package"]; |
| | | [parms setObject:@"1" forKey:@"System"]; |
| | | [parms setObject:[NSString md5:sign] forKey:@"Sign"]; |
| | | [parms setObject:[[UIDevice currentDevice].identifierForVendor UUIDString] forKey:@"Device"]; |
| | | |
| | | NSString *json = [self jsonStringToJsonData:parms]; |
| | | return json; |
| | | } |
| | | |
| | | - (NSString *)showLoading:(id)msg { |
| | | dispatch_async(dispatch_get_main_queue(), ^{ |
| | | [SVProgressHUD show]; |
| | | }); |
| | | |
| | | return @""; |
| | | } |
| | | |
| | | - (NSString *)hideLoading:(id)msg { |
| | | dispatch_async(dispatch_get_main_queue(), ^{ |
| | | [SVProgressHUD dismiss]; |
| | | }); |
| | | return @""; |
| | | } |
| | | |
| | | - (NSString *)toast:(NSString *)msg { |
| | | dispatch_async(dispatch_get_main_queue(), ^{ |
| | | UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:msg preferredStyle:UIAlertControllerStyleAlert]; |
| | | [[self fetchCurrentViewController] presentViewController:alert animated:YES completion:^{ |
| | | //延时执行 |
| | | dispatch_queue_t q = dispatch_get_main_queue(); |
| | | dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.2 * NSEC_PER_SEC), q, ^{ |
| | | [alert dismissViewControllerAnimated:YES completion:nil]; |
| | | }); |
| | | }]; |
| | | }); |
| | | return @""; |
| | | } |
| | | |
| | | - (NSString *)playFinish:(NSString *)msg { |
| | |
| | | NSInteger timeSp = [datenow timeIntervalSince1970]*1000; |
| | | return timeSp; |
| | | } |
| | | |
| | | - (UIViewController *)fetchCurrentViewController { |
| | | UIViewController* currentViewController = [UIApplication sharedApplication].keyWindow.rootViewController; |
| | | BOOL runLoopFind = YES; |
| | | while (runLoopFind) { |
| | | if (currentViewController.presentedViewController) { |
| | | currentViewController = currentViewController.presentedViewController; |
| | | } else if ([currentViewController isKindOfClass:[UINavigationController class]]) { |
| | | UINavigationController* navigationController = (UINavigationController* )currentViewController; |
| | | currentViewController = [navigationController.childViewControllers lastObject]; |
| | | } else if ([currentViewController isKindOfClass:[UITabBarController class]]) { |
| | | UITabBarController* tabBarController = (UITabBarController* )currentViewController; |
| | | currentViewController = tabBarController.selectedViewController; |
| | | } else { |
| | | NSUInteger childViewControllerCount = currentViewController.childViewControllers.count; |
| | | if (childViewControllerCount > 0) { |
| | | currentViewController = currentViewController.childViewControllers.lastObject; |
| | | return currentViewController; |
| | | } else { |
| | | return currentViewController; |
| | | } |
| | | } |
| | | } |
| | | return currentViewController; |
| | | } |
| | | @end |
| | |
| | | |
| | | - (void)viewDidLoad { |
| | | [super viewDidLoad]; |
| | | |
| | | self.navigationController.navigationBar.barTintColor = [UIColor blackColor]; |
| | | //获取本地的观看记录数据 |
| | | historyListDataArray = [[NSMutableArray alloc]initWithContentsOfFile:HISTORYFILE]; |
| | | |
| | |
| | | [self promptView]; |
| | | } |
| | | |
| | | - (void)viewWillAppear:(BOOL)animated |
| | | { |
| | | [super viewWillAppear:animated]; |
| | | [self.navigationController setNavigationBarHidden:NO animated:animated]; |
| | | [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; |
| | | } |
| | | |
| | | - (void)viewWillDisappear:(BOOL)animated |
| | | { |
| | | [super viewWillDisappear:animated]; |
| | | [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; |
| | | } |
| | | |
| | | /** |
| | | 设置导航栏 |
| | | */ |
| | |
| | | self.viewBG.sd_layout.leftSpaceToView(self, 0).topSpaceToView(self, kStatusBarH).rightSpaceToView(self, 0).bottomSpaceToView(self, 0); |
| | | self.buttonBack.sd_layout.leftSpaceToView(self.viewBG, 10).centerYEqualToView(self.viewBG).widthIs(30).heightIs(30); |
| | | |
| | | self.labelTitle.sd_layout.leftSpaceToView(self.buttonBack, 10).centerYEqualToView(self.viewBG).rightSpaceToView(self.viewBG, 0).autoHeightRatio(0); |
| | | self.labelTitle.sd_layout.centerXEqualToView(self.viewBG).centerYEqualToView(self.viewBG).widthIs(200).autoHeightRatio(0); |
| | | } |
| | | |
| | | - (void)back { |
| | |
| | | _viewPPTVVip.buyVip = ^{ |
| | | @strongify(self) |
| | | BuyVipController *vc = [[BuyVipController alloc] init]; |
| | | vc.url = [[NSUserDefaults standardUserDefaults] objectForKey:VIPLINK]; |
| | | @weakify(self) |
| | | vc.refrshData = ^{ |
| | | @strongify(self) |
| | |
| | | #import "ListController.h" |
| | | #import "XYRDetailViewController.h" |
| | | #import "OnlySpecialController.h" |
| | | #import "BuyVipController.h" |
| | | |
| | | #import "RecommendHeaderViewCell.h" |
| | | #import "ToDayHotCell.h" |
| | |
| | | } |
| | | |
| | | - (void)loadFooter:(void(^)(void))handel { |
| | | [[YTHNetInterface startInterface] getHomeTypeWithUid:[YTHsharedManger startManger].Uid vtid:_parms[@"Id"] withSystem:@"1" DataKey:_parms[@"DataKey"] PageSize:10 Page:_page withBlock:^(BOOL isSuccessful, id result, NSString *error) { |
| | | [[YTHNetInterface startInterface] getRecommendCategoryVideoListWithUid:[YTHsharedManger startManger].Uid withVideoType:_parms[@"Id"] withSystem:@"1" withBlock:^(BOOL isSuccessful, id result, NSString *error) { |
| | | |
| | | if (isSuccessful) { |
| | | if (_page == 1) { |
| | |
| | | dispatch_async(dispatch_get_main_queue(), ^{ |
| | | [self.arrayContent addObjectsFromArray:self.arrayTemp]; |
| | | [self.collectionView reloadData]; |
| | | }); |
| | | } |
| | | |
| | | [self.collectionView.mj_header endRefreshing]; |
| | | [self.collectionView.mj_footer endRefreshing]; |
| | | |
| | |
| | | } |
| | | } |
| | | handel(); |
| | | }); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | - (void)setHeaderRefresh { |
| | | self.collectionView.mj_header=[MJRefreshNormalHeader headerWithRefreshingBlock:^{ |
| | | self.page = 1; |
| | | [self loadFooter:^{ |
| | | |
| | | }]; |
| | | }]; |
| | | } |
| | | |
| | |
| | | } else if (LinkType == 2){//网页(网页) |
| | | NSString *s = [parms[@"Params"] stringByReplacingOccurrencesOfString:@"\\"withString:@""]; |
| | | NSDictionary *Params = [self dictionaryWithJsonString:s]; |
| | | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[Params objectForKey:@"url"]]]; |
| | | BuyVipController *vc = [[BuyVipController alloc] init]; |
| | | vc.url = [Params objectForKey:@"url"]; |
| | | vc.hidesBottomBarWhenPushed = YES; |
| | | [self.navigationController pushViewController:vc animated:YES]; |
| | | |
| | | } else if (LinkType == 3){//专辑 |
| | | OnlySpecialController *OnlySpecial =[OnlySpecialController new]; |
| | |
| | | } else { |
| | | NSUInteger ids = [_parms[@"Id"] integerValue]; |
| | | if (ids == 150 || ids == 151 || ids == 152 ||ids == 153) { |
| | | return CGSizeMake((KScreenW - 9 - 9 - 6 - 6) / 3, 201); |
| | | return CGSizeMake((KScreenW-9-9-6-6)/3, 41+(((KScreenW-9-9-6-6)/3))*1.39); |
| | | |
| | | } else { |
| | | return CGSizeMake((KScreenW - 9 - 9 - 8) / 2, 140); |
| | | return CGSizeMake((KScreenW-9-9-8)/2, 41+(((KScreenW-9-9-8)/2))*0.562); |
| | | } |
| | | } |
| | | return CGSizeMake(KScreenW, 35); |
| | | } |
| | | |
| | | //协议中的方法,用于返回整个CollectionView上、左、下、右距四边的间距 |
| | |
| | | [_collectionView registerClass:[RecommendChangeFooterView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"RecommendChangeFooterView"]; |
| | | |
| | | [_collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"UICollectionReusableView"]; |
| | | |
| | | [self setHeaderRefresh]; |
| | | } |
| | | return _collectionView; |
| | | } |
| | |
| | | |
| | | #import "MainBaseController.h" |
| | | #import "SearchController.h" |
| | | #import "LookNoteController.h" |
| | | |
| | | #import "RecommendNavView.h" |
| | | |
| | |
| | | |
| | | - (void)setupMainViewConfig { |
| | | [self.view addSubview:self.viewRecommendNav]; |
| | | __weak typeof(self) weakSelf = self; |
| | | @weakify(self) |
| | | self.viewRecommendNav.onSearch = ^{ |
| | | @strongify(self) |
| | | SearchController *vc = [[SearchController alloc] init]; |
| | | vc.ptitle = [YTHsharedManger startManger].searchTitle; |
| | | vc.hidesBottomBarWhenPushed = YES; |
| | | [weakSelf.navigationController pushViewController:vc animated:YES]; |
| | | [self.navigationController pushViewController:vc animated:YES]; |
| | | }; |
| | | self.viewRecommendNav.onRecord = ^{ |
| | | @strongify(self) |
| | | LookNoteController *LookNoteLookNoteVC=[[LookNoteController alloc] init]; |
| | | [self.navigationController pushViewController:LookNoteLookNoteVC animated:YES]; |
| | | }; |
| | | } |
| | | |
| | |
| | | flowLayout.itemWidth = KScreenW - 20; |
| | | flowLayout.itemSpace_H = 5; |
| | | |
| | | CWCarousel *carousel = [[CWCarousel alloc] initWithFrame:CGRectMake(0, 0, KScreenW, 156 * bannerSizeRate) |
| | | CWCarousel *carousel = [[CWCarousel alloc] initWithFrame:CGRectMake(0, 0, KScreenW, KScreenW*bannerSizeRate) |
| | | delegate:self |
| | | datasource:self |
| | | flowLayout:flowLayout]; |
| | |
| | | |
| | | |
| | | } else { |
| | | CGRect frame = CGRectMake(10, 0, KScreenW - 20, 156 * bannerSizeRate); |
| | | CGRect frame = CGRectMake(10, 0, KScreenW - 20, (KScreenW - 20)*bannerSizeRate); |
| | | //if (images && images.count != 0) { |
| | | SDCycleScrollView *cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:frame delegate:self placeholderImage:nil]; |
| | | //cycleScrollView.imageURLStringsGroup = images; |
| | |
| | | [self.contentView addSubview:self.imaegViewGQ]; |
| | | [self.contentView addSubview:self.imaegViewVIP]; |
| | | |
| | | self.imaegView.sd_layout.leftEqualToView(self.contentView).topEqualToView(self.contentView).rightEqualToView(self.contentView).heightIs(160); |
| | | CGFloat height = (((KScreenW-9-9-6-6)/3))*1.39; |
| | | |
| | | self.imaegView.sd_layout.leftEqualToView(self.contentView).topEqualToView(self.contentView).rightEqualToView(self.contentView).heightIs(height); |
| | | self.imaegView.sd_cornerRadius = @6; |
| | | |
| | | self.labelTitle.sd_layout.leftSpaceToView(self.contentView, 0).topSpaceToView(self.imaegView, 6).rightSpaceToView(self.contentView, 0).heightIs(0); |
| | |
| | | [_imaegView setYthImageWithURL:data[@"Vpicture"] placeholderImage:BSKPlaceHolderImage]; |
| | | |
| | | NSString *conetnt = data[@"Name"]; |
| | | //0-普清 1-高清 |
| | | NSInteger Definition = [data[@"Definition"] intValue]; |
| | | //0-免费 1-VIP 2-用券 |
| | | NSInteger Free = [data[@"Free"] intValue]; |
| | | |
| | | if (Definition == 1) { |
| | | self.imaegViewGQ.hidden = NO; |
| | | |
| | | } else { |
| | | self.imaegViewGQ.hidden = YES; |
| | | } |
| | | |
| | | if (Free == 1) { |
| | | self.imaegViewVIP.hidden = NO; |
| | | |
| | | } else { |
| | | self.imaegViewVIP.hidden = YES; |
| | | } |
| | | |
| | | self.labelTag.text = [NSString stringWithFormat:@"%@",data[@"Tag"]]; |
| | | |
| | | if (data[@"Score"]) { |
| | |
| | | [_imaegView setYthImageWithURL:dataNormol[@"Vpicture"] placeholderImage:BSKPlaceHolderImage]; |
| | | |
| | | NSString *conetnt = dataNormol[@"Name"]; |
| | | |
| | | //0-普清 1-高清 |
| | | NSInteger Definition = [dataNormol[@"Definition"] intValue]; |
| | | //0-免费 1-VIP 2-用券 |
| | | NSInteger Free = [dataNormol[@"Free"] intValue]; |
| | | |
| | | if (Definition == 1) { |
| | | self.imaegViewGQ.hidden = NO; |
| | | |
| | | } else { |
| | | self.imaegViewGQ.hidden = YES; |
| | | } |
| | | |
| | | if (Free == 1) { |
| | | self.imaegViewVIP.hidden = NO; |
| | | |
| | | } else { |
| | | self.imaegViewVIP.hidden = YES; |
| | | } |
| | | |
| | | self.labelTag.text = [NSString stringWithFormat:@"%@",dataNormol[@"Tag"]]; |
| | | |
| | | if (dataNormol[@"Score"]) { |
| | |
| | | [_imaegViewGQ setContentScaleFactor:[[UIScreen mainScreen] scale]]; |
| | | _imaegViewGQ.contentMode = UIViewContentModeScaleAspectFill; |
| | | _imaegViewGQ.clipsToBounds = YES; |
| | | _imaegViewGQ.hidden = YES; |
| | | } |
| | | return _imaegViewGQ; |
| | | } |
| | |
| | | [_imaegViewVIP setContentScaleFactor:[[UIScreen mainScreen] scale]]; |
| | | _imaegViewVIP.contentMode = UIViewContentModeScaleAspectFill; |
| | | _imaegViewVIP.clipsToBounds = YES; |
| | | _imaegViewVIP.hidden = YES; |
| | | } |
| | | return _imaegViewVIP; |
| | | } |
| | |
| | | [self.contentView addSubview:self.imaegView]; |
| | | [self.contentView addSubview:self.labelTitle]; |
| | | |
| | | self.imaegView.sd_layout.leftEqualToView(self.contentView).topEqualToView(self.contentView).rightEqualToView(self.contentView).heightIs(99); |
| | | CGFloat height = ((KScreenW-9-9-8)/2)*0.562; |
| | | |
| | | self.imaegView.sd_layout.leftEqualToView(self.contentView).topEqualToView(self.contentView).rightEqualToView(self.contentView).heightIs(height); |
| | | self.imaegView.sd_cornerRadius = @6; |
| | | |
| | | self.labelTitle.sd_layout.leftSpaceToView(self.contentView, 0).topSpaceToView(self.imaegView, 6).rightSpaceToView(self.contentView, 0).heightIs(0); |
| | |
| | | if (data) { |
| | | self.labelTitle.text = data[@"Name"]; |
| | | |
| | | if ([data[@"HomeVideoList"] count] > 0) { |
| | | self.labelTag.text = data[@"HomeVideoList"][0][@"Video"][@"Tag"]; |
| | | |
| | | self.arrayImage = @[data[@"HomeVideoList"][0][@"Video"][@"Hpicture"]]; |
| | | |
| | | self.labelContent.text = data[@"HomeVideoList"][0][@"Video"][@"Name"]; |
| | | |
| | | } else { |
| | | self.labelTag.hidden = YES; |
| | | self.labelContent.hidden = YES; |
| | | } |
| | | |
| | | if ([data[@"RefreshPosition"] intValue] == 0 || [data[@"RefreshPosition"] intValue] == 2) { |
| | | self.buttonChange.hidden = YES; |
| | | |
| | |
| | | #import "RecommendController.h" |
| | | #import "OnlySpecialController.h"//专辑视图 |
| | | #import "XYRDetailViewController.h" |
| | | #import "BuyVipController.h" |
| | | |
| | | #import "RecommendHeaderViewCell.h" |
| | | #import "ToDayHotCell.h" |
| | |
| | | |
| | | dispatch_async(dispatch_get_main_queue(), ^{ |
| | | [self.arrayContent addObjectsFromArray:self.arrayTemp]; |
| | | [self.collectionView reloadData]; |
| | | }); |
| | | } |
| | | |
| | | [self.collectionView.mj_header endRefreshing]; |
| | | [self.collectionView.mj_footer endRefreshing]; |
| | | @weakify(self) |
| | | [UIView performWithoutAnimation:^{ |
| | | @strongify(self) |
| | | [self.collectionView reloadData]; |
| | | }]; |
| | | |
| | | if (self.count == self.arrayContent.count) { |
| | | [self hideFooger]; |
| | |
| | | } |
| | | } |
| | | handel(); |
| | | }); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | |
| | | if (indexpath.section == 1) { |
| | | return; |
| | | } |
| | | [self cellClick:indexpath]; |
| | | [self headerClick:indexpath]; |
| | | } |
| | | |
| | | - (void)onEventHotSection:(NSDictionary *)parms { |
| | |
| | | } else if (LinkType == 2){//网页(网页) |
| | | NSString *s = [parms[@"Params"] stringByReplacingOccurrencesOfString:@"\\"withString:@""]; |
| | | NSDictionary *Params = [self dictionaryWithJsonString:s]; |
| | | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[Params objectForKey:@"url"]]]; |
| | | BuyVipController *vc = [[BuyVipController alloc] init]; |
| | | vc.url = [Params objectForKey:@"url"]; |
| | | vc.hidesBottomBarWhenPushed = YES; |
| | | [self.navigationController pushViewController:vc animated:YES]; |
| | | |
| | | } else if (LinkType == 3){//专辑 |
| | | OnlySpecialController *OnlySpecial =[OnlySpecialController new]; |
| | |
| | | |
| | | - (void)cellClick:(NSIndexPath *)indexPath { |
| | | NSDictionary *parms = [NSDictionary new]; |
| | | BOOL BigPicture = [self.arrayContent[indexPath.section-1][@"HomeVideoList"][0][@"BigPicture"] boolValue]; |
| | | if (BigPicture) { |
| | | parms = self.arrayContent[indexPath.section-1][@"HomeVideoList"][indexPath.row+1][@"Video"]; |
| | | |
| | | } else { |
| | | parms = self.arrayContent[indexPath.section-1][@"HomeVideoList"][indexPath.row][@"Video"]; |
| | | } |
| | | [self onResult:parms]; |
| | | } |
| | | |
| | | - (void)headerClick:(NSIndexPath *)indexPath { |
| | | NSDictionary *parms = [NSDictionary new]; |
| | | parms = self.arrayContent[indexPath.section-1][@"HomeVideoList"][0][@"Video"]; |
| | | |
| | | [self onResult:parms]; |
| | | } |
| | | |
| | | - (void)onResult:(NSDictionary *)parms { |
| | | XYRDetailViewController *play = [[XYRDetailViewController alloc]init]; |
| | | [YTHsharedManger startManger].preController = [self fetchCurrentViewController]; |
| | | play.modalPresentationStyle = 0; |
| | |
| | | } else { |
| | | NSUInteger Columns = [self.arrayContent[section-1][@"Columns"] integerValue]; |
| | | if (Columns == 2 || Columns == 3) { |
| | | if ([self.arrayContent[section-1][@"HomeVideoList"] count] > 0) { |
| | | BOOL BigPicture = [self.arrayContent[section-1][@"HomeVideoList"][0][@"BigPicture"] boolValue]; |
| | | if (BigPicture) { |
| | | return [self.arrayContent[section-1][@"HomeVideoList"] count]-1; |
| | | } |
| | | return [self.arrayContent[section-1][@"HomeVideoList"] count]; |
| | | } |
| | | } |
| | | } |
| | | return 1; |
| | |
| | | return cell; |
| | | |
| | | } else if (Columns == 2) { |
| | | if ([self.arrayContent[indexPath.section-1][@"HomeVideoList"] count] > 0) { |
| | | RecommendTwoColumnCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"RecommendTwoColumnCell" forIndexPath:indexPath]; |
| | | BOOL BigPicture = [self.arrayContent[indexPath.section-1][@"HomeVideoList"][0][@"BigPicture"] boolValue]; |
| | | if (BigPicture) { |
| | |
| | | } |
| | | return cell; |
| | | |
| | | } else { |
| | | UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"UICollectionViewCell" forIndexPath:indexPath]; |
| | | return cell; |
| | | } |
| | | |
| | | } else if (Columns == 3) { |
| | | if ([self.arrayContent[indexPath.section-1][@"HomeVideoList"] count] > 0) { |
| | | RecommendThreeColumnCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"RecommendThreeColumnCell" forIndexPath:indexPath]; |
| | | BOOL BigPicture = [self.arrayContent[indexPath.section-1][@"HomeVideoList"][0][@"BigPicture"] boolValue]; |
| | | if (BigPicture) { |
| | |
| | | cell.data = self.arrayContent[indexPath.section-1][@"HomeVideoList"][indexPath.row][@"Video"]; |
| | | } |
| | | return cell; |
| | | |
| | | } else { |
| | | UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"UICollectionViewCell" forIndexPath:indexPath]; |
| | | return cell; |
| | | } |
| | | } |
| | | } |
| | | UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"UICollectionViewCell" forIndexPath:indexPath]; |
| | |
| | | if (indexPath.section > 0) { |
| | | RecpmmendTitleView *view = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"RecpmmendTitleView" forIndexPath:indexPath]; |
| | | view.delegate = self; |
| | | BOOL BigPicture = [self.arrayContent[indexPath.section-1][@"HomeVideoList"][0][@"BigPicture"] boolValue]; |
| | | BOOL BigPicture = NO; |
| | | if ([self.arrayContent[indexPath.section-1][@"HomeVideoList"] count] > 0) { |
| | | BigPicture = [self.arrayContent[indexPath.section-1][@"HomeVideoList"][0][@"BigPicture"] boolValue]; |
| | | } |
| | | view.isBanaer = BigPicture; |
| | | view.data = self.arrayContent[indexPath.section-1]; |
| | | view.index = indexPath.section; |
| | |
| | | //宽度随便定,系统会自动取collectionView的宽度 |
| | | //高度为分组头的高度 |
| | | if (section > 0) { |
| | | if ([self.arrayContent[section-1][@"HomeVideoList"] count] > 0) { |
| | | BOOL BigPicture = [self.arrayContent[section-1][@"HomeVideoList"][0][@"BigPicture"] boolValue]; |
| | | if (BigPicture) { |
| | | return CGSizeMake(KScreenW, 216 + 40 + 30); |
| | | } |
| | | } |
| | | return CGSizeMake(KScreenW, 47); |
| | | } |
| | |
| | | - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { |
| | | if (indexPath.section == 0) { |
| | | CGFloat bannerSizeRate = [self.dictionaryBanaer[@"bannerSizeRate"] doubleValue]; |
| | | return CGSizeMake(KScreenW, 5 + (156 * bannerSizeRate)); |
| | | return CGSizeMake(KScreenW, 5 + (KScreenW * bannerSizeRate)); |
| | | |
| | | } else { |
| | | NSUInteger Columns = [self.arrayContent[indexPath.section-1][@"Columns"] integerValue]; |
| | |
| | | return CGSizeMake(KScreenW, 140); |
| | | |
| | | } else if (Columns == 2) { |
| | | return CGSizeMake((KScreenW - 9 - 9 - 8) / 2, 140); |
| | | if ([self.arrayContent[indexPath.section-1][@"HomeVideoList"] count] > 0) { |
| | | return CGSizeMake((KScreenW-9-9-8)/2, 41+(((KScreenW-9-9-8)/2))*0.562); |
| | | |
| | | } else { |
| | | return CGSizeMake(KScreenW, CGFLOAT_MIN); |
| | | } |
| | | |
| | | } else if (Columns == 3) { |
| | | return CGSizeMake((KScreenW - 9 - 9 - 6 - 6) / 3, 201); |
| | | if ([self.arrayContent[indexPath.section-1][@"HomeVideoList"] count] > 0) { |
| | | return CGSizeMake((KScreenW-9-9-6-6)/3, 41+(((KScreenW-9-9-6-6)/3))*1.39); |
| | | |
| | | } else { |
| | | return CGSizeMake(KScreenW, CGFLOAT_MIN); |
| | | } |
| | | } |
| | | } |
| | | return CGSizeMake(KScreenW, 35); |
| | |
| | | |
| | | @property (nonatomic, nullable, strong) NSMutableArray *arrayClassName; |
| | | @property (nonatomic, nullable, strong) NSMutableArray *arrayKeyName; |
| | | |
| | | @property (nonatomic, assign) BOOL isRequest; |
| | | @end |
| | | |
| | | @implementation RecommendMainController |
| | |
| | | } |
| | | |
| | | -(void)loadDataFromFile { |
| | | if (_isRequest) { |
| | | return; |
| | | } |
| | | self.isRequest = YES; |
| | | [[YTHNetInterface startInterface]cancelAll]; |
| | | |
| | | |
| | | [[YTHNetInterface startInterface] getVideoClassWithUid:[YTHsharedManger startManger].Uid WithSystem:@"1" withBlock:^(BOOL isSuccessful, id result, NSString *error) { |
| | | if (isSuccessful) { |
| | |
| | | } |
| | | self.primtView.hidden = YES; |
| | | [self setupViewConfig]; |
| | | self.isRequest = NO; |
| | | |
| | | } else{ |
| | | if ([error compare:@"似乎已断开与互联网的连接。"] == 0) { |
| | | [self notHaveNetWork]; |
| | | } |
| | | self.isRequest = NO; |
| | | } |
| | | }]; |
| | | } |
| | |
| | | #import <UIKit/UIKit.h> |
| | | |
| | | typedef void(^onSearch)(void); |
| | | typedef void(^onRecord)(void); |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | |
| | | @property (nonatomic, nullable, copy) NSString *title; |
| | | |
| | | @property (nonatomic) onSearch onSearch; |
| | | @property (nonatomic) onRecord onRecord; |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |
| | |
| | | [buttonRecord setImage:[UIImage imageNamed:@"home_record"] forState:UIControlStateNormal]; |
| | | [self addSubview:buttonRecord]; |
| | | buttonRecord.sd_layout.rightSpaceToView(self, 21).centerYEqualToView(_viewNav).widthIs(23).heightIs(23); |
| | | [buttonRecord addTarget:self action:@selector(onViewRecord) forControlEvents:UIControlEventTouchUpInside]; |
| | | |
| | | [self.viewNav addSubview:self.viewSearch]; |
| | | self.viewSearch.sd_layout.leftSpaceToView(self.viewNav, 11).centerYEqualToView(self.viewNav).rightSpaceToView(buttonRecord, 21).heightIs(34); |
| | |
| | | label.sd_layout.leftSpaceToView(imageViewSearch, 13).centerYEqualToView(_viewSearch).heightIs(20).rightSpaceToView(_viewSearch, 0); |
| | | } |
| | | |
| | | - (void)onViewRecord { |
| | | !self.onRecord?:self.onRecord(); |
| | | } |
| | | |
| | | - (void)touchSearch { |
| | | !self.onSearch?:self.onSearch(); |
| | | } |
| | |
| | | #import "searchTableViewCell.h"//本视图所使用的cell与搜索视图使用的cell相同 |
| | | #import "XYRVideoInfoModel.h" |
| | | #import "searchViewController.h" |
| | | #import "SearchController.h" |
| | | #import "LookNoteController.h" |
| | | #import "XYRDetailViewController.h" |
| | | #import "XYRVideoInfoModel.h" |
| | |
| | | |
| | | @property (weak, nonatomic) IBOutlet UIButton *topButton; |
| | | |
| | | @property (nonatomic, strong) UIView *viewTop; |
| | | |
| | | @property (nonatomic, assign) BOOL isWhite; |
| | | @end |
| | | |
| | | @implementation SubregionDetailViewController |
| | |
| | | - (void)viewWillAppear:(BOOL)animated |
| | | { |
| | | [super viewWillAppear:animated]; |
| | | NSString *str=[NSString stringWithFormat:@"分类的%@界面",self.titles]; |
| | | [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; |
| | | //NSString *str=[NSString stringWithFormat:@"分类的%@界面",self.titles]; |
| | | [self.navigationController setNavigationBarHidden:YES animated:animated]; |
| | | self.navigationController.navigationBar.translucent = YES; |
| | | //[MobClick beginLogPageView:str]; |
| | | } |
| | | |
| | | - (void)viewWillDisappear:(BOOL)animated |
| | | { |
| | | [super viewWillDisappear:animated]; |
| | | NSString *str=[NSString stringWithFormat:@"分类的%@界面",self.titles]; |
| | | if (_isWhite) { |
| | | self.isWhite = NO; |
| | | |
| | | } else { |
| | | [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; |
| | | } |
| | | |
| | | [self.navigationController setNavigationBarHidden:NO animated:animated]; |
| | | self.navigationController.navigationBar.translucent = NO; |
| | | //NSString *str=[NSString stringWithFormat:@"分类的%@界面",self.titles]; |
| | | //[MobClick endLogPageView:str]; |
| | | } |
| | | |
| | |
| | | * 定制导航栏视图 |
| | | */ |
| | | -(void)loadNavigationView{ |
| | | [self.view addSubview:self.viewTop]; |
| | | self.viewTop.sd_layout.leftSpaceToView(self.view, 0).topSpaceToView(self.view, 0).rightSpaceToView(self.view, 0).heightIs(self.kNavHeight); |
| | | |
| | | //去掉titlie |
| | | UIView *tview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0.01, 0.01)]; |
| | | self.navigationItem.titleView = tview; |
| | |
| | | BackBtn.layer.masksToBounds=YES; |
| | | BackBtn.layer.cornerRadius=15.0; |
| | | [BackBtn addTarget:self action:@selector(backToRoot:) forControlEvents:UIControlEventTouchUpInside]; |
| | | UIBarButtonItem *backBarItem=[[UIBarButtonItem alloc] initWithCustomView:BackBtn]; |
| | | [self.viewTop addSubview:BackBtn]; |
| | | BackBtn.sd_layout.leftSpaceToView(_viewTop, 16).bottomSpaceToView(_viewTop, 7).widthIs(30).heightIs(30); |
| | | |
| | | //显示分类名 |
| | | UILabel *nameLabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 65, 20)]; |
| | | UILabel *nameLabel=[[UILabel alloc] init]; |
| | | nameLabel.backgroundColor=[UIColor clearColor]; |
| | | nameLabel.font=[UIFont systemFontOfSize:15]; |
| | | nameLabel.textAlignment = NSTextAlignmentCenter; |
| | | [nameLabel setText:self.titles]; |
| | | [nameLabel setTextColor:[UIColor whiteColor]]; |
| | | UIBarButtonItem *nameBarItem=[[UIBarButtonItem alloc] initWithCustomView:nameLabel]; |
| | | |
| | | //添加分类名和返回按钮到导航栏 |
| | | self.navigationItem.leftBarButtonItems=[[NSArray alloc] initWithObjects:backBarItem,nameBarItem,nil]; |
| | | |
| | | //观看记录 |
| | | UIButton *recordBtn=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)]; |
| | | [recordBtn setImage:[UIImage imageNamed:@"历史记录"] forState:UIControlStateNormal]; |
| | | [recordBtn addTarget:self action:@selector(JumpToRecordView) forControlEvents:UIControlEventTouchUpInside]; |
| | | UIBarButtonItem *recordBarItem=[[UIBarButtonItem alloc] initWithCustomView:recordBtn]; |
| | | [self.viewTop addSubview:nameLabel]; |
| | | nameLabel.sd_layout.centerXEqualToView(_viewTop).bottomSpaceToView(_viewTop, 7).widthIs(100).heightIs(30); |
| | | |
| | | //搜索 |
| | | UIButton *SearchBtn=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)]; |
| | | UIButton *SearchBtn = [[UIButton alloc] init]; |
| | | [SearchBtn setImage:[UIImage imageNamed:@"搜索"] forState:UIControlStateNormal]; |
| | | [SearchBtn addTarget:self action:@selector(JumpToSearchView) forControlEvents:UIControlEventTouchUpInside]; |
| | | UIBarButtonItem *SearchBarItem=[[UIBarButtonItem alloc] initWithCustomView:SearchBtn]; |
| | | |
| | | //空白间距 |
| | | UILabel *WhiteLabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 8, 10)]; |
| | | WhiteLabel.backgroundColor=[UIColor clearColor]; |
| | | UIBarButtonItem *WhiteBarItem=[[UIBarButtonItem alloc] initWithCustomView:WhiteLabel]; |
| | | [self.viewTop addSubview:SearchBtn]; |
| | | SearchBtn.sd_layout.rightSpaceToView(_viewTop, 16).bottomSpaceToView(_viewTop, 7).widthIs(30).heightIs(30); |
| | | |
| | | //添加 观看记录/下载/搜索 到导航栏 |
| | | self.navigationItem.rightBarButtonItems=[[NSArray alloc] initWithObjects:SearchBarItem,WhiteBarItem,recordBarItem,nil]; |
| | | //观看记录 |
| | | UIButton *recordBtn = [[UIButton alloc] init]; |
| | | [recordBtn setImage:[UIImage imageNamed:@"历史记录"] forState:UIControlStateNormal]; |
| | | [recordBtn addTarget:self action:@selector(JumpToRecordView) forControlEvents:UIControlEventTouchUpInside]; |
| | | |
| | | [self.viewTop addSubview:recordBtn]; |
| | | recordBtn.sd_layout.rightSpaceToView(SearchBtn, 10).bottomSpaceToView(_viewTop, 7).widthIs(30).heightIs(30); |
| | | } |
| | | |
| | | - (IBAction)topTaped:(UIButton *)sender { |
| | |
| | | * 跳转到历史记录 |
| | | */ |
| | | -(void)JumpToRecordView{ |
| | | self.isWhite = YES; |
| | | LookNoteController *LookNoteLookNoteVC=[[LookNoteController alloc] init]; |
| | | [self.navigationController pushViewController:LookNoteLookNoteVC animated:YES]; |
| | | } |
| | |
| | | * 跳转到搜索 |
| | | */ |
| | | -(void)JumpToSearchView{ |
| | | searchViewController *searchVC=[[searchViewController alloc] init]; |
| | | [self.navigationController pushViewController:searchVC animated:YES]; |
| | | SearchController *vc = [[SearchController alloc] init]; |
| | | vc.ptitle = [YTHsharedManger startManger].searchTitle; |
| | | [self.navigationController pushViewController:vc animated:YES]; |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | } |
| | | |
| | | - (UIView *)viewTop { |
| | | if (!_viewTop) { |
| | | _viewTop = [[UIView alloc] init]; |
| | | _viewTop.backgroundColor = [UIColor blackColor]; |
| | | } |
| | | return _viewTop; |
| | | } |
| | | @end |
| | |
| | | [dic setObject:system forKey:@"System"]; |
| | | [dic setObject:[NSString md5:sign] forKey:@"Sign"]; |
| | | [dic setObject:[[UIDevice currentDevice].identifierForVendor UUIDString] forKey:@"Device"]; |
| | | NSLog(@"%@",dic); |
| | | |
| | | return dic; |
| | | } |
| | | //getRecommendCategoryVideoBanner |
| | |
| | | } |
| | | |
| | | + (NSMutableDictionary *)pptvVideoPlayStateWithUid:(NSString *)uid withSystem:(NSString *)system WithLoginUid:(NSString *)loginUid vid:(NSString *)vid cid:(NSString *)cid { |
| | | NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithCapacity:0]; |
| | | |
| | | [dic setObject:@"getHomeClass" forKey:@"Method"]; |
| | | [dic setObject:@"ios" forKey:@"Platform"]; |
| | | NSMutableDictionary *parms = [NSMutableDictionary new]; |
| | | parms[@"Method"] = @"getHomeClass"; |
| | | parms[@"Platform"] = @"ios"; |
| | | |
| | | NSString *sign; |
| | | if (uid!=nil) { |
| | | [dic setObject:uid forKey:@"Uid"]; |
| | | if (uid) { |
| | | [parms setObject:uid forKey:@"Uid"]; |
| | | sign = [NSString stringWithFormat:@"%@%@%@",@"getHomeClass",uid,system]; |
| | | |
| | | }else{ |
| | | sign = [NSString stringWithFormat:@"%@%@%@",@"getHomeClass",[[UIDevice currentDevice].identifierForVendor UUIDString],system]; |
| | | } |
| | | [dic setObject:vid forKey:@"vid"]; |
| | | [dic setObject:cid forKey:@"cid"]; |
| | | |
| | | [dic setObject:Version forKey:@"Version"]; |
| | | [dic setObject:Package forKey:@"Package"]; |
| | | [dic setObject:system forKey:@"System"]; |
| | | [dic setObject:loginUid forKey:@"loginUid"]; |
| | | [dic setObject:[NSString md5:sign] forKey:@"Sign"]; |
| | | [dic setObject:[[UIDevice currentDevice].identifierForVendor UUIDString] forKey:@"Device"]; |
| | | NSLog(@"%@",dic); |
| | | return dic; |
| | | parms[@"vid"] = vid; |
| | | parms[@"cid"] = cid; |
| | | parms[@"Version"] = Version; |
| | | parms[@"Package"] = Package; |
| | | parms[@"System"] = system; |
| | | |
| | | parms[@"loginUid"] = loginUid?:@""; |
| | | parms[@"Sign"] = [NSString md5:sign]; |
| | | parms[@"Device"] = [[UIDevice currentDevice].identifierForVendor UUIDString]; |
| | | return parms; |
| | | } |
| | | |
| | | #pragma mark 精彩频道视频 |
| | |
| | | } |
| | | |
| | | }else{ |
| | | if ([error containsString:@"404"]) { |
| | | [SVProgressHUD showWithStatus:@"网络出错"]; |
| | | |
| | | } else { |
| | | [SVProgressHUD showWithStatus:error]; |
| | | } |
| | | |
| | | //提示用户失败 |
| | | [self.DisplayTabelView.mj_header endRefreshing]; |
| | | [self.DisplayTabelView.mj_footer endRefreshing]; |
| | |
| | | // [_nativeAd loadAd:1]; |
| | | |
| | | // 支持视频广告的 PlacementId 会混出视频与图片广告 |
| | | // self.nativeExpressAd = [[GDTNativeExpressAd alloc] initWithAppId:GDTADkey placementId:@"6000418684535350" adSize:CGSizeMake(KScreenW, (KScreenW-20)/16*9 + 10)]; |
| | | // self.nativeExpressAd.delegate = self; |
| | | // // 配置视频播放属性 |
| | | // self.nativeExpressAd.videoAutoPlayOnWWAN = YES; |
| | | // self.nativeExpressAd.videoMuted = NO; |
| | | // [self.nativeExpressAd loadAd:1]; |
| | | self.nativeExpressAd = [[GDTNativeExpressAd alloc] initWithAppId:GDTADkey placementId:@"6000418684535350" adSize:CGSizeMake(KScreenW, (KScreenW-20)/16*9 + 10)]; |
| | | self.nativeExpressAd.delegate = self; |
| | | // 配置视频播放属性 |
| | | self.nativeExpressAd.videoAutoPlayOnWWAN = YES; |
| | | self.nativeExpressAd.videoMuted = NO; |
| | | [self.nativeExpressAd loadAd:1]; |
| | | |
| | | } |
| | | - (void)clickRemoveAd:(id)sender { |