增加网络监听

This commit is contained in:
zeng 2025-04-24 17:23:22 +08:00
parent 8044ee8f16
commit 93a3c7336a
10 changed files with 87 additions and 106 deletions

View File

@ -1,5 +1,5 @@
# 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://cdn.cocoapods.org/'

View File

@ -179,7 +179,7 @@
};
99BF4E2B3615B1F54D05DA28 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
buildActionMask = 12;
files = (
);
inputFileListPaths = (
@ -214,9 +214,10 @@
ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
DEVELOPMENT_TEAM = TWDZ3MP9DV;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Thimra/Source/Info.plist;
@ -232,15 +233,16 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = cn.com.boytv.ShortPlay;
PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "Thimra/Source/Thimra-Bridging-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VALID_ARCHS = "arm64 arm64e x86_64";
VALID_ARCHS = "arm64 arm64e armv7s x86_64";
};
name = Debug;
};
@ -251,9 +253,10 @@
ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
DEVELOPMENT_TEAM = TWDZ3MP9DV;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Thimra/Source/Info.plist;
@ -269,15 +272,16 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = cn.com.boytv.ShortPlay;
PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "Thimra/Source/Thimra-Bridging-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VALID_ARCHS = "arm64 arm64e x86_64";
VALID_ARCHS = "arm64 arm64e armv7s x86_64";
};
name = Release;
};

View File

@ -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>

View File

@ -23,7 +23,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityDidChangeNotification), name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil)
NetworkObserver.share.startMonitoring()
SPNetworkReachabilityManager.manager.startMonitoring()
return true
@ -45,9 +45,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
@objc private func reachabilityDidChangeNotification() {
// if SPNetworkReachabilityManager.manager.isReachable {
// SPLoginManager.manager.requestVisitorLogin(completer: nil)
// }
if SPNetworkReachabilityManager.manager.isReachable == true {
SPLoginManager.manager.requestVisitorLogin(completer: nil)
}
}
}

View File

@ -88,7 +88,7 @@ class SPViewController: UIViewController, JYPageChildContollerProtocol {
if let statusBarStyle = statusBarStyle {
return statusBarStyle
} else {
return .default
return .lightContent
}
}
override var prefersStatusBarHidden: Bool {

View File

@ -20,20 +20,11 @@ class SPNetworkReachabilityManager {
static let manager: SPNetworkReachabilityManager = SPNetworkReachabilityManager()
private let reachabilityManager = NetworkReachabilityManager()
///
// @objc var isReachable: Bool {
// switch currentReachabilityStatus {
// case .notReachable:
// return false
// case .reachableViaWiFi, .reachableViaWWAN:
// return true
//
// default:
// return false
// }
// }
var isReachable: Bool?
/*
private let reachabilityManager = NetworkReachabilityManager()
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()
}
}

View File

@ -62,9 +62,8 @@ class SPHomeViewController: SPHomeChildController {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityDidChangeNotification), name: SPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil)
requestModuleData()
requestPlayHistory()
requestListDataArr(page: 1, completer: nil)
updateAllData(completer: nil)
_setupUI()
@ -76,9 +75,8 @@ class SPHomeViewController: SPHomeChildController {
}
override func handleHeaderRefresh(_ completer: (() -> Void)?) {
requestModuleData()
requestPlayHistory()
requestListDataArr(page: 1) { [weak self] in
updateAllData { [weak self] in
self?.collectionView.sp_endHeaderRefreshing()
}
}
@ -89,6 +87,7 @@ class SPHomeViewController: SPHomeChildController {
}
}
}
extension SPHomeViewController {
@ -124,7 +123,9 @@ extension SPHomeViewController {
}
@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 {
private func updateAllData(completer: (() -> Void)?) {
requestModuleData()
requestPlayHistory()
requestListDataArr(page: 1) {
completer?()
}
}
private func requestModuleData() {
SPHomeAPI.requestHomeModuleData { [weak self] model in

View File

@ -42,6 +42,7 @@ class SPHomeHotSearchView: UIView {
tableView.separatorStyle = .none
tableView.showsVerticalScrollIndicator = false
tableView.showsHorizontalScrollIndicator = false
tableView.keyboardDismissMode = .onDrag
tableView.contentInset = .init(top: 0, left: 0, bottom: kSPTabbarSafeBottomMargin, right: 0)
SPHomeHotSearchCell.registerCell(tableView: tableView)
return tableView

View File

@ -165,8 +165,13 @@ class SPPlayerListViewController: SPViewController {
if isFirstPlay {
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)
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 {

View File

@ -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()
}
*/
}