tvOS allow audio in other apps, iOS show complete sheet without watch

This commit is contained in:
Trey t
2024-06-19 18:01:51 -05:00
parent 48cc22b3e2
commit bba2ce8603
5 changed files with 29 additions and 11 deletions

View File

@@ -34,6 +34,7 @@
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
1C08B2372C234522005F07D1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
1CC0930B2C21DE760004E1E6 /* WekoutThotViewer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WekoutThotViewer.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1CC0930B2C21DE760004E1E6 /* WekoutThotViewer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WekoutThotViewer.app; sourceTree = BUILT_PRODUCTS_DIR; };
1CC0930E2C21DE760004E1E6 /* WekoutThotViewerApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WekoutThotViewerApp.swift; sourceTree = "<group>"; }; 1CC0930E2C21DE760004E1E6 /* WekoutThotViewerApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WekoutThotViewerApp.swift; sourceTree = "<group>"; };
1CC093102C21DE760004E1E6 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; }; 1CC093102C21DE760004E1E6 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
@@ -132,6 +133,7 @@
1CC0930D2C21DE760004E1E6 /* WekoutThotViewer */ = { 1CC0930D2C21DE760004E1E6 /* WekoutThotViewer */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
1C08B2372C234522005F07D1 /* Info.plist */,
1CC0930E2C21DE760004E1E6 /* WekoutThotViewerApp.swift */, 1CC0930E2C21DE760004E1E6 /* WekoutThotViewerApp.swift */,
1CC7CB7B2C21E089001614B8 /* RegisteredUser.swift */, 1CC7CB7B2C21E089001614B8 /* RegisteredUser.swift */,
1CC093102C21DE760004E1E6 /* ContentView.swift */, 1CC093102C21DE760004E1E6 /* ContentView.swift */,
@@ -387,6 +389,7 @@
DEVELOPMENT_TEAM = V3PF3M6B6U; DEVELOPMENT_TEAM = V3PF3M6B6U;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = WekoutThotViewer/Info.plist;
INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UIUserInterfaceStyle = Automatic; INFOPLIST_KEY_UIUserInterfaceStyle = Automatic;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
@@ -413,6 +416,7 @@
DEVELOPMENT_TEAM = V3PF3M6B6U; DEVELOPMENT_TEAM = V3PF3M6B6U;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = WekoutThotViewer/Info.plist;
INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UIUserInterfaceStyle = Automatic; INFOPLIST_KEY_UIUserInterfaceStyle = Automatic;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (

View File

@@ -0,0 +1,10 @@
<?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>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
</dict>
</plist>

View File

@@ -6,12 +6,16 @@
// //
import SwiftUI import SwiftUI
import AVKit
@main @main
struct WekoutThotViewerApp: App { struct WekoutThotViewerApp: App {
var body: some Scene { var body: some Scene {
WindowGroup { WindowGroup {
ContentView() ContentView()
.onAppear(perform: {
_ = try? AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, mode: .default, options: .mixWithOthers)
})
} }
} }
} }

View File

@@ -42,6 +42,8 @@ class HealthKitHelper {
{ (sampleQuery, results, error ) -> Void in { (sampleQuery, results, error ) -> Void in
if let queryError = error { if let queryError = error {
self.shitReturned()
self.shitReturned()
print( "There was an error while reading the samples: \(queryError.localizedDescription)") print( "There was an error while reading the samples: \(queryError.localizedDescription)")
} else { } else {
for samples: HKSample in results! { for samples: HKSample in results! {
@@ -86,10 +88,8 @@ class HealthKitHelper {
self.healthKitWorkoutData.minHeartRate = _minHeartRate self.healthKitWorkoutData.minHeartRate = _minHeartRate
self.healthKitWorkoutData.maxHeartRate = _maxHeartRate self.healthKitWorkoutData.maxHeartRate = _maxHeartRate
print("got heart") print("got heart")
DispatchQueue.main.async {
self.shitReturned()
}
} }
self.shitReturned()
}) })
healthStore.execute(heartQuery) healthStore.execute(heartQuery)
} }
@@ -108,10 +108,8 @@ class HealthKitHelper {
if let result = result { if let result = result {
self.healthKitWorkoutData.caloriesBurned = result.sumQuantity()?.doubleValue(for: HKUnit.kilocalorie()) ?? -1 self.healthKitWorkoutData.caloriesBurned = result.sumQuantity()?.doubleValue(for: HKUnit.kilocalorie()) ?? -1
print("got total burned") print("got total burned")
DispatchQueue.main.async {
self.shitReturned()
}
} }
self.shitReturned()
}) })
healthStore.execute(calQuery) healthStore.execute(calQuery)
} }
@@ -121,7 +119,7 @@ class HealthKitHelper {
self.returnCount += 1 self.returnCount += 1
print("\(self.returnCount)") print("\(self.returnCount)")
if self.returnCount == 2 { if self.returnCount == 2 {
self.completion!(self.healthKitWorkoutData) self.completion?(self.healthKitWorkoutData)
} }
} }
} }

View File

@@ -19,10 +19,10 @@ struct WorkoutDetailView: View {
enum Sheet: Identifiable { enum Sheet: Identifiable {
case completedWorkout([String: Any]) case completedWorkout([String: Any])
var id: String { return UUID().uuidString } var id: String { return "completedWorkoutSheet" }
} }
@State var presentedSheet: Sheet? @State var workoutComplete: Sheet?
@State var workoutToPlan: Workout? @State var workoutToPlan: Workout?
@State var showExecersizeInfo: Bool = false @State var showExecersizeInfo: Bool = false
@@ -134,13 +134,14 @@ struct WorkoutDetailView: View {
.frame(height: 44) .frame(height: 44)
} }
.sheet(item: $presentedSheet) { item in .sheet(item: $workoutComplete) { item in
switch item { switch item {
case .completedWorkout(let data): case .completedWorkout(let data):
CompletedWorkoutView(postData: data, CompletedWorkoutView(postData: data,
workout: workout, workout: workout,
completedWorkoutDismissed: { uploaded in completedWorkoutDismissed: { uploaded in
if uploaded { if uploaded {
bridgeModule.resetCurrentWorkout()
dismiss() dismiss()
} }
}) })
@@ -195,7 +196,8 @@ struct WorkoutDetailView: View {
func startWorkout(workout: Workout) { func startWorkout(workout: Workout) {
bridgeModule.completedWorkout = { bridgeModule.completedWorkout = {
if let workoutData = createWorkoutData() { if let workoutData = createWorkoutData() {
presentedSheet = .completedWorkout(workoutData) workoutComplete = .completedWorkout(workoutData)
} else {
bridgeModule.resetCurrentWorkout() bridgeModule.resetCurrentWorkout()
} }
} }