BuWanVideo2.0.xcodeproj/project.pbxproj
@@ -135,8 +135,9 @@ 702904B82687016200F93618 /* ObtainProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 702904B22687016200F93618 /* ObtainProperty.m */; }; 702904BA2687016200F93618 /* FileOperator.m in Sources */ = {isa = PBXBuildFile; fileRef = 702904B62687016200F93618 /* FileOperator.m */; }; 702904BD2687292400F93618 /* SearchCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 702904BC2687292400F93618 /* SearchCell.m */; }; 7030BAA326A40201003050E0 /* BuyVipController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7030BAA226A40201003050E0 /* BuyVipController.m */; }; 7030BAA626A404AB003050E0 /* NormolNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7030BAA526A404AB003050E0 /* NormolNavView.m */; }; 7034AC8426638BF30056133F /* RecommendChangeFooterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7034AC8326638BF30056133F /* RecommendChangeFooterView.m */; }; 7034AC8826639A7B0056133F /* HDHeaderCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7034AC8726639A7B0056133F /* HDHeaderCell.m */; }; 7034AC8E2663A03D0056133F /* SearchController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7034AC8D2663A03D0056133F /* SearchController.m */; }; 7034AC922663A41C0056133F /* SearchNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7034AC912663A41C0056133F /* SearchNavView.m */; }; 7034AC962663BC400056133F /* SearchHotCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7034AC952663BC400056133F /* SearchHotCell.m */; }; @@ -157,7 +158,6 @@ 704C14BE265B72A5009DAB98 /* ZJScrollSegmentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 704C14B4265B72A5009DAB98 /* ZJScrollSegmentView.m */; }; 704C14BF265B72A5009DAB98 /* ZJScrollPageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 704C14B5265B72A5009DAB98 /* ZJScrollPageView.m */; }; 704C14C2265B7623009DAB98 /* RecommendController.m in Sources */ = {isa = PBXBuildFile; fileRef = 704C14C1265B7623009DAB98 /* RecommendController.m */; }; 704C14C8265B76BA009DAB98 /* HDController.m in Sources */ = {isa = PBXBuildFile; fileRef = 704C14C7265B76BA009DAB98 /* HDController.m */; }; 704C14CB265B76D2009DAB98 /* ListController.m in Sources */ = {isa = PBXBuildFile; fileRef = 704C14CA265B76D2009DAB98 /* ListController.m */; }; 704C14CE265B8E38009DAB98 /* MainBaseController.m in Sources */ = {isa = PBXBuildFile; fileRef = 704C14CD265B8E38009DAB98 /* MainBaseController.m */; }; 705951F425161153008E0CDF /* SearchTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 705951F325161153008E0CDF /* SearchTitleView.m */; }; @@ -609,10 +609,12 @@ 702904B62687016200F93618 /* FileOperator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FileOperator.m; sourceTree = "<group>"; }; 702904BB2687292400F93618 /* SearchCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SearchCell.h; sourceTree = "<group>"; }; 702904BC2687292400F93618 /* SearchCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SearchCell.m; sourceTree = "<group>"; }; 7030BAA126A40201003050E0 /* BuyVipController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BuyVipController.h; sourceTree = "<group>"; }; 7030BAA226A40201003050E0 /* BuyVipController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BuyVipController.m; sourceTree = "<group>"; }; 7030BAA426A404AB003050E0 /* NormolNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NormolNavView.h; sourceTree = "<group>"; }; 7030BAA526A404AB003050E0 /* NormolNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NormolNavView.m; sourceTree = "<group>"; }; 7034AC8226638BF30056133F /* RecommendChangeFooterView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RecommendChangeFooterView.h; sourceTree = "<group>"; }; 7034AC8326638BF30056133F /* RecommendChangeFooterView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RecommendChangeFooterView.m; sourceTree = "<group>"; }; 7034AC8626639A7B0056133F /* HDHeaderCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDHeaderCell.h; sourceTree = "<group>"; }; 7034AC8726639A7B0056133F /* HDHeaderCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDHeaderCell.m; sourceTree = "<group>"; }; 7034AC8C2663A03D0056133F /* SearchController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SearchController.h; sourceTree = "<group>"; }; 7034AC8D2663A03D0056133F /* SearchController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SearchController.m; sourceTree = "<group>"; }; 7034AC902663A41C0056133F /* SearchNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SearchNavView.h; sourceTree = "<group>"; }; @@ -675,8 +677,6 @@ 704C14B7265B72A5009DAB98 /* ZJTitleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZJTitleView.h; sourceTree = "<group>"; }; 704C14C0265B7623009DAB98 /* RecommendController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RecommendController.h; sourceTree = "<group>"; }; 704C14C1265B7623009DAB98 /* RecommendController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RecommendController.m; sourceTree = "<group>"; }; 704C14C6265B76BA009DAB98 /* HDController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HDController.h; sourceTree = "<group>"; }; 704C14C7265B76BA009DAB98 /* HDController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HDController.m; sourceTree = "<group>"; }; 704C14C9265B76D2009DAB98 /* ListController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ListController.h; sourceTree = "<group>"; }; 704C14CA265B76D2009DAB98 /* ListController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ListController.m; sourceTree = "<group>"; }; 704C14CC265B8E38009DAB98 /* MainBaseController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainBaseController.h; sourceTree = "<group>"; }; @@ -1534,25 +1534,6 @@ path = InfoPlist; sourceTree = "<group>"; }; 7034AC85266399C70056133F /* HDController */ = { isa = PBXGroup; children = ( 7034AC8926639A7F0056133F /* cell */, 704C14C6265B76BA009DAB98 /* HDController.h */, 704C14C7265B76BA009DAB98 /* HDController.m */, ); path = HDController; sourceTree = "<group>"; }; 7034AC8926639A7F0056133F /* cell */ = { isa = PBXGroup; children = ( 7034AC8626639A7B0056133F /* HDHeaderCell.h */, 7034AC8726639A7B0056133F /* HDHeaderCell.m */, ); path = cell; sourceTree = "<group>"; }; 7034AC8A26639BC80056133F /* ListControlelr */ = { isa = PBXGroup; children = ( @@ -1623,7 +1604,6 @@ 704C148A265A9393009DAB98 /* RecommendMainController.h */, 704C148B265A9393009DAB98 /* RecommendMainController.m */, 70ED36BE2662381200E51E79 /* Recommend */, 7034AC85266399C70056133F /* HDController */, 7034AC8A26639BC80056133F /* ListControlelr */, ); path = Recommend; @@ -1798,6 +1778,8 @@ 706CECC6264F97C7001FBEB7 /* Cell */, 706CECBE264F76C1001FBEB7 /* PPTVNavView.h */, 706CECBF264F76C1001FBEB7 /* PPTVNavView.m */, 7030BAA426A404AB003050E0 /* NormolNavView.h */, 7030BAA526A404AB003050E0 /* NormolNavView.m */, 706CECC3264F94CC001FBEB7 /* PPTVPppView.h */, 706CECC4264F94CC001FBEB7 /* PPTVPppView.m */, 706CECDC264FC2A7001FBEB7 /* PPTVBottomVIpVIew.h */, @@ -1857,6 +1839,8 @@ 706CECBD264F76A1001FBEB7 /* View */, 70D5934325EA1FAE00438F1A /* PPTVController.h */, 70D5934425EA1FAE00438F1A /* PPTVController.m */, 7030BAA126A40201003050E0 /* BuyVipController.h */, 7030BAA226A40201003050E0 /* BuyVipController.m */, ); name = PPTV; sourceTree = "<group>"; @@ -2932,6 +2916,7 @@ 7B4220FD1D6D7DDE007345E6 /* OnlySpecialTwo.m in Sources */, 7B4220ED1D6D7D34007345E6 /* AllSpecialCell.m in Sources */, 705F1F77251F1CA80065350E /* MJRefreshBackNormalFooter.m in Sources */, 7030BAA626A404AB003050E0 /* NormolNavView.m in Sources */, 183080D91E29CD2F0017DDD7 /* childCollectionViewCell.m in Sources */, 2D1E3DB82134FF4C0021C50A /* BSKImagesPageView.m in Sources */, 7B59CBFA1D5B1447000B357F /* GroupSection.m in Sources */, @@ -2968,7 +2953,6 @@ 18D94EAB1ECD7B6E00B6FA54 /* newADCollectionViewCell.m in Sources */, 705F1F73251F1CA80065350E /* NSBundle+MJRefresh.m in Sources */, 7BFBC66D1D6705280058FFEB /* ComentCell.m in Sources */, 704C14C8265B76BA009DAB98 /* HDController.m in Sources */, 7B1FF0D01D670AA900E6C207 /* TWScell.m in Sources */, 18E943F2205774D50019FD04 /* BaseViewController.m in Sources */, 1884A6081E54630300548480 /* LGLAlertView.m in Sources */, @@ -3062,7 +3046,6 @@ 705F1F81251F1CA80065350E /* MJRefreshHeader.m in Sources */, 7BFBC6861D6705AB0058FFEB /* SettingController.m in Sources */, 7B32BD321D4F26F500E96E75 /* subregionView.m in Sources */, 7034AC8826639A7B0056133F /* HDHeaderCell.m in Sources */, 7BC600AC1D63F560005CE8FD /* searchDetailViewController.m in Sources */, 7B1FF0C81D670A4E00E6C207 /* IndividualStarController.m in Sources */, 182F49662092DF1200FEAAF7 /* SJTabbarViewController.m in Sources */, @@ -3105,6 +3088,7 @@ 7B1FF0DD1D670B8800E6C207 /* attentionView.m in Sources */, 70D5934525EA1FAE00438F1A /* PPTVController.m in Sources */, 1884A6031E545D4900548480 /* PopoverViewCell.m in Sources */, 7030BAA326A40201003050E0 /* BuyVipController.m in Sources */, 7BFBC6461D6703E40058FFEB /* WebControllerView.m in Sources */, 18BC12B11EDEA87D001E2FB0 /* LiveListTableViewCell.m in Sources */, 7B1FF0AE1D67094500E6C207 /* CellHead.m in Sources */, BuWanVideo2.0.xcworkspace/xcuserdata/aeline.xcuserdatad/UserInterfaceState.xcuserstateBinary files differ
BuWanVideo2.0.xcworkspace/xcuserdata/aeline.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -20,14 +20,14 @@ BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent uuid = "8CD41EE0-A87D-46AF-91E6-35F08F86F964" shouldBeEnabled = "Yes" shouldBeEnabled = "No" ignoreCount = "0" continueAfterRunningActions = "No" filePath = "BuWanVideo2.0/SettingController.m" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "85" endingLineNumber = "85" startingLineNumber = "93" endingLineNumber = "93" landmarkName = "-OutOfLogin" landmarkType = "7"> </BreakpointContent> @@ -36,14 +36,14 @@ BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent uuid = "9F1698DB-31A5-4760-A420-C735464637FC" shouldBeEnabled = "Yes" shouldBeEnabled = "No" ignoreCount = "0" continueAfterRunningActions = "No" filePath = "BuWanVideo2.0/SettingController.m" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "152" endingLineNumber = "152" startingLineNumber = "164" endingLineNumber = "164" landmarkName = "-tableView:cellForRowAtIndexPath:" landmarkType = "7"> </BreakpointContent> @@ -67,23 +67,55 @@ <BreakpointProxy BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent uuid = "AFF19E7A-D446-427C-8182-190A7D27D138" uuid = "E2A443EE-3CFA-4650-8939-6D44916F9711" shouldBeEnabled = "No" ignoreCount = "0" continueAfterRunningActions = "No" filePath = "BuWanVideo2.0/JSAPI.m" filePath = "BuWanVideo2.0/SettingController.m" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "71" endingLineNumber = "71" landmarkName = "-jsonStringToJsonData:" startingLineNumber = "98" endingLineNumber = "98" landmarkName = "-touchesBegan:withEvent:" landmarkType = "7"> </BreakpointContent> </BreakpointProxy> <BreakpointProxy BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent uuid = "91FAE200-D2A7-4778-919B-18B5656D9C3E" uuid = "2A566C2D-E3EB-41C6-9B5B-DA8939E27E42" shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" filePath = "BuWanVideo2.0/SettingController.m" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "202" endingLineNumber = "202" landmarkName = "-tableView:didSelectRowAtIndexPath:" landmarkType = "7"> </BreakpointContent> </BreakpointProxy> <BreakpointProxy BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent uuid = "4301DB48-CB5E-4B54-954F-BA1EFE6C0AC5" shouldBeEnabled = "No" ignoreCount = "0" continueAfterRunningActions = "No" filePath = "BuWanVideo2.0/SettingController.m" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "228" endingLineNumber = "228" landmarkName = "-tableView:didSelectRowAtIndexPath:" landmarkType = "7"> </BreakpointContent> </BreakpointProxy> <BreakpointProxy BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent uuid = "CAFD4D93-A797-4E9A-A170-8A69EAFC30E5" shouldBeEnabled = "No" ignoreCount = "0" continueAfterRunningActions = "No" @@ -99,16 +131,80 @@ <BreakpointProxy BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent uuid = "D68EC0A8-E161-409E-89EC-52E88917ABD4" uuid = "A22DADAB-F0B8-4C0F-B693-30456136020D" shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" filePath = "BuWanVideo2.0/PPTVController.m" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "185" endingLineNumber = "185" landmarkName = "-copyUrl" landmarkType = "7"> </BreakpointContent> </BreakpointProxy> <BreakpointProxy BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent uuid = "FCEEE420-BBC0-47D4-9B5A-1D4A946B1F89" shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" filePath = "BuWanVideo2.0/BuyVipController.m" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "191" endingLineNumber = "191" landmarkName = "-paymentQueue:updatedTransactions:" landmarkType = "7"> </BreakpointContent> </BreakpointProxy> <BreakpointProxy BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent uuid = "309D9951-0098-41FB-B0A3-B05A967477F2" shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" filePath = "BuWanVideo2.0/BuyVipController.m" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "186" endingLineNumber = "186" landmarkName = "-paymentQueue:updatedTransactions:" landmarkType = "7"> </BreakpointContent> </BreakpointProxy> <BreakpointProxy BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent uuid = "64101954-D018-4C2B-9D19-930894615416" shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" filePath = "BuWanVideo2.0/BuyVipController.m" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "195" endingLineNumber = "195" landmarkName = "-paymentQueue:updatedTransactions:" landmarkType = "7"> </BreakpointContent> </BreakpointProxy> <BreakpointProxy BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> <BreakpointContent uuid = "2E834C33-7E26-450F-91B0-C13FC6F55B50" shouldBeEnabled = "No" ignoreCount = "0" continueAfterRunningActions = "No" filePath = "BuWanVideo2.0/JSAPI.m" filePath = "BuWanVideo2.0/BuyVipController.m" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "41" endingLineNumber = "41" landmarkName = "-getUserInfo:" startingLineNumber = "94" endingLineNumber = "94" landmarkName = "-touchSubscribeVip" landmarkType = "7"> </BreakpointContent> </BreakpointProxy> BuWanVideo2.0/AppDelegate.m
@@ -122,6 +122,8 @@ [[YTHNetInterface startInterface] fetchCommenConfig:parms WithBlock:^(BOOL isSuccessful, id result, NSString *error) { if ([result[@"IsPost"] boolValue]) { [YTHsharedManger startManger].ad = result[@"Data"][@"ad"]; [[NSUserDefaults standardUserDefaults] setObject:result[@"Data"][@"vipLink"]?:@"" forKey:VIPLINK]; [[NSUserDefaults standardUserDefaults] synchronize]; } }]; } BuWanVideo2.0/BuyVipController.h
New file @@ -0,0 +1,21 @@ // // BuyVipController.h // BuWanVideo2.0 // // Created by Aeline on 2021/7/18. // Copyright © 2021 com.yeshi.buwansheque.ios. All rights reserved. // #import "BaseViewController.h" NS_ASSUME_NONNULL_BEGIN typedef void(^refrshData)(void); @interface BuyVipController : BaseViewController @property (nonatomic) refrshData refrshData; @end NS_ASSUME_NONNULL_END BuWanVideo2.0/BuyVipController.m
New file @@ -0,0 +1,369 @@ // // BuyVipController.m // BuWanVideo2.0 // // Created by Aeline on 2021/7/18. // Copyright © 2021 com.yeshi.buwansheque.ios. All rights reserved. // #import "BuyVipController.h" #import "NormolNavView.h" #import "dsbridge.h" #import "JSAPI.h" #import <StoreKit/StoreKit.h> @interface BuyVipController () <WKNavigationDelegate, WKUIDelegate, NormolNavViewDelegate, SKPaymentTransactionObserver,SKProductsRequestDelegate> @property (nonatomic, nullable, strong) NormolNavView *navView; @property (nonatomic, nullable, strong) DWKWebView *webView; @property (nonatomic, copy) NSString *code; @property (nonatomic, assign) BOOL isBuying; @property (nonatomic) JSCallback completionHandler; @end @implementation BuyVipController - (void)viewDidLoad { [super viewDidLoad]; [self addNotice]; [self loadViewConfig]; } - (void)dealloc { [[SKPaymentQueue defaultQueue] removeTransactionObserver:self]; } - (void)addNotice { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onBuyVip:) name:@"buyVip" object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onVipPayFinish:) name:@"vipPayFinish" object:nil]; [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:animated]; } //- (void)viewWillDisappear:(BOOL)animated { // [super viewWillDisappear:animated]; // [self.navigationController setNavigationBarHidden:NO animated:animated]; // //} - (void)loadViewConfig { self.view.backgroundColor = [UIColor whiteColor]; [self.view addSubview:self.navView]; [self.view addSubview:self.webView]; [self.webView addJavascriptObject:[[JSAPI alloc] init] namespace:@"yestv"]; // open debug mode, Release mode should disable this. [self.webView setDebugMode:true]; [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]]; [self.webView loadRequest:request]; } - (void)onBuyVip:(NSNotification *)notice { self.completionHandler = notice.userInfo[@"data"]; self.code = notice.userInfo[@"code"][@"code"]; [self touchSubscribeVip]; } - (void)onVipPayFinish:(NSNotification *)notice { self.isBuying = YES; [SVProgressHUD dismiss]; [UIApplication sharedApplication].keyWindow.userInteractionEnabled = YES; } - (void)touchSubscribeVip { // 是否允许内购 if ([SKPaymentQueue canMakePayments]) { NSArray* transactions = [SKPaymentQueue defaultQueue].transactions; if (transactions.count > 0) { //检测是否有未完成的交易 SKPaymentTransaction* transaction = [transactions firstObject]; if (transaction.transactionState == SKPaymentTransactionStatePurchased) { [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; } } NSString *productID = _code; // 添加内购条目设置的产品ID NSArray *product = [[NSArray alloc] initWithObjects:productID, nil]; NSSet *nsset = [NSSet setWithArray:product]; SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:nsset]; request.delegate = self; [SVProgressHUD show]; [UIApplication sharedApplication].keyWindow.userInteractionEnabled = NO; //开始请求 [request start]; } else { UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"内购未开启" message:@"进入【设置】-【屏幕使用时间】-【内容和隐私访问限制】-【iTunes Store 与 App Store 购买项目】-【App内购买项目】- 选择“允许”,将该功能开启" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { [[self fetchCurrentViewController] dismissViewControllerAnimated:YES completion:nil]; }]; [alert addAction:defaultAction]; [[self fetchCurrentViewController] presentViewController:alert animated:YES completion:nil]; } } #pragma mark - SKProductsRequestDelegate // 接收到产品的返回信息,然后用返回的商品信息进行发起购买请求 - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response NS_AVAILABLE_IOS(3_0) { NSArray *product = response.products; // 如果服务器没有产品 if ([product count] == 0) { dispatch_async(dispatch_get_main_queue(), ^{ //[SVProgressHUD showErrorWithStatus:@"商品不存在"]; }); return; } SKProduct *requestProduct = nil; for (SKProduct *pro in product) { NSLog(@"%@", [pro description]); NSLog(@"%@", [pro localizedTitle]); NSLog(@"%@", [pro localizedDescription]); NSLog(@"%@", [pro price]); NSLog(@"%@", [pro productIdentifier]); //如果后台消费条目的ID与我这里需要请求的一样(用于确保订单的正确性) //NSString *productID = _dictionaryVipInfo[@"ios_code"]; NSString *productID = _code; if([pro.productIdentifier isEqualToString:productID]){ requestProduct = pro; } } //发送购买请求 NSDictionary *dictionary = [[NSUserDefaults standardUserDefaults] objectForKey:@"buUserInfo"]; SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:requestProduct]; payment.applicationUsername = dictionary[@"id"];// 可以是userId,也可以是订单id,跟你自己需要而定 [[SKPaymentQueue defaultQueue] addPayment:payment]; } #pragma mark - SKRequestDelegate //请求失败 - (void)request:(SKRequest *)request didFailWithError:(NSError *)error { dispatch_async(dispatch_get_main_queue(), ^{ [SVProgressHUD dismiss]; [UIApplication sharedApplication].keyWindow.userInteractionEnabled = YES; }); } //请求结束 - (void)requestDidFinish:(SKRequest *)request { dispatch_async(dispatch_get_main_queue(), ^{ [SVProgressHUD dismiss]; [UIApplication sharedApplication].keyWindow.userInteractionEnabled = YES; }); } #pragma mark - SKPaymentTransactionObserver // 监听购买结果 - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { for(SKPaymentTransaction *tran in transactions){ switch (tran.transactionState) { case SKPaymentTransactionStatePurchased: NSLog(@"交易完成"); [self completeTransaction:tran]; break; case SKPaymentTransactionStatePurchasing: NSLog(@"商品添加进列表"); break; case SKPaymentTransactionStateRestored: { NSLog(@"已经购买过商品"); [[SKPaymentQueue defaultQueue] finishTransaction:tran]; break; } case SKPaymentTransactionStateFailed: { [[SKPaymentQueue defaultQueue] finishTransaction:tran]; break; } default: break; } } } //交易结束,当交易结束后还要去appstore上验证支付信息是否都正确,只有所有都正确后,我们就可以给用户方法我们的虚拟物品了。 - (void)completeTransaction:(SKPaymentTransaction *)transaction { [SVProgressHUD showWithStatus:@"正在验证支付信息~请勿退出"]; //验证凭据,获取到苹果返回的交易凭据 //appStoreReceiptURL iOS7.0增加的,购买交易完成后,会将凭据存放在该地址 NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL]; //从沙盒中获取到购买凭据 NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL]; //解析凭证 NSString *encodeStr = [receiptData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; self.completionHandler(encodeStr, YES); //临时储存凭证 // self.plist.dataName = @"appleBuy"; // NSMutableDictionary *parms = [[NSMutableDictionary alloc] init]; // [parms setObject:[NSString stringWithFormat:@"%ld",(long)_type] forKey:@"id"];//package_id // [parms setObject:encodeStr forKey:@"code"];//购买凭据 // if (self.order_number) { // [parms setObject:self.order_number forKey:@"order_number"]; // } // [self.plist writeFileWithData:parms]; // // //服务器验证 // [self vertifyApplePayRequestWith:encodeStr transaction:transaction]; } #pragma mark --------- PPTVDelegate --------- - (void)backVc { !_refrshData?:_refrshData(); [self.navigationController popViewControllerAnimated:YES]; } // 页面开始加载时调用 - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation { [self jsAdds]; } // 页面加载失败时调用 - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error { } // 当内容开始返回时调用 - (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation { [self jsAdds]; [self performSelector:@selector(afterDelay) withObject:nil afterDelay:0.5]; } - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler { [self jsAdds]; decisionHandler(WKNavigationActionPolicyAllow);//允许跳转 } - (void)afterDelay { [self.webView evaluateJavaScript:@"javascript:adPlayFinish()" completionHandler:^(id _Nullable object, NSError * _Nullable error) {}]; } - (void)jsAdds { NSString *str = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"js"ofType:@"txt"] encoding:NSUTF8StringEncoding error:nil]; [self.webView evaluateJavaScript:str completionHandler:^(id _Nullable object, NSError * _Nullable error) {}]; } - (NormolNavView *)navView { if (!_navView) { _navView = [[NormolNavView alloc] initWithFrame:CGRectMake(0, 0, KScreenW, kStatusBarH + ALNavBarH)]; _navView.delegate = self; } return _navView; } - (DWKWebView *)webView { if (!_webView) { // 0.网页配置对象 WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init]; // 1.原生与JS交互管理 WKUserContentController *userContentController = [[WKUserContentController alloc] init]; // 添加 config.userContentController = userContentController; // 3.WKWebview设置 WKPreferences *prefer = [[WKPreferences alloc] init]; //设置是否支持javaScript 默认是支持的 prefer.javaScriptEnabled = YES; // // 在iOS上默认为NO,表示是否允许不经过用户交互由javaScript自动打开窗口 prefer.javaScriptCanOpenWindowsAutomatically = YES; // 添加 config.preferences = prefer; config.preferences.minimumFontSize = 0.0f; // 是使用h5的视频播放器在线播放, 还是使用原生播放器全屏播放 config.allowsInlineMediaPlayback = YES; //设置视频是否需要用户手动播放 设置为NO则会允许自动播放 config.mediaTypesRequiringUserActionForPlayback = YES; //设置是否允许画中画技术 在特定设备上有效 config.allowsPictureInPictureMediaPlayback = YES; //设置请求的User-Agent信息中应用程序名称 iOS9后可用 config.applicationNameForUserAgent = @"ChinaDailyForiPad"; config.suppressesIncrementalRendering = YES; _webView = [[DWKWebView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.navView.frame), KScreenW, KScreenH - CGRectGetHeight(self.navView.frame)) configuration:config]; _webView.DSUIDelegate = self; _webView.navigationDelegate = self; // 是否允许手势左滑返回上一级, 类似导航控制的左滑返回 _webView.allowsBackForwardNavigationGestures = YES; //可返回的页面列表, 存储已打开过的网页 //WKBackForwardList * backForwardList = [_webView backForwardList]; } return _webView; } - (NSString *)getParamByName:(NSString *)name URLString:(NSString *)url { NSError *error; NSString *regTags=[[NSString alloc] initWithFormat:@"(^|&|\\?)+%@=+([^&]*)(&|$)", name]; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regTags options:NSRegularExpressionCaseInsensitive error:&error]; // 执行匹配的过程 NSArray *matches = [regex matchesInString:url options:0 range:NSMakeRange(0, [url length])]; for (NSTextCheckingResult *match in matches) { NSString *tagValue = [url substringWithRange:[match rangeAtIndex:2]]; // 分组2所对应的串 return tagValue; } return @""; } - (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 BuWanVideo2.0/Common.h
@@ -34,6 +34,8 @@ #define YMQQSENT @"eXCvbRkrRbOsC8Cr" #define YMSinaKEY @"442189462" #define YMSinaSecret @"eabb2a6d2d6e1faae5fd0f787e950f57" // 购买vip链接 #define VIPLINK @"vipLink" //设置里面的web网页链接 #define changjianwenti [NSString stringWithFormat:@"http://video.yeshitv.com:8089/BuWan/api_question_ios.jsp?package=%@",[[NSBundle mainBundle] bundleIdentifier]]//常见问题 BuWanVideo2.0/JSAPI.m
@@ -7,6 +7,7 @@ // #import "JSAPI.h" #import "dsbridge.h" @implementation JSAPI @@ -52,6 +53,19 @@ return msg; } - (void)buyVip:(NSString *)msg completionHandler:(JSCallback)completionHandler { dispatch_async(dispatch_get_main_queue(), ^{ [[NSNotificationCenter defaultCenter] postNotificationName:@"buyVip" object:nil userInfo:@{@"code":msg?:@"",@"data" :completionHandler}]; }); } - (NSString *)vipPayFinish:(NSString *)msg { dispatch_async(dispatch_get_main_queue(), ^{ [[NSNotificationCenter defaultCenter] postNotificationName:@"vipPayFinish" object:nil userInfo:@{@"code":msg}]; }); return msg; } - (NSString *)jsonStringToJsonData:(id)dic { if (!dic || [dic isEqual:[NSNull null]]) { return @""; BuWanVideo2.0/MyRegardController.m
@@ -65,7 +65,7 @@ } -(void)initlist{ mytableview = [[UITableView alloc]initWithFrame:CGRectMake(10, 74, KScreenW - 20 , KScreenH-5) style:UITableViewStylePlain]; mytableview = [[UITableView alloc]initWithFrame:CGRectMake(10, 0, KScreenW - 20, KScreenH - 5) style:UITableViewStylePlain]; mytableview.delegate = self; mytableview.dataSource = self; mytableview.separatorStyle = UITableViewCellSeparatorStyleNone; BuWanVideo2.0/MymessageContrlloer.m
@@ -127,7 +127,7 @@ if (KIsiPhoneX) { height = 137; } tableview = [[UITableView alloc]initWithFrame:CGRectMake(10,segmentedControl.frame.origin.y + 1, KScreenW - 20, KScreenH - height + segmentedControl.frame.size.height) style:UITableViewStyleGrouped]; tableview = [[UITableView alloc]initWithFrame:CGRectMake(10, 0 + 1, KScreenW - 20, KScreenH - height + segmentedControl.frame.size.height) style:UITableViewStyleGrouped]; tableview.showsVerticalScrollIndicator = NO; tableview.backgroundColor = [UIColor clearColor]; tableview.delegate = self; BuWanVideo2.0/NormolNavView.h
New file @@ -0,0 +1,24 @@ // // NormolNavView.h // BuWanVideo2.0 // // Created by Aeline on 2021/7/18. // Copyright © 2021 com.yeshi.buwansheque.ios. All rights reserved. // #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @protocol NormolNavViewDelegate <NSObject> - (void)backVc; @end @interface NormolNavView : UIView @property (nonatomic, weak) id<NormolNavViewDelegate>delegate; @end NS_ASSUME_NONNULL_END BuWanVideo2.0/NormolNavView.m
New file @@ -0,0 +1,78 @@ // // NormolNavView.m // BuWanVideo2.0 // // Created by Aeline on 2021/7/18. // Copyright © 2021 com.yeshi.buwansheque.ios. All rights reserved. // #import "NormolNavView.h" @interface NormolNavView () @property (nonatomic, nullable, strong) UIView *viewBG; @property (nonatomic, nullable, strong) UIButton *buttonBack; @property (nonatomic, nullable, strong) UILabel *labelTitle; @end @implementation NormolNavView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor whiteColor]; [self setupViewConfig]; } return self; } - (void)setupViewConfig { [self addSubview:self.viewBG]; [self.viewBG addSubview:self.buttonBack]; [self.viewBG addSubview:self.labelTitle]; 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); } - (void)back { if (_delegate && [_delegate respondsToSelector:@selector(backVc)]) { [_delegate backVc]; } } - (void)setName:(NSString *)name { self.labelTitle.text = name; } - (UIView *)viewBG { if (!_viewBG) { _viewBG = [[UIView alloc] init]; } return _viewBG; } - (UIButton *)buttonBack { if (!_buttonBack) { _buttonBack = [UIButton buttonWithType:UIButtonTypeCustom]; [_buttonBack setImage:[UIImage imageNamed:@"详情页面返回"] forState:UIControlStateNormal]; [_buttonBack addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; } return _buttonBack; } - (UILabel *)labelTitle { if (!_labelTitle) { _labelTitle = [[UILabel alloc] init]; _labelTitle.text = @"VIP会员"; _labelTitle.font = [UIFont systemFontOfSize:17]; _labelTitle.textColor =UIColorFromRGBValue(0x000000); _labelTitle.textAlignment = NSTextAlignmentCenter; } return _labelTitle; } @end BuWanVideo2.0/PPTVBottomVIpVIew.m
@@ -152,6 +152,7 @@ } - (void)onBuyVip { [self onDelete]; !_buyVip?:_buyVip(); } BuWanVideo2.0/PPTVController.m
@@ -8,6 +8,7 @@ #import "PPTVController.h" #import "LoggingViewController.h" #import "BuyVipController.h" #import "PPTVNavView.h" #import "PPTVPppView.h" @@ -46,8 +47,6 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:animated]; } - (void)viewWillDisappear:(BOOL)animated { @@ -67,21 +66,11 @@ self.viewPPTVNav.name = _parms[@"name"]; self.viewPPTVNav.content = _parms[@"playUrl"]; [self.view addSubview:self.webView]; [self.view addSubview:self.viewPPTVPop]; [self.view addSubview:self.viewPPTVVip]; [self.webView addJavascriptObject:[[JSAPI alloc] init] namespace:@"yestv"]; // open debug mode, Release mode should disable this. [self.webView setDebugMode:true]; [self.webView customJavascriptDialogLabelTitles:@{@"alertTitle":@"Notification",@"alertBtn":@"OK"}]; //192.168.3.135 [[UIApplication sharedApplication].keyWindow addSubview:self.viewPPTVPop]; [[UIApplication sharedApplication].keyWindow addSubview:self.viewPPTVVip]; NSString *url = self.parms[@"playUrl"]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; [self.webView loadRequest:request]; [self loadWebView:url]; if (@available(iOS 13, *)) { @@ -94,6 +83,37 @@ //[self.webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL]; //修改滚动速度 } - (void)refrshData { [[YTHNetInterface startInterface] getLoginUserInfoWithUid:[YTHsharedManger startManger].Uid WithSystem:@"1" WithLoginUid:[[NSUserDefaults standardUserDefaults] objectForKey:@"LoginUid"] withBlock:^(BOOL isSuccessful, id result, NSString *error) { if (isSuccessful) { //首先判断数据是否获成功 NSString *err = [NSString stringWithFormat:@"%@",[result objectForKey:@"Error"]]; if (err.length == 0) { [[NSUserDefaults standardUserDefaults] setObject:[result objectForKey:@"Data"] forKey:@"buUserInfo"]; [[NSUserDefaults standardUserDefaults] synchronize]; [_webView removeFromSuperview]; _webView.DSUIDelegate = nil; _webView.navigationDelegate = nil; _webView = nil; [self.view addSubview:self.webView]; [self loadWebView:_content]; } } } ]; } - (void)loadWebView:(NSString *)url { [self.webView addJavascriptObject:[[JSAPI alloc] init] namespace:@"yestv"]; // open debug mode, Release mode should disable this. [self.webView setDebugMode:true]; [self.webView customJavascriptDialogLabelTitles:@{@"alertTitle":@"Notification",@"alertBtn":@"OK"}]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; [self.webView loadRequest:request]; } -(void)startFullScreen { @@ -133,6 +153,8 @@ #pragma mark --------- PPTVDelegate --------- - (void)backVc { [_viewPPTVPop removeFromSuperview]; [_viewPPTVVip removeFromSuperview]; [self.navigationController popViewControllerAnimated:YES]; } @@ -187,7 +209,12 @@ } - (void)loginSuccess { [self.webView reload]; [_webView removeFromSuperview]; _webView.DSUIDelegate = nil; _webView.navigationDelegate = nil; _webView = nil; [self.view addSubview:self.webView]; [self loadWebView:_content]; } // 页面开始加载时调用 @@ -211,6 +238,12 @@ NSString *strRequest = navigationAction.request.URL.absoluteString; if ([strRequest containsString:@"acmd.api.pptv.com"] && [strRequest containsString:@"bwysdqmovie"]) { if (![_content isEqualToString:strRequest] && _content) { decisionHandler(WKNavigationActionPolicyCancel); self.content = strRequest; [self loginSuccess]; return; } self.content = strRequest; self.viewPPTVNav.content = strRequest; [self jsAdds]; @@ -295,7 +328,13 @@ @weakify(self) _viewPPTVVip.buyVip = ^{ @strongify(self) NSLog(@""); BuyVipController *vc = [[BuyVipController alloc] init]; @weakify(self) vc.refrshData = ^{ @strongify(self) [self refrshData]; }; [self.navigationController pushViewController:vc animated:YES]; }; // _viewPPTVVip.delegate = self; } BuWanVideo2.0/Recommend/HDController/HDController.h
File was deleted BuWanVideo2.0/Recommend/HDController/HDController.m
File was deleted BuWanVideo2.0/Recommend/HDController/cell/HDHeaderCell.h
File was deleted BuWanVideo2.0/Recommend/HDController/cell/HDHeaderCell.m
File was deleted BuWanVideo2.0/Recommend/RecommendMainController.m
@@ -9,12 +9,12 @@ #import "RecommendMainController.h" #import "RecommendController.h" #import "HDController.h" #import "ListController.h" @interface RecommendMainController () <ZJScrollPageViewDelegate> @property(nonatomic, nullable, strong) ZJScrollPageView *scrollPageView; @property (nonatomic, strong) UIView *primtView; @property (nonatomic, nullable, strong) NSMutableArray *arrayClassName; @property (nonatomic, nullable, strong) NSMutableArray *arrayKeyName; @@ -42,14 +42,16 @@ - (void)viewDidLoad { [super viewDidLoad]; [self NetworkMonitoring]; [self.view addSubview:self.primtView]; [self setuoDataConfig]; [self loadDataFromFile]; //[self loadDataFromFile]; } - (void)setuoDataConfig { } -(void)loadDataFromFile{ -(void)loadDataFromFile { [[YTHNetInterface startInterface]cancelAll]; [[YTHNetInterface startInterface] getVideoClassWithUid:[YTHsharedManger startManger].Uid WithSystem:@"1" withBlock:^(BOOL isSuccessful, id result, NSString *error) { @@ -59,9 +61,69 @@ [self.arrayClassName addObject:result[@"Data"][@"data"][i][@"Name"]]; [self.arrayKeyName addObject:result[@"Data"][@"data"][i]]; } self.primtView.hidden = YES; [self setupViewConfig]; } else{ if ([error compare:@"似乎已断开与互联网的连接。"] == 0) { [self notHaveNetWork]; } } }]; } #pragma mark 添加网络监测 - (void)NetworkMonitoring{ [[AFNetworkReachabilityManager sharedManager] startMonitoring]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChang:) name:AFNetworkingReachabilityDidChangeNotification object:nil]; } - (void) reachabilityChang: (NSNotification*)note { switch ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus) { case AFNetworkReachabilityStatusNotReachable:{//无网 [YTHsharedManger startManger].NetworkStatus = 0; if (self.arrayClassName.count == 0) { self.primtView.hidden = NO; } else { [self autoDisappearAlertTime:1 msg:@"网络不可用,请检查网络"]; } } break; case AFNetworkReachabilityStatusReachableViaWWAN:{//万维网 [YTHsharedManger startManger].NetworkStatus = 1; if (self.arrayClassName.count == 0) { [self loadDataFromFile]; } } break; case AFNetworkReachabilityStatusReachableViaWiFi:{// 使用WiFi网络 [YTHsharedManger startManger].NetworkStatus = 2; if (self.arrayClassName.count == 0) { [self loadDataFromFile]; } } break; case AFNetworkReachabilityStatusUnknown:{// 当前网络未知 [YTHsharedManger startManger].NetworkStatus = 3; } break; } } - (void)notHaveNetWork { self.primtView.hidden = NO; } - (void)refreshTaped:(UIButton *)sender { [self loadDataFromFile]; } @@ -118,21 +180,6 @@ vc.parms = _arrayKeyName[index]; childVc = vc; } // if (index == 0) { // // // } else if (index == 1) { // LifeHomeController *vc = [[LifeHomeController alloc] init]; // childVc = vc; // // } else if (index == 2) { // HDController *vc = [[HDController alloc] init]; // childVc = vc; // // } else { // // } } return childVc; } @@ -150,4 +197,35 @@ } return _arrayKeyName; } - (UIView *)primtView { if (_primtView) { return _primtView; } _primtView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; // _primtView .backgroundColor = SJColor(98, 98,86 , 1); _primtView.backgroundColor = [UIColor whiteColor]; UIImageView *imageview = [[UIImageView alloc]initWithFrame:CGRectMake((KScreenW - KScreenW / 3) / 2, KScreenH / 2 - KScreenW / 3 , KScreenW / 3 , KScreenW / 3)]; imageview.image = [UIImage imageNamed: @"nowifi"]; // imageview.backgroundColor = [UIColor orangeColor]; [_primtView addSubview:imageview]; UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(imageview.frame), KScreenW , 30)]; label.textColor = SJColor(98, 98, 98, 1); label.text = @"无法连接到网络..."; label.font = [UIFont boldSystemFontOfSize:18]; label.textAlignment = NSTextAlignmentCenter; [_primtView addSubview:label]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake((KScreenW - KScreenW / 3) / 2, CGRectGetMaxY(label.frame) + 15, KScreenW / 3, 30); button.backgroundColor = SJColor(25, 169, 249, 1); button.titleLabel.font = [UIFont systemFontOfSize:16]; [button setTitle:@"重新加载" forState:UIControlStateNormal]; button.layer.cornerRadius = 5; button.layer.masksToBounds = YES; [button addTarget:self action:@selector(refreshTaped:) forControlEvents:UIControlEventTouchUpInside]; [_primtView addSubview:button]; _primtView.hidden = YES; return _primtView; } @end BuWanVideo2.0/SettingController.m
@@ -25,6 +25,11 @@ @implementation SettingController - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:NO animated:animated]; } - (void)viewDidLoad { [super viewDidLoad]; @@ -81,12 +86,17 @@ * 用于退出登录 */ -(void)OutOfLogin{ [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"buUserInfo"]; [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"userOnLine"]; [[NSUserDefaults standardUserDefaults] synchronize]; [[NSNotificationCenter defaultCenter] postNotificationName:@"RELOAD_DATA" object:nil]; [self.navigationController popViewControllerAnimated:YES]; } - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { } #pragma mark UITableViewDelegate UITableViewDataSource @@ -138,12 +148,14 @@ [cell.total sizeToFit]; [cell.margin sizeToFit]; return cell; }else if(indexPath.section==3){ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:indentfly]; if (cell==nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:indentfly]; [cell setAccessoryType:UITableViewCellAccessoryNone]; } UIButton *outButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, KScreenW, 44)]; [outButton setBackgroundColor:kGlobalBlueColor]; [outButton setTitle:@"退出登录" forState:UIControlStateNormal]; @@ -211,6 +223,10 @@ break; } } if(indexPath.section == 3 && indexPath.row == 0) { [self OutOfLogin]; } } #pragma mark 删除沙盒里的文件 BuWanVideo2.0/SettingWebView.m
@@ -18,6 +18,7 @@ - (void)viewDidLoad { [super viewDidLoad]; self.title = _webTitle; self.view.backgroundColor = [UIColor whiteColor]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:[[UIImage imageNamed:@"详情页面返回"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal]; @@ -45,7 +46,7 @@ height = 84; } WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, height, KScreenW, KScreenH - height)]; WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, KScreenW, KScreenH - height)]; [self.view addSubview: webView]; NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:_requestURL]]; [webView loadRequest:request]; BuWanVideo2.0/js.txt
@@ -1,3 +1,3 @@ var bridge={default:this,call:function(i,s,t){var d,e="";return"function"==typeof s&&(t=s,s={}),s={data:void 0===s?null:s},"function"==typeof t&&(d="dscb"+window.dscb++,window[d]=t,s._dscbstub=d),s=JSON.stringify(s),window._dsbridge?e=_dsbridge.call(i,s):!window._dswk&&-1==navigator.userAgent.indexOf("_dsbridge")||(e=prompt("_dsbridge="+i,s)),JSON.parse(e||"{}").data},register:function(i,s,t){t=t?window._dsaf:window._dsf,window._dsInit||(window._dsInit=!0,setTimeout(function(){bridge.call("_dsb.dsinit")},0)),"object"==typeof s?t._obs[i]=s:t[i]=s},registerAsyn:function(i,s){this.register(i,s,!0)},hasNativeMethod:function(i,s){return this.call("_dsb.hasNativeMethod",{name:i,type:s||"all"})},disableJavascriptDialogBlock:function(i){this.call("_dsb.disableJavascriptDialogBlock",{disable:!1!==i})}};!function(){if(!window._dsf){var i,s={_dsf:{_obs:{}},_dsaf:{_obs:{}},dscb:0,dsBridge:bridge,close:function(){bridge.call("_dsb.closePage")},_handleMessageFromNative:function(i){function s(i,s){n.data=i.apply(s,e),bridge.call("_dsb.returnValue",n)}function t(i,s){e.push(function(i,s){n.data=i,n.complete=!1!==s,bridge.call("_dsb.returnValue",n)}),i.apply(s,e)}var d,e=JSON.parse(i.data),n={id:i.callbackId,complete:!0},o=this._dsf[i.method],a=this._dsaf[i.method];o?s(o,this._dsf):a?t(a,this._dsaf):(o=i.method.split(".")).length<2||(i=o.pop(),o=o.join("."),(d=(a=(a=this._dsf._obs)[o]||{})[i])&&"function"==typeof d?s(d,a):(d=(a=(a=this._dsaf._obs)[o]||{})[i])&&"function"==typeof d&&t(d,a))}};for(i in s)window[i]=s[i];bridge.register("_hasJavascriptMethod",function(i,s){return(s=i.split(".")).length<2?!(!_dsf[s]&&!_dsaf[s]):(i=s.pop(),s=s.join("."),(s=_dsf._obs[s]||_dsaf._obs[s])&&!!s[i])})}}(); var ppyestv={login:function(){ console.log("pptv-login"); bridge.call("yestv.login")},getUserInfo:function(){return bridge.call("yestv.getUserInfo")},tryPlayFinish:function(){bridge.call("yestv.tryPlayFinish")},playFinish:function(){bridge.call("yestv.playFinish")}}; if(!window.ppyestv) {window.ppyestv={login:function(){ console.log("pptv-login"); bridge.call("yestv.login")},getUserInfo:function(){return bridge.call("yestv.getUserInfo")},tryPlayFinish:function(){bridge.call("yestv.tryPlayFinish")},playFinish:function(){bridge.call("yestv.playFinish")}};} BuWanVideo2.0/recommendViewController.m
@@ -119,7 +119,7 @@ self.primtView.hidden = YES; } - (UIView *)primtView{ - (UIView *)primtView { if (_primtView) { return _primtView; }