├── .gitignore
├── LICENSE
├── README.md
├── SwiftProject
├── NJDouYu.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── NJDouYu.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── NJDouYu
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── Info.plist
│ ├── NJAppDelegate.swift
│ ├── NJConst.swift
│ ├── NJDouYu.entitlements
│ ├── NJDouyuOC2SwiftBridge.h
│ ├── NJLanuchScreen.xib
│ └── NJTabBarController.swift
└── Podfile
├── docs
├── 斗鱼弹幕服务器第三方接入协议v1.6.2.pdf
└── 斗鱼第三方开放平台API文档v2.2.pdf
└── images
├── NJIJKPlayer_baidu.png
├── Swiftmulu.png
├── category.png
├── categoryList.png
├── douyuliveroom.png
├── homeList.png
├── homenowshow.png
├── mediator.png
├── njtabbarcontroller.png
├── nowshowliveroom.png
├── videoList.jpeg
└── videoPlayprotrait.jpeg
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 |
20 | ## Other
21 | *.moved-aside
22 | *.xccheckout
23 | *.xcscmblueprint
24 |
25 | ## Obj-C/Swift specific
26 | *.hmap
27 | *.ipa
28 | *.dSYM.zip
29 | *.dSYM
30 |
31 | ## Playgrounds
32 | timeline.xctimeline
33 | playground.xcworkspace
34 |
35 | # Swift Package Manager
36 | #
37 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
38 | # Packages/
39 | # Package.pins
40 | # Package.resolved
41 | .build/
42 |
43 | # CocoaPods
44 | #
45 | # We recommend against adding the Pods directory to your .gitignore. However
46 | # you should judge for yourself, the pros and cons are mentioned at:
47 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
48 | #
49 | Pods/
50 | Podfile.lock
51 |
52 |
53 | # Carthage
54 | #
55 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
56 | # Carthage/Checkouts
57 |
58 | Carthage/Build
59 |
60 | # fastlane
61 | #
62 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
63 | # screenshots whenever they are needed.
64 | # For more information about the recommended setup visit:
65 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
66 |
67 | fastlane/report.xml
68 | fastlane/Preview.html
69 | fastlane/screenshots/**/*.png
70 | fastlane/test_output
71 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 XuPeng
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
在武汉打算换工作啦, 有坑位推荐的朋友请加我微信~谢谢~
3 |
4 |
5 |
6 |
7 | |**SwiftProject 简介**|模块交互|
8 | |:---|:---:|
9 | |`最彻底的组件化` `正在进行中` **`经常pod update`** [组件仓库-查看](https://github.com/NJHu/NJSpecs.git)|**实线表示依赖和调用, 虚线表示动态调用** |
10 |
11 | GitHub: [NJHu](https://github.com/njhu) | 简书: [NJHu](https://www.jianshu.com/u/dbc8e7afeb3d) | Blog: [NJHu](https://www.weibo.com/njhu) | Email: [64hp@163.com](mailto:64hp@163.com)
12 |
13 | ## 部分截图
14 |
15 | |||||
16 | |---|---|---|---|
17 | |||||
18 |
19 | ## 如何运行成功?Xcode10
20 | |步骤|截图|
21 | |:---|:---:|
22 | |1, 到**百度网盘**下载[**NJIJKPlayer**](https://pan.baidu.com/s/1rqpRY5hizieBdNeIum2npA) 2, 执行命令 `sudo gem install cocoapods` 保证pod版本>=1.5.3 3, 然后**pod update** 或者 **pod install** ||
23 |
24 | ## 项目结构
25 | > 一切皆组件, 组件皆一切
26 |
27 | - 1, 主工程只需要拥有 NJAppDelegate 和 NJTabBarController.
28 | - 2, 其他所有的功能都在相应的组件里边
29 |
30 | |目录结构|TabBarController|
31 | |:---:|:---:|
32 | |||
33 |
34 |
35 | ### Podfile
36 |
37 | ```bash
38 | def release_remote_pods
39 |
40 | source 'https://github.com/NJHu/NJSpecs.git' # NJ 私有源
41 | # 基础组件
42 | pod 'NJKit'
43 | # 中间件
44 | pod 'NJMediator', :source => 'https://github.com/NJHu/NJSpecs.git'
45 | # IJK
46 | pod 'NJIJKPlayer', :path => '../../NJIJKPlayer/'
47 | pod 'NJDYPlayer'
48 |
49 | # 个人偏好模块
50 | pod 'DYTrends'
51 | pod 'NJMediator_DYTrends'
52 |
53 | # 直播列表
54 | pod 'DYLiveShow'
55 | pod 'NJMediator_DYLiveShow'
56 | # 直播间
57 | pod 'DYLiveRoom'
58 |
59 | # NowShow组件
60 | pod 'NJNowShow'
61 | pod 'NJMediator_NJNowShow'
62 | # NowShow直播间
63 | pod 'NJNowShowPlay'
64 |
65 | # 视频列表
66 | pod 'NJSisVideoList'
67 | pod 'NJMediator_NJSisVideoList'
68 | # 视频播放页面
69 | pod 'NJSisPlayPage'
70 |
71 | end
72 | ```
73 |
74 | ## 现有组件列表和依赖关系
75 | > 仓库: https://github.com/NJHu/NJSpecs.git
76 |
77 | |编号|组件|简介|依赖|
78 | |:---|:---|:---|:---|
79 | |0|[NJKit](https://github.com/NJHu/NJKit.git)|基类和工具|SnapKit, MJRefresh, Alamofire, SwiftyJSON, AlamofireImage|
80 | |1|[NJMediator](https://github.com/NJHu/NJMediator.git)|中间件: Target-Action||
81 | |2|[NJIJKPlayer](https://github.com/NJHu/NJIJKPlayer.git)|编译后的IJKFramework, 支持真机和模拟器||
82 | |3|[NJDYPlayer](https://github.com/NJHu/NJDYPlayer.git)|播放器, 直播和视频均支持|[NJIJKPlayer](https://github.com/NJHu/NJIJKPlayer.git) [NJKit](https://github.com/NJHu/NJKit.git)|
83 | |4|[NJDYSearchBarView](https://github.com/NJHu/NJDYSearchBarView.git)|搜索组件|[NJKit](https://github.com/NJHu/NJKit.git)|
84 | |5|[DYLiveShow](https://github.com/NJHu/DYLiveShow.git)|直播列表|[NJKit](https://github.com/NJHu/NJKit.git) [NJMediator_DYLiveRoom-直播间中间件](https://github.com/NJHu/NJMediator_DYLiveRoom.git) [NJDYSearchBarView-搜索组件](https://github.com/NJHu/NJDYSearchBarView.git)|
85 | |6|[NJMediator_DYLiveShow](https://github.com/NJHu/NJMediator_DYLiveShow.git)|直播列表中间件|[NJMediator-中间件](https://github.com/NJHu/NJMediator.git)|
86 | |7|[DYLiveRoom](https://github.com/NJHu/DYLiveRoom.git)|直播间|[NJKit](https://github.com/NJHu/NJKit.git) [NJDYPlayer](https://github.com/NJHu/NJDYPlayer.git)|
87 | |8|[NJMediator_DYLiveRoom](https://github.com/NJHu/NJMediator_DYLiveRoom.git)|直播间中间件|[NJMediator-中间件](https://github.com/NJHu/NJMediator.git)|
88 | |9|[NJNowShow](https://github.com/NJHu/NJNowShow.git)|NowShow列表, 模仿腾讯NowShow|[NJKit](https://github.com/NJHu/NJKit.git) [NJMediator_NJNowShowPlay-播放中间件](https://github.com/NJHu/NJMediator_NJNowShowPlay.git)|
89 | |10|[NJMediator_NJNowShow](https://github.com/NJHu/NJMediator_NJNowShow.git)|NowShow播放列表中间件|[NJMediator-中间件](https://github.com/NJHu/NJMediator.git)|
90 | |11|[NJNowShowPlay](https://github.com/NJHu/NJNowShowPlay.git)|NowShow播放界面组件|[NJKit](https://github.com/NJHu/NJKit.git) [NJDYPlayer](https://github.com/NJHu/NJDYPlayer.git)|
91 | |12|[NJMediator_NJNowShowPlay](https://github.com/NJHu/NJMediator_NJNowShowPlay.git)|Now播放界面中间件|[NJMediator-中间件](https://github.com/NJHu/NJMediator.git)|
92 | |13|[NJSisVideoList](https://github.com/NJHu/NJSisVideoList.git)|视频列表|[NJKit](https://github.com/NJHu/NJKit.git) [NJMediator_NJSisPlayPage-视频播放界面中间件](https://github.com/NJHu/NJMediator_NJSisPlayPage.git)|
93 | |14|[NJMediator_NJSisVideoList](https://github.com/NJHu/NJMediator_NJSisVideoList.git)|视频列表中间件|[NJMediator](https://github.com/NJHu/NJMediator.git)|
94 | |15|[NJSisPlayPage](https://github.com/NJHu/NJSisPlayPage.git)|视频播放界面|[NJKit](https://github.com/NJHu/NJKit.git) [NJDYPlayer](https://github.com/NJHu/NJDYPlayer.git)|
95 | |16|[NJMediator_NJSisPlayPage](https://github.com/NJHu/NJMediator_NJSisPlayPage.git)|视频播放界面中间件|[NJMediator](https://github.com/NJHu/NJMediator.git)|
96 | |17|[DYTrends](https://github.com/NJHu/DYTrends.git)|个人偏好组件|[NJKit](https://github.com/NJHu/NJKit.git)|
97 | |18|[NJMediator_DYTrends](https://github.com/NJHu/NJMediator_DYTrends.git)|个人偏好界面中间件|[NJMediator](https://github.com/NJHu/NJMediator.git)|
98 | |19|[NJFAQ](https://github.com/NJHu/NJFAQ.git)|常见问题解答|[NJKit](https://github.com/NJHu/NJKit.git)|
99 | |20|[NJMediator_NJFAQ](https://github.com/NJHu/NJMediator_NJFAQ.git)|常见问题解答中间件|[NJMediator](https://github.com/NJHu/NJMediator.git)|
100 |
101 | ## 参考文章
102 | - [如何快速的开发一个完整的iOS直播app](https://www.jianshu.com/p/bd42bacbe4cc)
103 | - [iOS应用架构谈 组件化方案](https://casatwy.com/iOS-Modulization.html)
104 | - [组件化架构漫谈](https://www.jianshu.com/p/67a6004f6930)
105 | - [在现有工程中实施基于CTMediator的组件化方案](https://casatwy.com/modulization_in_action.html)
106 |
107 | ## 声明
108 |
109 | - 1, 本项目仅供交流学习使用
110 | - 2, 该项目**接口和数据**来自[第三方开放平台 斗鱼开发者论坛](http://dev-bbs.douyutv.com/forum.php?mod=forumdisplay&fid=37)
111 | - 3, 该项目中**图片资源**来自[iconfont](http://iconfont.cn/)
112 | - 4, 如果有侵权, 请联系Email: [64hp@163.com](mailto:64hp@163.com)
113 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 48;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 582B9FCB20F08D3900AED078 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 582B9FCA20F08D3900AED078 /* StoreKit.framework */; };
11 | 582B9FD320F0C3C800AED078 /* NJTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 582B9FD220F0C3C800AED078 /* NJTabBarController.swift */; };
12 | 5836E9322143A35E006CB1A4 /* NJConst.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5836E9312143A35E006CB1A4 /* NJConst.swift */; };
13 | 58A5A24720C10905008BDBA1 /* NJLanuchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 58A5A24620C10905008BDBA1 /* NJLanuchScreen.xib */; };
14 | 58B36C1F20AAFD8200915868 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 58B36C1E20AAFD8200915868 /* Assets.xcassets */; };
15 | 58B36C5620AAFE2700915868 /* NJAppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58B36C4620AAFE2700915868 /* NJAppDelegate.swift */; };
16 | 84B2026AEAF8CB3554F9FDF6 /* Pods_NJDouYu.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E36195BC68DD83288460F65A /* Pods_NJDouYu.framework */; };
17 | /* End PBXBuildFile section */
18 |
19 | /* Begin PBXFileReference section */
20 | 582B9FC720F08C2300AED078 /* NJDouYu.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NJDouYu.entitlements; sourceTree = ""; };
21 | 582B9FCA20F08D3900AED078 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
22 | 582B9FD220F0C3C800AED078 /* NJTabBarController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NJTabBarController.swift; sourceTree = ""; };
23 | 5836E9312143A35E006CB1A4 /* NJConst.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NJConst.swift; sourceTree = ""; };
24 | 58A5A24620C10905008BDBA1 /* NJLanuchScreen.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NJLanuchScreen.xib; sourceTree = ""; };
25 | 58B36C1420AAFD8200915868 /* NJDouYu.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NJDouYu.app; sourceTree = BUILT_PRODUCTS_DIR; };
26 | 58B36C1E20AAFD8200915868 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
27 | 58B36C2320AAFD8200915868 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
28 | 58B36C4520AAFE2600915868 /* NJDouyuOC2SwiftBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NJDouyuOC2SwiftBridge.h; sourceTree = ""; };
29 | 58B36C4620AAFE2700915868 /* NJAppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NJAppDelegate.swift; sourceTree = ""; };
30 | 76C63CACA4FC8CDA0B3CB770 /* Pods-NJDouYu.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NJDouYu.debug.xcconfig"; path = "Pods/Target Support Files/Pods-NJDouYu/Pods-NJDouYu.debug.xcconfig"; sourceTree = ""; };
31 | C8BBDF67950D9426C6F7C3D4 /* Pods-NJDouYu.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NJDouYu.release.xcconfig"; path = "Pods/Target Support Files/Pods-NJDouYu/Pods-NJDouYu.release.xcconfig"; sourceTree = ""; };
32 | E36195BC68DD83288460F65A /* Pods_NJDouYu.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_NJDouYu.framework; sourceTree = BUILT_PRODUCTS_DIR; };
33 | /* End PBXFileReference section */
34 |
35 | /* Begin PBXFrameworksBuildPhase section */
36 | 58B36C1120AAFD8200915868 /* Frameworks */ = {
37 | isa = PBXFrameworksBuildPhase;
38 | buildActionMask = 2147483647;
39 | files = (
40 | 582B9FCB20F08D3900AED078 /* StoreKit.framework in Frameworks */,
41 | 84B2026AEAF8CB3554F9FDF6 /* Pods_NJDouYu.framework in Frameworks */,
42 | );
43 | runOnlyForDeploymentPostprocessing = 0;
44 | };
45 | /* End PBXFrameworksBuildPhase section */
46 |
47 | /* Begin PBXGroup section */
48 | 52AE228EF275E603ABD0D7B3 /* Frameworks */ = {
49 | isa = PBXGroup;
50 | children = (
51 | 582B9FCA20F08D3900AED078 /* StoreKit.framework */,
52 | E36195BC68DD83288460F65A /* Pods_NJDouYu.framework */,
53 | );
54 | name = Frameworks;
55 | sourceTree = "";
56 | };
57 | 58B36C0B20AAFD8200915868 = {
58 | isa = PBXGroup;
59 | children = (
60 | 58B36C1620AAFD8200915868 /* NJDouYu */,
61 | 58B36C1520AAFD8200915868 /* Products */,
62 | C350E21DBBC9A4E8A88596E9 /* Pods */,
63 | 52AE228EF275E603ABD0D7B3 /* Frameworks */,
64 | );
65 | sourceTree = "";
66 | };
67 | 58B36C1520AAFD8200915868 /* Products */ = {
68 | isa = PBXGroup;
69 | children = (
70 | 58B36C1420AAFD8200915868 /* NJDouYu.app */,
71 | );
72 | name = Products;
73 | sourceTree = "";
74 | };
75 | 58B36C1620AAFD8200915868 /* NJDouYu */ = {
76 | isa = PBXGroup;
77 | children = (
78 | 582B9FC720F08C2300AED078 /* NJDouYu.entitlements */,
79 | 58B36C2320AAFD8200915868 /* Info.plist */,
80 | 58B36C4620AAFE2700915868 /* NJAppDelegate.swift */,
81 | 5836E9312143A35E006CB1A4 /* NJConst.swift */,
82 | 58B36C4520AAFE2600915868 /* NJDouyuOC2SwiftBridge.h */,
83 | 58A5A24620C10905008BDBA1 /* NJLanuchScreen.xib */,
84 | 582B9FD220F0C3C800AED078 /* NJTabBarController.swift */,
85 | 58B36C1E20AAFD8200915868 /* Assets.xcassets */,
86 | );
87 | path = NJDouYu;
88 | sourceTree = "";
89 | };
90 | C350E21DBBC9A4E8A88596E9 /* Pods */ = {
91 | isa = PBXGroup;
92 | children = (
93 | 76C63CACA4FC8CDA0B3CB770 /* Pods-NJDouYu.debug.xcconfig */,
94 | C8BBDF67950D9426C6F7C3D4 /* Pods-NJDouYu.release.xcconfig */,
95 | );
96 | name = Pods;
97 | sourceTree = "";
98 | };
99 | /* End PBXGroup section */
100 |
101 | /* Begin PBXNativeTarget section */
102 | 58B36C1320AAFD8200915868 /* NJDouYu */ = {
103 | isa = PBXNativeTarget;
104 | buildConfigurationList = 58B36C3C20AAFD8200915868 /* Build configuration list for PBXNativeTarget "NJDouYu" */;
105 | buildPhases = (
106 | 877C833CAECBC0D3EB568E68 /* [CP] Check Pods Manifest.lock */,
107 | 58B36C1020AAFD8200915868 /* Sources */,
108 | 58B36C1120AAFD8200915868 /* Frameworks */,
109 | 58B36C1220AAFD8200915868 /* Resources */,
110 | F12B7AECA45FC8A1AD4A715E /* [CP] Embed Pods Frameworks */,
111 | 06B2DB9DB4C17643F6441778 /* [CP] Copy Pods Resources */,
112 | );
113 | buildRules = (
114 | );
115 | dependencies = (
116 | );
117 | name = NJDouYu;
118 | productName = NJDouYu;
119 | productReference = 58B36C1420AAFD8200915868 /* NJDouYu.app */;
120 | productType = "com.apple.product-type.application";
121 | };
122 | /* End PBXNativeTarget section */
123 |
124 | /* Begin PBXProject section */
125 | 58B36C0C20AAFD8200915868 /* Project object */ = {
126 | isa = PBXProject;
127 | attributes = {
128 | CLASSPREFIX = NJ;
129 | LastSwiftUpdateCheck = 0920;
130 | LastUpgradeCheck = 0930;
131 | ORGANIZATIONNAME = njhu;
132 | TargetAttributes = {
133 | 58B36C1320AAFD8200915868 = {
134 | CreatedOnToolsVersion = 9.2;
135 | LastSwiftMigration = 0920;
136 | ProvisioningStyle = Automatic;
137 | SystemCapabilities = {
138 | com.apple.BackgroundModes = {
139 | enabled = 1;
140 | };
141 | com.apple.InAppPurchase = {
142 | enabled = 1;
143 | };
144 | com.apple.InterAppAudio = {
145 | enabled = 0;
146 | };
147 | com.apple.Push = {
148 | enabled = 1;
149 | };
150 | com.apple.SafariKeychain = {
151 | enabled = 1;
152 | };
153 | };
154 | };
155 | };
156 | };
157 | buildConfigurationList = 58B36C0F20AAFD8200915868 /* Build configuration list for PBXProject "NJDouYu" */;
158 | compatibilityVersion = "Xcode 8.0";
159 | developmentRegion = en;
160 | hasScannedForEncodings = 0;
161 | knownRegions = (
162 | en,
163 | Base,
164 | );
165 | mainGroup = 58B36C0B20AAFD8200915868;
166 | productRefGroup = 58B36C1520AAFD8200915868 /* Products */;
167 | projectDirPath = "";
168 | projectRoot = "";
169 | targets = (
170 | 58B36C1320AAFD8200915868 /* NJDouYu */,
171 | );
172 | };
173 | /* End PBXProject section */
174 |
175 | /* Begin PBXResourcesBuildPhase section */
176 | 58B36C1220AAFD8200915868 /* Resources */ = {
177 | isa = PBXResourcesBuildPhase;
178 | buildActionMask = 2147483647;
179 | files = (
180 | 58A5A24720C10905008BDBA1 /* NJLanuchScreen.xib in Resources */,
181 | 58B36C1F20AAFD8200915868 /* Assets.xcassets in Resources */,
182 | );
183 | runOnlyForDeploymentPostprocessing = 0;
184 | };
185 | /* End PBXResourcesBuildPhase section */
186 |
187 | /* Begin PBXShellScriptBuildPhase section */
188 | 06B2DB9DB4C17643F6441778 /* [CP] Copy Pods Resources */ = {
189 | isa = PBXShellScriptBuildPhase;
190 | buildActionMask = 2147483647;
191 | files = (
192 | );
193 | inputPaths = (
194 | "${PODS_ROOT}/Target Support Files/Pods-NJDouYu/Pods-NJDouYu-resources.sh",
195 | "${PODS_CONFIGURATION_BUILD_DIR}/DYLiveRoom/DYLiveRoom.bundle",
196 | "${PODS_CONFIGURATION_BUILD_DIR}/NJDYPlayer/NJDYPlayer.bundle",
197 | "${PODS_CONFIGURATION_BUILD_DIR}/NJFAQ/NJFAQ.bundle",
198 | "${PODS_CONFIGURATION_BUILD_DIR}/NJNowShowPlay/NJNowShowPlay.bundle",
199 | "${PODS_CONFIGURATION_BUILD_DIR}/NJSisPlayPage/NJSisPlayPage.bundle",
200 | );
201 | name = "[CP] Copy Pods Resources";
202 | outputPaths = (
203 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DYLiveRoom.bundle",
204 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/NJDYPlayer.bundle",
205 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/NJFAQ.bundle",
206 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/NJNowShowPlay.bundle",
207 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/NJSisPlayPage.bundle",
208 | );
209 | runOnlyForDeploymentPostprocessing = 0;
210 | shellPath = /bin/sh;
211 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NJDouYu/Pods-NJDouYu-resources.sh\"\n";
212 | showEnvVarsInLog = 0;
213 | };
214 | 877C833CAECBC0D3EB568E68 /* [CP] Check Pods Manifest.lock */ = {
215 | isa = PBXShellScriptBuildPhase;
216 | buildActionMask = 2147483647;
217 | files = (
218 | );
219 | inputPaths = (
220 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
221 | "${PODS_ROOT}/Manifest.lock",
222 | );
223 | name = "[CP] Check Pods Manifest.lock";
224 | outputPaths = (
225 | "$(DERIVED_FILE_DIR)/Pods-NJDouYu-checkManifestLockResult.txt",
226 | );
227 | runOnlyForDeploymentPostprocessing = 0;
228 | shellPath = /bin/sh;
229 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
230 | showEnvVarsInLog = 0;
231 | };
232 | F12B7AECA45FC8A1AD4A715E /* [CP] Embed Pods Frameworks */ = {
233 | isa = PBXShellScriptBuildPhase;
234 | buildActionMask = 2147483647;
235 | files = (
236 | );
237 | inputPaths = (
238 | "${PODS_ROOT}/Target Support Files/Pods-NJDouYu/Pods-NJDouYu-frameworks.sh",
239 | "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
240 | "${BUILT_PRODUCTS_DIR}/AlamofireImage/AlamofireImage.framework",
241 | "${BUILT_PRODUCTS_DIR}/DYLiveShow/DYLiveShow.framework",
242 | "${BUILT_PRODUCTS_DIR}/DYTrends/DYTrends.framework",
243 | "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework",
244 | "${BUILT_PRODUCTS_DIR}/NJDYSearchBarView/NJDYSearchBarView.framework",
245 | "${BUILT_PRODUCTS_DIR}/NJKit/NJKit.framework",
246 | "${BUILT_PRODUCTS_DIR}/NJMediator/NJMediator.framework",
247 | "${BUILT_PRODUCTS_DIR}/NJMediator_DYLiveRoom/NJMediator_DYLiveRoom.framework",
248 | "${BUILT_PRODUCTS_DIR}/NJMediator_DYLiveShow/NJMediator_DYLiveShow.framework",
249 | "${BUILT_PRODUCTS_DIR}/NJMediator_DYTrends/NJMediator_DYTrends.framework",
250 | "${BUILT_PRODUCTS_DIR}/NJMediator_NJFAQ/NJMediator_NJFAQ.framework",
251 | "${BUILT_PRODUCTS_DIR}/NJMediator_NJNowShow/NJMediator_NJNowShow.framework",
252 | "${BUILT_PRODUCTS_DIR}/NJMediator_NJNowShowPlay/NJMediator_NJNowShowPlay.framework",
253 | "${BUILT_PRODUCTS_DIR}/NJMediator_NJSisPlayPage/NJMediator_NJSisPlayPage.framework",
254 | "${BUILT_PRODUCTS_DIR}/NJMediator_NJSisVideoList/NJMediator_NJSisVideoList.framework",
255 | "${BUILT_PRODUCTS_DIR}/NJNowShow/NJNowShow.framework",
256 | "${BUILT_PRODUCTS_DIR}/NJSisVideoList/NJSisVideoList.framework",
257 | "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework",
258 | "${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework",
259 | );
260 | name = "[CP] Embed Pods Frameworks";
261 | outputPaths = (
262 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework",
263 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AlamofireImage.framework",
264 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DYLiveShow.framework",
265 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DYTrends.framework",
266 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework",
267 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJDYSearchBarView.framework",
268 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJKit.framework",
269 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJMediator.framework",
270 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJMediator_DYLiveRoom.framework",
271 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJMediator_DYLiveShow.framework",
272 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJMediator_DYTrends.framework",
273 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJMediator_NJFAQ.framework",
274 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJMediator_NJNowShow.framework",
275 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJMediator_NJNowShowPlay.framework",
276 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJMediator_NJSisPlayPage.framework",
277 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJMediator_NJSisVideoList.framework",
278 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJNowShow.framework",
279 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NJSisVideoList.framework",
280 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework",
281 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyJSON.framework",
282 | );
283 | runOnlyForDeploymentPostprocessing = 0;
284 | shellPath = /bin/sh;
285 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NJDouYu/Pods-NJDouYu-frameworks.sh\"\n";
286 | showEnvVarsInLog = 0;
287 | };
288 | /* End PBXShellScriptBuildPhase section */
289 |
290 | /* Begin PBXSourcesBuildPhase section */
291 | 58B36C1020AAFD8200915868 /* Sources */ = {
292 | isa = PBXSourcesBuildPhase;
293 | buildActionMask = 2147483647;
294 | files = (
295 | 58B36C5620AAFE2700915868 /* NJAppDelegate.swift in Sources */,
296 | 582B9FD320F0C3C800AED078 /* NJTabBarController.swift in Sources */,
297 | 5836E9322143A35E006CB1A4 /* NJConst.swift in Sources */,
298 | );
299 | runOnlyForDeploymentPostprocessing = 0;
300 | };
301 | /* End PBXSourcesBuildPhase section */
302 |
303 | /* Begin XCBuildConfiguration section */
304 | 58B36C3A20AAFD8200915868 /* Debug */ = {
305 | isa = XCBuildConfiguration;
306 | buildSettings = {
307 | ALWAYS_SEARCH_USER_PATHS = NO;
308 | CLANG_ANALYZER_NONNULL = YES;
309 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
310 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
311 | CLANG_CXX_LIBRARY = "libc++";
312 | CLANG_ENABLE_MODULES = YES;
313 | CLANG_ENABLE_OBJC_ARC = YES;
314 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
315 | CLANG_WARN_BOOL_CONVERSION = YES;
316 | CLANG_WARN_COMMA = YES;
317 | CLANG_WARN_CONSTANT_CONVERSION = YES;
318 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
319 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
320 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
321 | CLANG_WARN_EMPTY_BODY = YES;
322 | CLANG_WARN_ENUM_CONVERSION = YES;
323 | CLANG_WARN_INFINITE_RECURSION = YES;
324 | CLANG_WARN_INT_CONVERSION = YES;
325 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
326 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
327 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
328 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
329 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
330 | CLANG_WARN_STRICT_PROTOTYPES = YES;
331 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
332 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
333 | CLANG_WARN_UNREACHABLE_CODE = YES;
334 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
335 | CODE_SIGN_IDENTITY = "iPhone Developer";
336 | COPY_PHASE_STRIP = NO;
337 | DEBUG_INFORMATION_FORMAT = dwarf;
338 | ENABLE_STRICT_OBJC_MSGSEND = YES;
339 | ENABLE_TESTABILITY = YES;
340 | GCC_C_LANGUAGE_STANDARD = gnu11;
341 | GCC_DYNAMIC_NO_PIC = NO;
342 | GCC_NO_COMMON_BLOCKS = YES;
343 | GCC_OPTIMIZATION_LEVEL = 0;
344 | GCC_PREPROCESSOR_DEFINITIONS = (
345 | "DEBUG=1",
346 | "$(inherited)",
347 | );
348 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
349 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
350 | GCC_WARN_UNDECLARED_SELECTOR = YES;
351 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
352 | GCC_WARN_UNUSED_FUNCTION = YES;
353 | GCC_WARN_UNUSED_VARIABLE = YES;
354 | IPHONEOS_DEPLOYMENT_TARGET = 10.3;
355 | MTL_ENABLE_DEBUG_INFO = YES;
356 | ONLY_ACTIVE_ARCH = YES;
357 | SDKROOT = iphoneos;
358 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
359 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
360 | };
361 | name = Debug;
362 | };
363 | 58B36C3B20AAFD8200915868 /* Release */ = {
364 | isa = XCBuildConfiguration;
365 | buildSettings = {
366 | ALWAYS_SEARCH_USER_PATHS = NO;
367 | CLANG_ANALYZER_NONNULL = YES;
368 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
369 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
370 | CLANG_CXX_LIBRARY = "libc++";
371 | CLANG_ENABLE_MODULES = YES;
372 | CLANG_ENABLE_OBJC_ARC = YES;
373 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
374 | CLANG_WARN_BOOL_CONVERSION = YES;
375 | CLANG_WARN_COMMA = YES;
376 | CLANG_WARN_CONSTANT_CONVERSION = YES;
377 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
378 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
379 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
380 | CLANG_WARN_EMPTY_BODY = YES;
381 | CLANG_WARN_ENUM_CONVERSION = YES;
382 | CLANG_WARN_INFINITE_RECURSION = YES;
383 | CLANG_WARN_INT_CONVERSION = YES;
384 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
385 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
386 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
387 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
388 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
389 | CLANG_WARN_STRICT_PROTOTYPES = YES;
390 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
391 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
392 | CLANG_WARN_UNREACHABLE_CODE = YES;
393 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
394 | CODE_SIGN_IDENTITY = "iPhone Developer";
395 | COPY_PHASE_STRIP = NO;
396 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
397 | ENABLE_NS_ASSERTIONS = NO;
398 | ENABLE_STRICT_OBJC_MSGSEND = YES;
399 | GCC_C_LANGUAGE_STANDARD = gnu11;
400 | GCC_NO_COMMON_BLOCKS = YES;
401 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
402 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
403 | GCC_WARN_UNDECLARED_SELECTOR = YES;
404 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
405 | GCC_WARN_UNUSED_FUNCTION = YES;
406 | GCC_WARN_UNUSED_VARIABLE = YES;
407 | IPHONEOS_DEPLOYMENT_TARGET = 10.3;
408 | MTL_ENABLE_DEBUG_INFO = NO;
409 | SDKROOT = iphoneos;
410 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
411 | VALIDATE_PRODUCT = YES;
412 | };
413 | name = Release;
414 | };
415 | 58B36C3D20AAFD8200915868 /* Debug */ = {
416 | isa = XCBuildConfiguration;
417 | baseConfigurationReference = 76C63CACA4FC8CDA0B3CB770 /* Pods-NJDouYu.debug.xcconfig */;
418 | buildSettings = {
419 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
420 | CLANG_ENABLE_MODULES = YES;
421 | CLANG_STATIC_ANALYZER_MODE = deep;
422 | CODE_SIGN_ENTITLEMENTS = NJDouYu/NJDouYu.entitlements;
423 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
424 | CODE_SIGN_STYLE = Automatic;
425 | DEVELOPMENT_TEAM = 44HDC9YG72;
426 | ENABLE_BITCODE = NO;
427 | INFOPLIST_FILE = NJDouYu/Info.plist;
428 | IPHONEOS_DEPLOYMENT_TARGET = 10.3;
429 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
430 | OTHER_LDFLAGS = (
431 | "$(inherited)",
432 | "-ObjC",
433 | "-l\"bz2\"",
434 | "-l\"stdc++\"",
435 | "-l\"z\"",
436 | "-framework",
437 | "\"AVFoundation\"",
438 | "-framework",
439 | "\"Alamofire\"",
440 | "-framework",
441 | "\"AlamofireImage\"",
442 | "-framework",
443 | "\"AudioToolbox\"",
444 | "-framework",
445 | "\"CoreGraphics\"",
446 | "-framework",
447 | "\"CoreMedia\"",
448 | "-framework",
449 | "\"CoreVideo\"",
450 | "-framework",
451 | "\"DYLiveShow\"",
452 | "-framework",
453 | "\"DYTrends\"",
454 | "-framework",
455 | "\"Foundation\"",
456 | "-framework",
457 | "\"IJKMediaFramework\"",
458 | "-framework",
459 | "\"MJRefresh\"",
460 | "-framework",
461 | "\"MediaPlayer\"",
462 | "-framework",
463 | "\"MobileCoreServices\"",
464 | "-framework",
465 | "\"NJDYPlayer\"",
466 | "-framework",
467 | "\"NJDYSearchBarView\"",
468 | "-framework",
469 | "\"NJKit\"",
470 | "-framework",
471 | "\"NJMediator\"",
472 | "-framework",
473 | "\"NJMediator_DYLiveShow\"",
474 | "-framework",
475 | "\"NJMediator_DYTrends\"",
476 | "-framework",
477 | "\"OpenGLES\"",
478 | "-framework",
479 | "\"QuartzCore\"",
480 | "-framework",
481 | "\"SnapKit\"",
482 | "-framework",
483 | "\"SwiftyJSON\"",
484 | "-framework",
485 | "\"UIKit\"",
486 | "-framework",
487 | "\"VideoToolbox\"",
488 | );
489 | PRODUCT_BUNDLE_IDENTIFIER = com.github.njhu.NJDouYu;
490 | PRODUCT_NAME = "$(TARGET_NAME)";
491 | PROVISIONING_PROFILE = "";
492 | PROVISIONING_PROFILE_SPECIFIER = "";
493 | RUN_CLANG_STATIC_ANALYZER = YES;
494 | SWIFT_OBJC_BRIDGING_HEADER = NJDouYu/NJDouyuOC2SwiftBridge.h;
495 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
496 | SWIFT_VERSION = 4.2;
497 | TARGETED_DEVICE_FAMILY = 1;
498 | };
499 | name = Debug;
500 | };
501 | 58B36C3E20AAFD8200915868 /* Release */ = {
502 | isa = XCBuildConfiguration;
503 | baseConfigurationReference = C8BBDF67950D9426C6F7C3D4 /* Pods-NJDouYu.release.xcconfig */;
504 | buildSettings = {
505 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
506 | CLANG_ENABLE_MODULES = YES;
507 | CLANG_STATIC_ANALYZER_MODE = deep;
508 | CODE_SIGN_ENTITLEMENTS = NJDouYu/NJDouYu.entitlements;
509 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
510 | CODE_SIGN_STYLE = Automatic;
511 | DEVELOPMENT_TEAM = 44HDC9YG72;
512 | ENABLE_BITCODE = NO;
513 | INFOPLIST_FILE = NJDouYu/Info.plist;
514 | IPHONEOS_DEPLOYMENT_TARGET = 10.3;
515 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
516 | OTHER_LDFLAGS = (
517 | "$(inherited)",
518 | "-ObjC",
519 | "-l\"bz2\"",
520 | "-l\"stdc++\"",
521 | "-l\"z\"",
522 | "-framework",
523 | "\"AVFoundation\"",
524 | "-framework",
525 | "\"Alamofire\"",
526 | "-framework",
527 | "\"AlamofireImage\"",
528 | "-framework",
529 | "\"AudioToolbox\"",
530 | "-framework",
531 | "\"CoreGraphics\"",
532 | "-framework",
533 | "\"CoreMedia\"",
534 | "-framework",
535 | "\"CoreVideo\"",
536 | "-framework",
537 | "\"DYLiveShow\"",
538 | "-framework",
539 | "\"DYTrends\"",
540 | "-framework",
541 | "\"Foundation\"",
542 | "-framework",
543 | "\"IJKMediaFramework\"",
544 | "-framework",
545 | "\"MJRefresh\"",
546 | "-framework",
547 | "\"MediaPlayer\"",
548 | "-framework",
549 | "\"MobileCoreServices\"",
550 | "-framework",
551 | "\"NJDYPlayer\"",
552 | "-framework",
553 | "\"NJDYSearchBarView\"",
554 | "-framework",
555 | "\"NJKit\"",
556 | "-framework",
557 | "\"NJMediator\"",
558 | "-framework",
559 | "\"NJMediator_DYLiveShow\"",
560 | "-framework",
561 | "\"NJMediator_DYTrends\"",
562 | "-framework",
563 | "\"OpenGLES\"",
564 | "-framework",
565 | "\"QuartzCore\"",
566 | "-framework",
567 | "\"SnapKit\"",
568 | "-framework",
569 | "\"SwiftyJSON\"",
570 | "-framework",
571 | "\"UIKit\"",
572 | "-framework",
573 | "\"VideoToolbox\"",
574 | );
575 | PRODUCT_BUNDLE_IDENTIFIER = com.github.njhu.NJDouYu;
576 | PRODUCT_NAME = "$(TARGET_NAME)";
577 | PROVISIONING_PROFILE = "";
578 | PROVISIONING_PROFILE_SPECIFIER = "";
579 | RUN_CLANG_STATIC_ANALYZER = YES;
580 | SWIFT_OBJC_BRIDGING_HEADER = NJDouYu/NJDouyuOC2SwiftBridge.h;
581 | SWIFT_VERSION = 4.2;
582 | TARGETED_DEVICE_FAMILY = 1;
583 | };
584 | name = Release;
585 | };
586 | /* End XCBuildConfiguration section */
587 |
588 | /* Begin XCConfigurationList section */
589 | 58B36C0F20AAFD8200915868 /* Build configuration list for PBXProject "NJDouYu" */ = {
590 | isa = XCConfigurationList;
591 | buildConfigurations = (
592 | 58B36C3A20AAFD8200915868 /* Debug */,
593 | 58B36C3B20AAFD8200915868 /* Release */,
594 | );
595 | defaultConfigurationIsVisible = 0;
596 | defaultConfigurationName = Release;
597 | };
598 | 58B36C3C20AAFD8200915868 /* Build configuration list for PBXNativeTarget "NJDouYu" */ = {
599 | isa = XCConfigurationList;
600 | buildConfigurations = (
601 | 58B36C3D20AAFD8200915868 /* Debug */,
602 | 58B36C3E20AAFD8200915868 /* Release */,
603 | );
604 | defaultConfigurationIsVisible = 0;
605 | defaultConfigurationName = Release;
606 | };
607 | /* End XCConfigurationList section */
608 | };
609 | rootObject = 58B36C0C20AAFD8200915868 /* Project object */;
610 | }
611 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "size" : "1024x1024",
91 | "scale" : "1x"
92 | }
93 | ],
94 | "info" : {
95 | "version" : 1,
96 | "author" : "xcode"
97 | }
98 | }
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | NJDouYu
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0.0
21 | CFBundleVersion
22 | 100
23 | LSRequiresIPhoneOS
24 |
25 | NSAppTransportSecurity
26 |
27 | NSAllowsArbitraryLoads
28 |
29 | NSExceptionDomains
30 |
31 | akamaihd.net
32 |
33 | NSExceptionRequiresForwardSecrecy
34 |
35 | NSIncludesSubdomains
36 |
37 |
38 | facebook.com
39 |
40 | NSExceptionRequiresForwardSecrecy
41 |
42 | NSIncludesSubdomains
43 |
44 |
45 | fbcdn.net
46 |
47 | NSExceptionRequiresForwardSecrecy
48 |
49 | NSIncludesSubdomains
50 |
51 |
52 | linkedin.com
53 |
54 | NSExceptionAllowsInsecureHTTPLoads
55 |
56 | NSExceptionRequiresForwardSecrecy
57 |
58 | NSIncludesSubdomains
59 |
60 |
61 | log.umsns.com
62 |
63 | NSIncludesSubdomains
64 |
65 | NSTemporaryExceptionAllowsInsecureHTTPLoads
66 |
67 | NSTemporaryExceptionMinimumTLSVersion
68 | TLSv1.1
69 |
70 | qq.com
71 |
72 | NSIncludesSubdomains
73 |
74 | NSThirdPartyExceptionAllowsInsecureHTTPLoads
75 |
76 | NSThirdPartyExceptionRequiresForwardSecrecy
77 |
78 |
79 | renren.com
80 |
81 | NSIncludesSubdomains
82 |
83 | NSThirdPartyExceptionAllowsInsecureHTTPLoads
84 |
85 | NSThirdPartyExceptionRequiresForwardSecrecy
86 |
87 |
88 | sina.cn
89 |
90 | NSExceptionMinimumTLSVersion
91 | TLSv1.0
92 | NSIncludesSubdomains
93 |
94 | NSThirdPartyExceptionRequiresForwardSecrecy
95 |
96 |
97 | sina.com.cn
98 |
99 | NSIncludesSubdomains
100 |
101 | NSThirdPartyExceptionAllowsInsecureHTTPLoads
102 |
103 | NSThirdPartyExceptionRequiresForwardSecrecy
104 |
105 |
106 | sinaimg.cn
107 |
108 | NSIncludesSubdomains
109 |
110 | NSThirdPartyExceptionAllowsInsecureHTTPLoads
111 |
112 | NSThirdPartyExceptionRequiresForwardSecrecy
113 |
114 |
115 | sinajs.cn
116 |
117 | NSIncludesSubdomains
118 |
119 | NSThirdPartyExceptionAllowsInsecureHTTPLoads
120 |
121 | NSThirdPartyExceptionRequiresForwardSecrecy
122 |
123 |
124 | sns.whalecloud.com
125 |
126 | NSIncludesSubdomains
127 |
128 | NSTemporaryExceptionAllowsInsecureHTTPLoads
129 |
130 | NSTemporaryExceptionMinimumTLSVersion
131 | TLSv1.1
132 |
133 | twitter.com
134 |
135 | NSExceptionRequiresForwardSecrecy
136 |
137 | NSIncludesSubdomains
138 |
139 |
140 | weibo.cn
141 |
142 | NSExceptionMinimumTLSVersion
143 | TLSv1.0
144 | NSIncludesSubdomains
145 |
146 | NSThirdPartyExceptionRequiresForwardSecrecy
147 |
148 |
149 | weibo.com
150 |
151 | NSExceptionMinimumTLSVersion
152 | TLSv1.0
153 | NSIncludesSubdomains
154 |
155 | NSThirdPartyExceptionAllowsInsecureHTTPLoads
156 |
157 | NSThirdPartyExceptionRequiresForwardSecrecy
158 |
159 |
160 |
161 |
162 | NSBluetoothPeripheralUsageDescription
163 | App需要您的同意,才能访问蓝牙
164 | NSCalendarsUsageDescription
165 | App需要您的同意,才能访问日历
166 | NSCameraUsageDescription
167 | App需要使用您的相机
168 | NSLocationAlwaysUsageDescription
169 | 获取当前的位置
170 | NSLocationWhenInUseUsageDescription
171 | 获取当前的位置
172 | NSMicrophoneUsageDescription
173 | 需要使用您的麦克风
174 | NSMotionUsageDescription
175 | App需要您的同意,才能访问运动与健身
176 | NSPhotoLibraryAddUsageDescription
177 | 需要添加到相册
178 | NSPhotoLibraryUsageDescription
179 | 需要访问您的相册
180 | UIBackgroundModes
181 |
182 | audio
183 | fetch
184 | remote-notification
185 |
186 | UILaunchStoryboardName
187 | NJLanuchScreen
188 | UIRequiredDeviceCapabilities
189 |
190 | armv7
191 |
192 | UIRequiresFullScreen
193 |
194 | UIStatusBarHidden
195 |
196 | UIStatusBarStyle
197 | UIStatusBarStyleDefault
198 | UISupportedInterfaceOrientations
199 |
200 | UIInterfaceOrientationPortrait
201 | UIInterfaceOrientationLandscapeLeft
202 | UIInterfaceOrientationLandscapeRight
203 |
204 | UISupportedInterfaceOrientations~ipad
205 |
206 | UIInterfaceOrientationPortrait
207 | UIInterfaceOrientationPortraitUpsideDown
208 | UIInterfaceOrientationLandscapeLeft
209 | UIInterfaceOrientationLandscapeRight
210 |
211 | UIViewControllerBasedStatusBarAppearance
212 |
213 |
214 |
215 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu/NJAppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // test
4 | //
5 | // Created by HuXuPeng on 2018/5/15.
6 | // Copyright © 2018年 njhu. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import NJMediator
11 | import NJKit
12 |
13 | @UIApplicationMain
14 | class NJAppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | lazy var window: UIWindow? = UIWindow(frame: UIScreen.main.bounds)
17 |
18 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
19 | // 设置入口
20 | window?.makeKeyAndVisible()
21 | window?.rootViewController = NJTabBarController()
22 | // 设置监控
23 | // NJDebugTool.defaultTool.show()
24 | return true
25 | }
26 |
27 | func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
28 | var shouldOpen = false
29 |
30 | let resultObj = NJMediator.sharedMediator.perform(url: url) { (result: [String: AnyObject]?) in
31 | if result?["result"] != nil {
32 | }
33 | }
34 | shouldOpen = resultObj?.boolValue ?? false;
35 | return shouldOpen
36 | }
37 |
38 | func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
39 | return window?.rootViewController?.supportedInterfaceOrientations ?? UIInterfaceOrientationMask.allButUpsideDown;
40 | }
41 | }
42 |
43 |
44 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu/NJConst.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NJConst.swift
3 | // NJDouYu
4 | //
5 | // Created by HuXuPeng on 2018/9/8.
6 | // Copyright © 2018年 njhu. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 |
12 | /// 选中某个控制器
13 | public let kNJTabBarControllerDidSelectViewControllerNotification = "kNJTabBarControllerDidSelectViewControllerNotification"
14 |
15 | /// 是否应该选中控制器
16 | public let kNJTabBarControllerShouldSelectViewControllerNotification = "kNJTabBarControllerShouldSelectViewControllerNotification"
17 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu/NJDouYu.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aps-environment
6 | development
7 | com.apple.developer.associated-domains
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu/NJDouyuOC2SwiftBridge.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 | //#import
6 | //#import
7 | //#import
8 |
9 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu/NJLanuchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/SwiftProject/NJDouYu/NJTabBarController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NJTabBarController.swift
3 | // NJSwiftTodayNews
4 | //
5 | // Created by HuXuPeng on 2018/5/15.
6 | // Copyright © 2018年 njhu. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import NJKit
11 | import NJMediator
12 | import NJMediator_DYTrends
13 | import NJMediator_DYLiveShow
14 | import NJMediator_NJNowShow
15 | import NJMediator_NJSisVideoList
16 | import NJMediator_NJFAQ
17 |
18 | class NJTabBarController: UITabBarController {
19 |
20 | override func viewDidLoad() {
21 | super.viewDidLoad()
22 | self.delegate = self
23 | tabBar.unselectedItemTintColor = UIColor.lightGray
24 | tabBar.tintColor = UIColor.orange
25 | addChildVcs()
26 | }
27 | }
28 |
29 | // MARK:- UITabBarControllerDelegate
30 | extension NJTabBarController: UITabBarControllerDelegate {
31 | func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
32 | NotificationCenter.default.post(name: NSNotification.Name(rawValue: kNJTabBarControllerDidSelectViewControllerNotification), object: self, userInfo: ["viewController": viewController])
33 | }
34 | func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
35 | // var shouldSelect: NSNumber = true
36 | // NotificationCenter.default.post(name: NSNotification.Name(rawValue: kNJTabBarControllerShouldSelectViewControllerNotification), object: self, userInfo: ["shouldSelect": shouldSelect])
37 | // return shouldSelect.boolValue
38 | return true
39 | }
40 | }
41 |
42 | // MARK:- UITabBarDelegate
43 | extension NJTabBarController {
44 | override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
45 | // super.tabBar(tabBar, didSelect: item)
46 | }
47 | }
48 |
49 |
50 | // MARK: - 添加模块
51 | extension NJTabBarController {
52 | private func addChildVcs() -> Void {
53 | // 直播列表
54 | if let nav0 = NJMediator.sharedMediator.Mediator_DYLiveShow_MainController() {
55 | self.addChild(nav0)
56 | }
57 | // 视频列表
58 | if let nav3 = NJMediator.sharedMediator.Mediator_NJSisVideoList_MainController() {
59 | self.addChild(nav3)
60 | }
61 | // 常见问题答疑
62 | if let nav4 = NJMediator.sharedMediator.Mediator_NJFAQ_Controller() {
63 | self.addChild(nav4)
64 | }
65 | // 个人偏好
66 | if let nav1 = NJMediator.sharedMediator.Mediator_DYTrends_MainController() {
67 | self.addChild(nav1)
68 | }
69 | // NowShow列表
70 | if let nav2 = NJMediator.sharedMediator.Mediator_NJNowShow_MainController() {
71 | self.addChild(nav2)
72 | }
73 | }
74 | }
75 |
76 | // MARK:- statusBar
77 | extension NJTabBarController {
78 | open override var prefersStatusBarHidden: Bool {
79 | return self.selectedViewController?.prefersStatusBarHidden ?? false
80 | }
81 | open override var preferredStatusBarStyle: UIStatusBarStyle {
82 | return self.selectedViewController?.preferredStatusBarStyle ?? UIStatusBarStyle.default
83 | }
84 | open override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
85 | return self.selectedViewController?.preferredStatusBarUpdateAnimation ?? UIStatusBarAnimation.slide
86 | }
87 | open override var shouldAutorotate: Bool {
88 | return self.selectedViewController?.shouldAutorotate ?? false
89 | }
90 | // MARK: - about keyboard orientation
91 | open override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
92 | return self.selectedViewController?.supportedInterfaceOrientations ?? UIInterfaceOrientationMask.allButUpsideDown;
93 | }
94 | //返回最优先显示的屏幕方向
95 | open override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
96 | return self.selectedViewController?.preferredInterfaceOrientationForPresentation ?? UIInterfaceOrientation.portrait
97 | }
98 | }
99 |
100 |
--------------------------------------------------------------------------------
/SwiftProject/Podfile:
--------------------------------------------------------------------------------
1 | def public_pods
2 | source 'https://github.com/CocoaPods/Specs.git' # 公有源
3 | pod 'Alamofire', '4.8.2'
4 | pod 'AlamofireImage', '3.5.2'
5 | end
6 |
7 | def njspec_pods
8 | # 发布
9 | release_remote_pods
10 |
11 | # 开发
12 | #develop_local_pods
13 | end
14 |
15 | def develop_local_pods
16 | source 'https://github.com/NJHu/NJSpecs.git' # NJ 私有源
17 |
18 | # 基础组件
19 | pod 'NJKit', :path => '../../NJKit/'
20 | # 中间件
21 | pod 'NJMediator', :path => '../../NJMediator/'
22 | # IJK
23 | pod 'NJIJKPlayer', :path => '../../NJIJKPlayer/'
24 | pod 'NJDYPlayer', :path => '../../NJDYPlayer/'
25 |
26 | # 个人偏好模块
27 | pod 'DYTrends', :path => '../../DYTrends/'
28 | pod 'NJMediator_DYTrends', :path => '../../NJMediator_DYTrends/'
29 |
30 | # 直播列表
31 | pod 'DYLiveShow', :path => '../../DYLiveShow/'
32 | pod 'NJMediator_DYLiveShow', :path => '../../NJMediator_DYLiveShow/'
33 | # 直播间
34 | pod 'DYLiveRoom', :path => '../../DYLiveRoom/'
35 |
36 | # NowShow组件
37 | pod 'NJNowShow', :path => '../../NJNowShow/'
38 | pod 'NJMediator_NJNowShow', :path => '../../NJMediator_NJNowShow/'
39 | # NowShow直播间
40 | pod 'NJNowShowPlay', :path => '../../NJNowShowPlay/'
41 |
42 | # 视频列表
43 | pod 'NJSisVideoList', :path => '../../NJSisVideoList/'
44 | pod 'NJMediator_NJSisVideoList', :path => '../../NJMediator_NJSisVideoList/'
45 | # 视频播放页面
46 | pod 'NJSisPlayPage', :path => '../../NJSisPlayPage/'
47 |
48 | # FAQ
49 | pod 'NJFAQ', :path => '../../NJFAQ/'
50 | pod 'NJMediator_NJFAQ', :path => '../../NJMediator_NJFAQ/'
51 | end
52 |
53 | def release_remote_pods
54 |
55 | source 'https://github.com/NJHu/NJSpecs.git' # NJ 私有源
56 | # 基础组件
57 | pod 'NJKit'
58 | # 中间件
59 | pod 'NJMediator', :source => 'https://github.com/NJHu/NJSpecs.git'
60 | # IJK
61 | pod 'NJIJKPlayer', :path => '../../NJIJKPlayer/'
62 | pod 'NJDYPlayer'
63 |
64 | # 个人偏好模块
65 | pod 'DYTrends'
66 | pod 'NJMediator_DYTrends'
67 |
68 | # 直播列表
69 | pod 'DYLiveShow'
70 | pod 'NJMediator_DYLiveShow'
71 | # 直播间
72 | pod 'DYLiveRoom'
73 |
74 | # NowShow组件
75 | pod 'NJNowShow'
76 | pod 'NJMediator_NJNowShow'
77 | # NowShow直播间
78 | pod 'NJNowShowPlay'
79 |
80 | # 视频列表
81 | pod 'NJSisVideoList'
82 | pod 'NJMediator_NJSisVideoList'
83 | # 视频播放页面
84 | pod 'NJSisPlayPage'
85 |
86 | # FAQ
87 | pod 'NJFAQ'
88 | pod 'NJMediator_NJFAQ'
89 | end
90 |
91 | platform :ios, '10.3'
92 |
93 | use_frameworks!
94 |
95 | target 'NJDouYu' do
96 |
97 | inhibit_all_warnings!
98 |
99 | njspec_pods
100 |
101 | public_pods
102 |
103 | end
104 |
105 |
106 | # 参考
107 | #pod 'xxx', :git => 'git@xx.com:xx-ios/xx.git', :commit => '1dsafas8769823t1876378'
108 | #pod 'xx', '2.8.8' , :configuration => 'Debug'
109 | #pod 'xx', '2.8.8', :configuration => 'Release'
110 | #pod 'xx','0.1.2'
111 | #pod 'DYTrends', :git => 'https://github.com/njhu/DYTrends.git', :branch => 'master'
112 | #pod 'NJKit', :git => 'https://github.com/njhu/NJKit.git'
113 |
--------------------------------------------------------------------------------
/docs/斗鱼弹幕服务器第三方接入协议v1.6.2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/docs/斗鱼弹幕服务器第三方接入协议v1.6.2.pdf
--------------------------------------------------------------------------------
/docs/斗鱼第三方开放平台API文档v2.2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/docs/斗鱼第三方开放平台API文档v2.2.pdf
--------------------------------------------------------------------------------
/images/NJIJKPlayer_baidu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/NJIJKPlayer_baidu.png
--------------------------------------------------------------------------------
/images/Swiftmulu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/Swiftmulu.png
--------------------------------------------------------------------------------
/images/category.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/category.png
--------------------------------------------------------------------------------
/images/categoryList.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/categoryList.png
--------------------------------------------------------------------------------
/images/douyuliveroom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/douyuliveroom.png
--------------------------------------------------------------------------------
/images/homeList.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/homeList.png
--------------------------------------------------------------------------------
/images/homenowshow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/homenowshow.png
--------------------------------------------------------------------------------
/images/mediator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/mediator.png
--------------------------------------------------------------------------------
/images/njtabbarcontroller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/njtabbarcontroller.png
--------------------------------------------------------------------------------
/images/nowshowliveroom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/nowshowliveroom.png
--------------------------------------------------------------------------------
/images/videoList.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/videoList.jpeg
--------------------------------------------------------------------------------
/images/videoPlayprotrait.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NJHu/swiftProject/HEAD/images/videoPlayprotrait.jpeg
--------------------------------------------------------------------------------