I can't use the new @main / App structure because I can't seem to find a way to have relationship pages on watchOS with just SwiftUI
Post
Replies
Boosts
Views
Activity
Apparently you can use TabView as pointed out by someone over Twitter <3
The new @StateObject solves this 🎉
Hi Joe,
Thanks for responding! I tripple checked and appleMusic is indeed the identifier of a Song object so not sure what's happening there.
As in regards to your second request, here is how I'm currently checking in the MPMediaLibrary
func checkInLocalLib(with id: String) {
let query = MPMediaQuery.songs()
let allSongs = query.items! as [MPMediaItem]
if allSongs.isEmpty == false {
let matchedSong = allSongs.filter { $0.playbackStoreID == id }
if matchedSong.isEmpty {
currentSongInLibrary = false
} else {
currentSongInLibrary = true
}
}
}
Submitted feedback: FB9823513
I also noticed if you have the button that will present the musicSubscriptionOffer use .toggle() instead of = true and you tap that button twice it will make your app crash 😅
Aah I was afraid this would be the case, will submit feedback! Thanks for responding :)
See comments (also, how do I delete this comment? haha)
Thanks Rich for this clear and extensive answer 😊
However, I do agree with SuperWomble, this is quite a common situation to be in as a developer where you want to change business model so a simple API in StoreKit 2 would make a lot of sense. I’ll file a feedback item to request this
Hi Joe,
Thank you for taking the time to respond.
Bundle.main.preferredLocalizations = ["en"]
Bundle.main.localizations = ["de", "es", "nl", "pt-PT", "en", "Base"]
Bundle.main.developmentLocalization = Optional("en")
MusicDataRequest.currentCountryCode = nl
This is what I get back from the code snippet above. I used to support more languages but I've removed them.
Looking at this response I noticed they were still considered to be active so I investigated it and noticed I still had some localized visuals. After removing them it seems to be fixed :)
Maybe it's an idea that MusicKit looks at the Bundle.main.preferredLocalizations instead of the Bundle.main.localizations? Anyway, thank you so much for this pointer :)
New API solves this! 😄 https://developer.apple.com/documentation/storekit/apptransaction?changes=latest_minor
You can use a UIViewRepresentable together with a singleton, not sure if this is the best way to do so but it works for me :)
here's a quick example:
Model (here you setup your RoomCaptureView)
final class Model : ObservableObject, RoomCaptureViewDelegate {
static var shared = Model()
@Published var roomCaptureView : RoomCaptureView
var captureSessionConfig : RoomCaptureSession.Configuration
init() {
roomCaptureView = RoomCaptureView(frame: .zero)
captureSessionConfig = RoomCaptureSession.Configuration()
}
func startSession() {
roomCaptureView.captureSession.run(configuration: captureSessionConfig)
}
func stopSession() {
roomCaptureView.captureSession.stop()
}
func captureView(shouldPresent roomDataForProcessing: CapturedRoomData, error: Error?) -> Bool {
return true
}
// Here you will get the final post-processed results.
func captureView(didPresent processedResult: CapturedRoom, error: Error?) {
if let error = error {
print("Error: \(error)")
}
}
}
UIViewRepresentable
struct RoomCaptureRep: UIViewRepresentable {
func makeUIView(context: Context) -> RoomCaptureView {
return Model.shared.roomCaptureView
}
func updateUIView(_ uiView: RoomCaptureView, context: Context) {
}
}
Usage
struct CoolRoomPlanView : View {
@StateObject var model = Model.shared
var body : some View {
ZStack {
RoomCaptureRep()
Button {
model.startSession()
} label: {
Text( "Start")
}
}
}
}
It seem to have removed the ShazamKit crashes but I am getting this error now:
I did :) I couldn't find ShazamKit as a topic in the Feedback app so it's here: FB10660773
The problem is that I need the tint colour of those icons to be dynamic (they match the Artwork), and also my AccentColor is currently green and being ignored :(