增加网络监听
This commit is contained in:
parent
8044ee8f16
commit
93a3c7336a
2
Podfile
2
Podfile
@ -1,5 +1,5 @@
|
|||||||
# Uncomment the next line to define a global platform for your project
|
# Uncomment the next line to define a global platform for your project
|
||||||
platform :ios, '13.0'
|
platform :ios, '15.6'
|
||||||
#source 'https://github.com/CocoaPods/Specs'
|
#source 'https://github.com/CocoaPods/Specs'
|
||||||
source 'https://cdn.cocoapods.org/'
|
source 'https://cdn.cocoapods.org/'
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@
|
|||||||
};
|
};
|
||||||
99BF4E2B3615B1F54D05DA28 /* [CP] Embed Pods Frameworks */ = {
|
99BF4E2B3615B1F54D05DA28 /* [CP] Embed Pods Frameworks */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 12;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputFileListPaths = (
|
inputFileListPaths = (
|
||||||
@ -214,9 +214,10 @@
|
|||||||
ARCHS = "$(ARCHS_STANDARD)";
|
ARCHS = "$(ARCHS_STANDARD)";
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = TWDZ3MP9DV;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = Thimra/Source/Info.plist;
|
INFOPLIST_FILE = Thimra/Source/Info.plist;
|
||||||
@ -232,15 +233,16 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = cn.com.boytv.ShortPlay;
|
PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = NO;
|
||||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Thimra/Source/Thimra-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Thimra/Source/Thimra-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
VALID_ARCHS = "arm64 arm64e x86_64";
|
VALID_ARCHS = "arm64 arm64e armv7s x86_64";
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
@ -251,9 +253,10 @@
|
|||||||
ARCHS = "$(ARCHS_STANDARD)";
|
ARCHS = "$(ARCHS_STANDARD)";
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = TWDZ3MP9DV;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = Thimra/Source/Info.plist;
|
INFOPLIST_FILE = Thimra/Source/Info.plist;
|
||||||
@ -269,15 +272,16 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = cn.com.boytv.ShortPlay;
|
PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = NO;
|
||||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Thimra/Source/Thimra-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Thimra/Source/Thimra-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
VALID_ARCHS = "arm64 arm64e x86_64";
|
VALID_ARCHS = "arm64 arm64e armv7s x86_64";
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict/>
|
||||||
|
</plist>
|
@ -23,7 +23,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||||||
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityDidChangeNotification), name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil)
|
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityDidChangeNotification), name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil)
|
||||||
|
|
||||||
|
|
||||||
NetworkObserver.share.startMonitoring()
|
SPNetworkReachabilityManager.manager.startMonitoring()
|
||||||
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
@ -45,9 +45,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||||||
|
|
||||||
|
|
||||||
@objc private func reachabilityDidChangeNotification() {
|
@objc private func reachabilityDidChangeNotification() {
|
||||||
// if SPNetworkReachabilityManager.manager.isReachable {
|
if SPNetworkReachabilityManager.manager.isReachable == true {
|
||||||
// SPLoginManager.manager.requestVisitorLogin(completer: nil)
|
SPLoginManager.manager.requestVisitorLogin(completer: nil)
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ class SPViewController: UIViewController, JYPageChildContollerProtocol {
|
|||||||
if let statusBarStyle = statusBarStyle {
|
if let statusBarStyle = statusBarStyle {
|
||||||
return statusBarStyle
|
return statusBarStyle
|
||||||
} else {
|
} else {
|
||||||
return .default
|
return .lightContent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
override var prefersStatusBarHidden: Bool {
|
override var prefersStatusBarHidden: Bool {
|
||||||
|
@ -20,20 +20,11 @@ class SPNetworkReachabilityManager {
|
|||||||
|
|
||||||
static let manager: SPNetworkReachabilityManager = SPNetworkReachabilityManager()
|
static let manager: SPNetworkReachabilityManager = SPNetworkReachabilityManager()
|
||||||
|
|
||||||
private let reachabilityManager = NetworkReachabilityManager()
|
|
||||||
|
|
||||||
///是否有网
|
///是否有网
|
||||||
// @objc var isReachable: Bool {
|
var isReachable: Bool?
|
||||||
// switch currentReachabilityStatus {
|
|
||||||
// case .notReachable:
|
/*
|
||||||
// return false
|
private let reachabilityManager = NetworkReachabilityManager()
|
||||||
// case .reachableViaWiFi, .reachableViaWWAN:
|
|
||||||
// return true
|
|
||||||
//
|
|
||||||
// default:
|
|
||||||
// return false
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
func startMonitoring() {
|
func startMonitoring() {
|
||||||
|
|
||||||
@ -51,6 +42,45 @@ class SPNetworkReachabilityManager {
|
|||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
private let monitor = NWPathMonitor()
|
||||||
|
private let queue = DispatchQueue(label: "NetworkMonitorQueue")
|
||||||
|
|
||||||
|
func startMonitoring() {
|
||||||
|
|
||||||
|
monitor.pathUpdateHandler = { [weak self] path in
|
||||||
|
guard let self = self else { return }
|
||||||
|
if path.status == .satisfied {
|
||||||
|
if self.isReachable == false {
|
||||||
|
print("++++++有网")
|
||||||
|
NotificationCenter.default.post(name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil)
|
||||||
|
}
|
||||||
|
self.isReachable = true
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if self.isReachable == true {
|
||||||
|
print("++++++无网")
|
||||||
|
NotificationCenter.default.post(name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil)
|
||||||
|
}
|
||||||
|
self.isReachable = false
|
||||||
|
}
|
||||||
|
|
||||||
|
// if path.usesInterfaceType(.wifi) {
|
||||||
|
// print("++++++Using Wi-Fi")
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if path.usesInterfaceType(.cellular) {
|
||||||
|
// print("++++++Using Cellular")
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
monitor.start(queue: queue)
|
||||||
|
}
|
||||||
|
|
||||||
|
func stopMonitoring() {
|
||||||
|
monitor.cancel()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,9 +62,8 @@ class SPHomeViewController: SPHomeChildController {
|
|||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityDidChangeNotification), name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil)
|
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityDidChangeNotification), name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil)
|
||||||
|
|
||||||
requestModuleData()
|
|
||||||
requestPlayHistory()
|
updateAllData(completer: nil)
|
||||||
requestListDataArr(page: 1, completer: nil)
|
|
||||||
|
|
||||||
_setupUI()
|
_setupUI()
|
||||||
|
|
||||||
@ -76,9 +75,8 @@ class SPHomeViewController: SPHomeChildController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func handleHeaderRefresh(_ completer: (() -> Void)?) {
|
override func handleHeaderRefresh(_ completer: (() -> Void)?) {
|
||||||
requestModuleData()
|
|
||||||
requestPlayHistory()
|
updateAllData { [weak self] in
|
||||||
requestListDataArr(page: 1) { [weak self] in
|
|
||||||
self?.collectionView.sp_endHeaderRefreshing()
|
self?.collectionView.sp_endHeaderRefreshing()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -89,6 +87,7 @@ class SPHomeViewController: SPHomeChildController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension SPHomeViewController {
|
extension SPHomeViewController {
|
||||||
@ -124,7 +123,9 @@ extension SPHomeViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@objc private func reachabilityDidChangeNotification() {
|
@objc private func reachabilityDidChangeNotification() {
|
||||||
|
if SPNetworkReachabilityManager.manager.isReachable == true, self.viewModel.moduleModel == nil {
|
||||||
|
updateAllData(completer: nil)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,6 +165,13 @@ extension SPHomeViewController: UICollectionViewDelegate, UICollectionViewDataSo
|
|||||||
|
|
||||||
|
|
||||||
extension SPHomeViewController {
|
extension SPHomeViewController {
|
||||||
|
private func updateAllData(completer: (() -> Void)?) {
|
||||||
|
requestModuleData()
|
||||||
|
requestPlayHistory()
|
||||||
|
requestListDataArr(page: 1) {
|
||||||
|
completer?()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private func requestModuleData() {
|
private func requestModuleData() {
|
||||||
SPHomeAPI.requestHomeModuleData { [weak self] model in
|
SPHomeAPI.requestHomeModuleData { [weak self] model in
|
||||||
|
@ -42,6 +42,7 @@ class SPHomeHotSearchView: UIView {
|
|||||||
tableView.separatorStyle = .none
|
tableView.separatorStyle = .none
|
||||||
tableView.showsVerticalScrollIndicator = false
|
tableView.showsVerticalScrollIndicator = false
|
||||||
tableView.showsHorizontalScrollIndicator = false
|
tableView.showsHorizontalScrollIndicator = false
|
||||||
|
tableView.keyboardDismissMode = .onDrag
|
||||||
tableView.contentInset = .init(top: 0, left: 0, bottom: kSPTabbarSafeBottomMargin, right: 0)
|
tableView.contentInset = .init(top: 0, left: 0, bottom: kSPTabbarSafeBottomMargin, right: 0)
|
||||||
SPHomeHotSearchCell.registerCell(tableView: tableView)
|
SPHomeHotSearchCell.registerCell(tableView: tableView)
|
||||||
return tableView
|
return tableView
|
||||||
|
@ -165,8 +165,13 @@ class SPPlayerListViewController: SPViewController {
|
|||||||
|
|
||||||
if isFirstPlay {
|
if isFirstPlay {
|
||||||
isFirstPlay = false
|
isFirstPlay = false
|
||||||
let offset = self.collectionView.contentOffset.y + 0.5
|
let offset = self.collectionView.contentOffset.y + 0.2
|
||||||
self.collectionView.setContentOffset(CGPoint(x: 0, y: offset), animated: false)
|
self.collectionView.setContentOffset(CGPoint(x: 0, y: offset), animated: false)
|
||||||
|
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
|
||||||
|
let offset = self.collectionView.contentOffset.y
|
||||||
|
self.collectionView.setContentOffset(CGPoint(x: 0, y: floor(offset)), animated: false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if currentIndexPath.row <= 2 {
|
if currentIndexPath.row <= 2 {
|
||||||
|
@ -1,72 +0,0 @@
|
|||||||
//
|
|
||||||
// NetworkObserver.swift
|
|
||||||
// Thimra
|
|
||||||
//
|
|
||||||
// Created by Overseas on 2025/4/21.
|
|
||||||
//
|
|
||||||
|
|
||||||
import UIKit
|
|
||||||
import Network
|
|
||||||
import Reachability
|
|
||||||
|
|
||||||
|
|
||||||
class NetworkObserver {
|
|
||||||
static let share = NetworkObserver()
|
|
||||||
|
|
||||||
|
|
||||||
private let monitor = NWPathMonitor()
|
|
||||||
private let queue = DispatchQueue(label: "NetworkMonitorQueue")
|
|
||||||
|
|
||||||
func startMonitoring() {
|
|
||||||
monitor.pathUpdateHandler = { path in
|
|
||||||
if path.status == .satisfied {
|
|
||||||
print("++++++有网")
|
|
||||||
} else {
|
|
||||||
print("++++++无网")
|
|
||||||
}
|
|
||||||
|
|
||||||
// if path.usesInterfaceType(.wifi) {
|
|
||||||
// print("++++++Using Wi-Fi")
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if path.usesInterfaceType(.cellular) {
|
|
||||||
// print("++++++Using Cellular")
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
monitor.start(queue: queue)
|
|
||||||
}
|
|
||||||
|
|
||||||
func stopMonitoring() {
|
|
||||||
monitor.cancel()
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
private let reachability = try! Reachability()
|
|
||||||
|
|
||||||
func startMonitoring() {
|
|
||||||
reachability.whenReachable = { reachability in
|
|
||||||
if reachability.connection == .wifi {
|
|
||||||
print("++++++Network reachable via Wi-Fi")
|
|
||||||
} else if reachability.connection == .cellular {
|
|
||||||
print("++++++Network reachable via Cellular")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
reachability.whenUnreachable = { _ in
|
|
||||||
print("++++++Network not reachable")
|
|
||||||
}
|
|
||||||
|
|
||||||
do {
|
|
||||||
try reachability.startNotifier()
|
|
||||||
} catch {
|
|
||||||
print("++++++Unable to start notifier")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func stopMonitoring() {
|
|
||||||
reachability.stopNotifier()
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user