Discussions
A/B experiment
Hello!
I need help to check which source converts more users to trials - onboarding screens or 2 variants in subscription screen. How to configure this expiriment?
Posted by Polin S 24 days ago
Bulk subscription management for multiple users simultaneously
We would like to provide subscriptions to multiple users simultaneously. We have a list of users with their email addresses in a CSV file. Does Qconversion offer any feature or option that allows us to upload this CSV(or any other file format with list of email id\`s) and grant subscriptions to all the user accounts listed?
Posted by Laxmi about 1 month ago
Request for Code Review and Concern about Qonversion Integration Impact on App Performance
Currently, I have modified three functions to insert Qonversion-related code. Can you help me review whether I have done it correctly?
I have another concern. If, after trying, I am not satisfied with the outcome and decide not to purchase any plan from Qonversion, will the newly added Qonversion-related code affect my app’s performance in production?
Thank you.
```
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
...
let config = Qonversion.Configuration(projectKey: "XXX", launchMode: .analytics)
Qonversion.initWithConfig(config)
return true
}
private func listenForTransactions() -> Task<Void, Error> {
return Task.detached {
//Iterate through any transactions which didn't come from a direct call to `purchase()`.
for await result in Transaction.updates {
do {
let transaction = try self.checkVerified(result)
//Deliver content to the user.
await self.updatePurchasedIdentifiers(transaction)
//https://documentation.qonversion.io/docs/analytics-mode
await QonversionSwift.shared.handleTransaction(transaction)
//Always finish a transaction.
await transaction.finish()
} catch {
//StoreKit has a receipt it can read but it failed verification. Don't deliver content to the user.
error_log(error)
}
}
}
}
func purchase(_ shop: Shop) async -> Bool {
guard let product = products.filter({ $0.id == shop.identifier }).first else { return false }
do {
//Begin a purchase.
let result = try await product.purchase()
switch result {
case .success(let verification):
let transaction = try checkVerified(verification)
//Deliver content to the user.
await updatePurchasedIdentifiers(transaction)
//https://documentation.qonversion.io/docs/analytics-mode
await QonversionSwift.shared.handleTransaction(transaction)
//Always finish a transaction.
await transaction.finish()
return true
case .userCancelled, .pending:
return false
default:
return false
}
} catch {
error_log(error)
}
return false
}
```
Posted by Yan Cheng Cheok about 1 month ago
Connection error
I'm can't solve this error:
"Error occured while fetching products There was a network issue. Please make sure that the Internet connection is available on the device Unable to resolve host "api.qonversion.io": No address associated with hostname"
Posted by Guilherme about 1 month ago
syncPurchases and syncStoreKit2Purchases
iOS, StoreKit 2
Subscriptions only
How do I determine which version I'm using?
iOS, do I need to call this method after the purchase is completed?
I saw that iOS allows calling this method:syncStoreKit2Purchases
<br />
When do I call the following method?
Where are the parameters obtained?
Subscriptions & Consumables
In case you're using StoreKit Version 2 and selling Subscriptions and Consumables we recommend using one of these methods before finishing transactions:
Swift
await QonversionSwift.shared.syncStoreKit2Transactions()
await QonversionSwift.shared.handleTransaction(transaction)
await QonversionSwift.shared.handleTransactions(transactions)
Posted by wuchenrui about 1 month ago
Something went wrong on our end.Please try again
When you use the Android SDK to subscribe to product A and then call the updatePurchase API to subscribe to product B after the product expires, an error will occur: Something went wrong on our end. Please try again. Error callback information: QonversionError: {code=PlayStoreError, description=There was an issue with the Play Store service, additionalMessage=It is a proxy of the Google BillingClient error: ERROR. }
Posted by Felix about 2 months ago
syncHistoricalData
syncHistoricalData
I read the document of this method, but I still don't know what the specific function is. When I make a subscription, should I call it? Is it called when the application starts? What are the requirements?
identify before or after this method
Posted by wuchenru about 2 months ago
purchaseProduct
(void)purchaseProduct:(QONProduct \*)product completion:(QONPurchaseCompletionHandler)completion
(void)purchase:(NSString \*)productID completion:(QONPurchaseCompletionHandler)completion
Which of these two methods should I use, and what exactly is the difference between what I want to do as a subscription
Posted by wuchenru about 2 months ago
restore
void)restore:(QNRestoreCompletionHandler)completion {
How should I use this method, when should I use it, and how should I judge to use it in the code
Posted by wuchenru about 2 months ago
purchaseProduct
This method sometimes takes a long time to call back, and sometimes it doesn't call back, and I don't receive any information
Posted by wu about 2 months ago