al
liurenjie
2021-07-18 022a805ce2745d74036b94758939b6f4d5fe5a3d
al
4个文件已删除
15个文件已修改
4个文件已添加
1256 ■■■■■ 已修改文件
BuWanVideo2.0.xcodeproj/project.pbxproj 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0.xcworkspace/xcuserdata/aeline.xcuserdatad/UserInterfaceState.xcuserstate 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0.xcworkspace/xcuserdata/aeline.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/AppDelegate.m 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/BuyVipController.h 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/BuyVipController.m 369 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/Common.h 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/JSAPI.m 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/MyRegardController.m 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/MymessageContrlloer.m 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/NormolNavView.h 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/NormolNavView.m 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/PPTVBottomVIpVIew.m 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/PPTVController.m 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/Recommend/HDController/HDController.h 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/Recommend/HDController/HDController.m 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/Recommend/HDController/cell/HDHeaderCell.h 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/Recommend/HDController/cell/HDHeaderCell.m 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/Recommend/RecommendMainController.m 114 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/SettingController.m 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/SettingWebView.m 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/js.txt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo2.0/recommendViewController.m 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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.xcuserstate
Binary 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;
    }