Add iOS 18 control widget

This commit is contained in:
世界
2024-10-06 21:41:10 +08:00
parent 9dadf5f648
commit 7e67e68670
12 changed files with 306 additions and 150 deletions
+13 -2
View File
@@ -1,6 +1,9 @@
import Foundation
import Libbox
import NetworkExtension
#if os(iOS)
import WidgetKit
#endif
open class ExtensionProvider: NEPacketTunnelProvider {
public var username: String? = nil
@@ -49,13 +52,16 @@ open class ExtensionProvider: NEPacketTunnelProvider {
}
writeMessage("(packet-tunnel): Here I stand")
await startService()
#if os(iOS)
if #available(iOS 18.0, *) {
ControlCenter.shared.reloadControls(ofKind: ExtensionProfile.controlKind)
}
#endif
}
func writeMessage(_ message: String) {
if let commandServer {
commandServer.writeMessage(message)
} else {
NSLog(message)
}
}
@@ -154,6 +160,11 @@ open class ExtensionProvider: NEPacketTunnelProvider {
await SharedPreferences.startedByUser.set(reason == .userInitiated)
}
#endif
#if os(iOS)
if #available(iOS 18.0, *) {
ControlCenter.shared.reloadControls(ofKind: ExtensionProfile.controlKind)
}
#endif
}
override open func handleAppMessage(_ messageData: Data) async -> Data? {