Post not yet marked as solved
Hello All,
Currently I'm implementing GroupActivities for a production app. The question isn't about the implementation, rather it's about staying backward compatible.
The app's minimum target is iOS 13.0. The new features are implemented with appropriate @available checks so that there aren't any issues while compiling for iOS 13 & iOS 14.
When the app is run on a iOS 13.0 simulator though, it crashes during launch, stating:
dyld: Library not loaded: /usr/lib/swift/libswift_Concurrency.dylib
So I have added the libswift_Concurrency.tbd to be optionally linked to the main app target as seen in the screenshot. After this it seems to be working fine but I wanted to ask whether this is the right way to go in this particular situation or is there something else that needs to be done?
Thanks in advance for your time!
All the best,
Ferhat
Post not yet marked as solved
Hello All,We have recently got our app live on the App Store, which feels quite nice 🙂After I have downloaded the live version from the App Store the first thing that I've tested was the IAP and it didn't go well.So I'll start by what happens and then give some background info as well as notes regarding the code.What happens: The purchase is requested and then the StoreKit kicks in with its usual interface. Then I keep up with the dialogue until it asks for the confirmation regarding the payment. Then I say OK and here it gets interesting. Two things happen at the same time: First is that I get the message that the payment was successful and at the same time (probably even a little earlier than the success message) I get an error that goes "Cannot connect to the iTunes Store".Then I go check my account to see that the payment has really gone through - so I actually have bought the product successfully. Then I go back in the App thinking that I should be able to restore that purchase and try to do so. And I'm able to restore the purchase and then the product is actually enabled by the app logic.Development phase:During the development phase I have tested the IAP process in a very detailed way, trying to fulfill all the test scenarios in the guideline. The app was able to carry out the purchase processes successfully even when one was interrupted and then it was handled later on. It's able to validate the receipt using our backend server correctly and it was able to restore the products. These tests I have carried out both with Debug and Release builds.Notes regarding the code:First of all, I want to say that the transaction observer right before returning true from didFinishLaunchingWithOptions delegate method and it's never removed throughout the lifecycle of the app.The receipt (I'm not sure whether it's related but anyway) is validated online. And I have confirmed on the server side that the receipt is validated for the production environment.Since I never remove the transaction observer from the payment queue, I have to assume that I only get the transaction failed state from the queue. Because that's the only case when I display an error message during a new purchase. And since the product is never enabled by the logic, I can say that I never get the transaction purchased state from the queue. One thing to mention here is that I finish the transactions right away when they have the state failed. Could this be an issue?Another question is:I'm adding the transaction observer in the main thread. But when I get a call on the the paymentQueue(SKPaymentQueue, updatedTransactions: [SKPaymentTransaction]) method; I pass the rest of the app logic handling to another thread which has the qOs: .utility and come back to the main thread if only I have something to update on the UI as a result of the logic. Is there anything wrong here?Well, this is all I can think of right now but if there is something I have skipped to mention, please let me know and I'll give the necessary information.Thank you in advance and have a good day.Cheers,Fero