I want to set up a consumable in-app purchase that buys a virtual ticket for a specific event in my app. When they buy the ticket I will send a message to my server to add their userID for a specific event ID in the database. There will be many events that a user could buy a consumable ticket for.
I am aware of the necessity for a SKPaymentTransactionObserver subclass which handles transactions.
However, if something goes wrong (they background the app, battery dies, loss of internet connection) the SKPaymentTransactionObserver will be sent the transaction until I call -finishTransaction. How can I know what event ID they've purchased the consumable for in this instance? Is there a payload that I can attach to a transaction?
Thanks!
Post
Replies
Boosts
Views
Activity
This has been posted before on here but none of the answers work. I have 6 navigation links within a navigation view but on some of them it randomly pops back to the root and says "Unable to present. Please file a bug." in the console. Here is my code for my NavigationView:
VStack {
NavigationLink(
destination: EventSetupQueueSelectionView()
.background(Color.neutral(.oneHundred))
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
,
tag: 1,
selection: $modelController.currentPage,
label: { EmptyView() }
)
NavigationLink(
destination: EventSetupQueueDetailsView()
.background(Color.neutral(.oneHundred))
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
,
tag: 2,
selection: $modelController.currentPage,
label: { EmptyView() }
)
NavigationLink(
destination: EventSetupSigningView()
.background(Color.neutral(.oneHundred))
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
,
tag: 3,
selection: $modelController.currentPage,
label: { EmptyView() }
)
NavigationLink(
destination: EventSetupRetailView()
.background(Color.neutral(.oneHundred))
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
,
tag: 4,
selection: $modelController.currentPage,
label: { EmptyView() }
)
NavigationLink(
destination: EventSetupPrivacyView()
.background(Color.neutral(.oneHundred))
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
,
tag: 5,
selection: $modelController.currentPage,
label: { EmptyView() }
)
NavigationLink(
destination: EventSetupSummaryView()
.background(Color.neutral(.oneHundred))
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
,
tag: 6,
selection: $modelController.currentPage,
label: { EmptyView() }
)
EventSetupDetailView()
.background(Color.neutral(.oneHundred))
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
}
}
The modelController.currentPage is changed via a separate button below the navigation view. I've removed that for simplicity. If I reduce the number of NavigationLinks, it works but this is not a solution. How can I fix this?