I have a subscription group with two individual subscriptions configured but when trying to load the SubscriptionStoreView I get the error:
"Subscription Unavailable: The subscription is unavailable in the current storefront."
When I try to load the ProductView, it appears to be stuck in a loading screen. I am running the app on a device that is signed into a sandbox account. Any guidance would be greatly appreciated. Thank you.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hi,
I have a struct that I'd like to encode with JSON and send in the body of an HTTP request:
struct AccountCreationData: Codable, Hashable {
var name: String
var email: String
var phone: String
var password: String
private enum CodingKeys: String, CodingKey {
case name
case email
case phone
case password
}
}
I encode it with this code and set the HTTP request body to the encoded data:
guard let encoded = try? JSONEncoder().encode(account) else {
print("Failed to encode request")
return
}
request.httpBody = encoded
But in my backend, when I receive the data from the HTTP request, the JSON data is formatted as such:
'{"phone":"0000000000",
"password":"password",
"email":"email",",
"name":"name"}': ''}
Instead of:
{
"phone": "0000000000",
"password":"password"
"email":"email"
"name":"name"
}
So the JSON parser in my backend isn't properly parsing the data because of the format that the JSON is in. I was wondering if this is an issue with the way I'm encoding on the front end (Swift) or my backend. I have similar projects using the same code to encode the data so I'm unsure as to what the issue is. Any help would be greatly appreciated. Thank you.
Hi,
I have the following code, which for some reason is not working as expected. I have an .onAppear and a .task function that isn't running, which I can see isn't running because nothing is printing. Any guidance would be greatly appreciated. Thank you.
struct ContentView: View {
var body: some View {
ZStack {
switch view {
case .view1: View1()
case .view2: View2()
case .view3: View3()
case .view4: View4()
case .view5: View5()
default: SubscriptionStoreView(groupID: "")
}
}
.onAppear() {
view = .view6
print("test 1")
}
.task {
print("test")
await refreshPurchasedProducts()
}
}
func refreshPurchasedProducts() async {
// Iterate through the user's purchased products.
for await verificationResult in Transaction.currentEntitlements {
switch verificationResult {
case .verified(let transaction): print("verified")
case .unverified(let unverifiedTransaction, let verificationError): print("unverified")
default: print("default")
}
}
}
}
Hi,
I am in need of a solution that takes data from SwiftData classes and generates a PDF with the given data. Any guidance would be greatly appreciated.
Hi,
I tried to make a new branch of my project and upon doing so, all of my old files disappeared. They are no longer in my folder directory or available in Xcode. Please let me know if there is any way to recover these files. I don't see the files in my trash either.
Hi,
I have a couple of questions in regards to testing in-app purchases. I tested the subscription on a device but I'm not sure how to reset so I can test again. I didn't see the subscription in device settings or in Debug -> StoreKit -> Manage Subscriptions window. Additionally, I was wondering if there was a way to detect the subscription being made. I implemented this, but I'm not sure if that will work:
.onChange(of: Product.SubscriptionInfo.RenewalState.subscribed) {
if Product.SubscriptionInfo.RenewalState.subscribed == .subscribed {
}
}
With the code below, JSON data is parsed and is stored in the variable data in the .onAppear function, however an empty set of data is passed to the Content view. How can that be fixed so that the JSON data passes to the DataView?
struct ContentView: View {
@State var data: [Data]
@State var index: Int = 0
var body: some View {
VStack {
DataView(data: data[index])
}
.onAppear {
let filePath = Bundle.main.path(forResource: "data", ofType: "json")
let url = URL(fileURLWithPath: filePath!)
data = getData(url: url)
}
}
func getData(url: URL) -> [Data] {
do {
let data = try Data(contentsOf: url)
let jsonDecoded = try JSONDecoder().decode([Data].self, from: data)
return jsonDecoded
} catch let error as NSError {
print("Fail: \(error.localizedDescription)")
} catch {
print("Fail: \(error)")
}
return []
}
}
Hi, I have a couple questions about background app refresh. First, is the function RefreshAppContentsOperation() where to implement code that needs to be run in the background? Second, despite importing BackgroundTasks, I am getting the error "cannot find operationQueue in scope". What can I do to resolve that? Thank you.
func scheduleAppRefresh() {
let request = BGAppRefreshTaskRequest(identifier: "peaceofmindmentalhealth.RoutineRefresh")
// Fetch no earlier than 15 minutes from now.
request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60)
do {
try BGTaskScheduler.shared.submit(request)
} catch {
print("Could not schedule app refresh: \(error)")
}
}
func handleAppRefresh(task: BGAppRefreshTask) {
// Schedule a new refresh task.
scheduleAppRefresh()
// Create an operation that performs the main part of the background task.
let operation = RefreshAppContentsOperation()
// Provide the background task with an expiration handler that cancels the operation.
task.expirationHandler = {
operation.cancel()
}
// Inform the system that the background task is complete
// when the operation completes.
operation.completionBlock = {
task.setTaskCompleted(success: !operation.isCancelled)
}
// Start the operation.
operationQueue.addOperation(operation)
}
func RefreshAppContentsOperation() -> Operation {
}