Apple Developer Program

RSS for tag

Create and deliver software for users around the world on Apple platforms using the the tools, resources, and support included with Apple Developer Program membership.

Apple Developer Program Documentation

Posts under Apple Developer Program subtopic

Post

Replies

Boosts

Views

Activity

Apple Inapp payement response handling
i'm integrating In-App Purchases in our Flutter app using the official in_app_purchase plugin. We are currently testing consumable purchases and facing issues with the way events are delivered from StoreKit to the app. Implementation details I initiate the purchase with: await InAppPurchase.instance.buyConsumable(purchaseParam: purchaseParam); I listen for purchase updates with: final Stream<List> purchaseUpdated = inAppPurchase.purchaseStream; _subscription = purchaseUpdated.listen((purchaseDetailsList) { _handlePurchaseUpdates(purchaseDetailsList); }, onError: (Object error) { updateApplePaymentStatus(isSuccess: false, response: jsonEncode(error.toString())); }, onDone: () { _subscription.cancel(); }); Issues Observed Control on purchase button event As soon as the user taps the purchase button, the App Store purchase sheet is shown. Question: Is there a way to intercept control at this point (before showing the sheet) to perform additional checks or logging? Cancelled payment after UPI intent In our testing with UPI payment flows (UPI intent triggered from Apple Pay/linked payment method), if the user cancels the payment from the external flow, we don’t see a clear event in purchaseStream. Question: How can we reliably capture this cancellation status on the app side? Event timing after successful purchase Currently, the purchaseStream event is only triggered after the StoreKit purchase confirmation popup has been dismissed by the user. Question: Is there a way to capture the event earlier (i.e., right after StoreKit confirms payment success), so we can update our backend and UI without waiting for popup dismissal? Request We would appreciate guidance on: Best practices for intercepting purchase initiation before the StoreKit sheet. Recommended way to detect and handle cancelled payments (especially in UPI flows) managed on frondend side. Whether it is possible to receive successful purchase events without waiting for the user to dismiss the confirmation dialog. Thank you for your support.
0
0
246
Sep ’25
Need assistance with accessing your developer account?
I can login. but when I click account, I was redirected to a page wiith a form directly.Need assistance with accessing your developer account?I got email saying below, but they never contact with me. What should I do? I need use the account info the app deloyment. Thank you for contacting us.We’ve received your support request and will get back to you in one to two business days. Your case number is xxxxxxxFor additional information on development-related topics, visit Apple Developer Support.Best regards,Apple Developer Program Support
5
0
3.6k
Oct ’25
Apple pay processing payment fail
Hey, I am trying to implement the apple pay process pay backend service, I have checked everything and somehow it fails. I only have 1 certificate for merchant and 1 for the apple pay process, I have the private keys and try to run this following code that fails - import crypto from 'crypto'; import fs from 'fs'; import forge from 'node-forge'; const MERCHANT_ID_FIELD_OID = '1.2.840.113635.100.6.32'; function decryptedToken() { const token = ""; const ephemeralPublicKey = ""; const encryptedData = ""; //=================================== // Import certs //=================================== const epk = Buffer.from(ephemeralPublicKey, 'base64'); const merchantCert = fs.readFileSync('merchant_full.pem', 'utf8') const paymentProcessorCert = fs.readFileSync("apple_pay_private.pem"); //=================================== let symmetricKey = ''; try { symmetricKey = restoreSymmetricKey(epk, merchantCert, paymentProcessorCert); } catch (err) { throw new Error(`Restore symmetric key failed: ${err.message}`); } try { //----------------------------------- // Use the symmetric key to decrypt the value of the data key //----------------------------------- const decrypted = JSON.parse(decryptCiphertextFunc(symmetricKey, encryptedData)); console.log("Decrypted Token:", decrypted); // const preppedToken = prepTabaPayToken(token, decrypted) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Send decrypted token back to frontend //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // res.send(preppedToken); } catch (err) { throw new Error(`Decrypt cipher data failed: ${err.message}`); } } // extractMerchantID - const extractMerchantID = (merchantCert) => { //=================================== // Extract merchant identification from public key certificate //=================================== try { const info = forge.pki.certificateFromPem(merchantCert); const result = info['extensions'].filter(d => d.id === MERCHANT_ID_FIELD_OID); //----------------------------------- // Return //----------------------------------- return result[0].value.toString().substring(2); } catch (err) { throw new Error(Unable to extract merchant ID from certificate: ${err}); } } // generateSharedSecret - const generateSharedSecret = (merchantPrivateKey, ephemeralPublicKey) => { //=================================== // Use private key from payment processing certificate and the ephemeral public key to generate // the shared secret using Elliptic Curve Diffie*Hellman (ECDH) //=================================== const privateKey = crypto.createPrivateKey({ key: merchantPrivateKey, format: "pem", type: "sec1", // because it's "EC PRIVATE KEY" }); const publicKey = crypto.createPublicKey({ key: ephemeralPublicKey, format: 'der', type: 'spki' }); //----------------------------------- // Return //----------------------------------- return crypto.diffieHellman({privateKey,publicKey: publicKey,}); //----------------------------------- } // getSymmetricKey - const getSymmetricKey = (merchantId, sharedSecret) => { //=================================== // Get KDF_Info as defined from Apple Pay documentation //=================================== const KDF_ALGORITHM = '\x0didaes256GCM'; const KDF_PARTY_V = Buffer.from(merchantId, 'hex').toString('binary'); const KDF_PARTY_U = 'Apple'; const KDF_INFO = KDF_ALGORITHM + KDF_PARTY_U + KDF_PARTY_V; //----------------------------------- // Create hash //----------------------------------- const hash = crypto.createHash('sha256'); hash.update(Buffer.from('000000', 'hex')); hash.update(Buffer.from('01', 'hex')); hash.update(Buffer.from(sharedSecret, 'hex')); hash.update(KDF_INFO, 'binary'); //----------------------------------- // Return //----------------------------------- return hash.digest('hex'); //----------------------------------- } // restoreSymmetricKey - const restoreSymmetricKey = (ephemeralPublicKey, merchantCert, paymentProcessorCert) => { //=================================== // 3.a Use the payment processor private key and the ephemeral public key, to generate the shared secret //=================================== const sharedSecret = generateSharedSecret(paymentProcessorCert, ephemeralPublicKey); //----------------------------------- // 3.b Use the merchant identifier of the public key certificate and the shared secret, to derive the symmetric key //----------------------------------- const merchantId = extractMerchantID(merchantCert); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Return //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ console.log("Merchant ID:", merchantId); console.log("Shared Secret (hex):", sharedSecret); return getSymmetricKey(merchantId, sharedSecret); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } // decryptCiphertextFunc - const decryptCiphertextFunc = (symmetricKey, encryptedData) => { console.log("🔑 Decrypting Ciphertext with Symmetric Key:", symmetricKey); //=================================== // Get symmetric key and initialization vector //=================================== const buf = Buffer.from(encryptedData, 'base64'); const SYMMETRIC_KEY = Buffer.from(symmetricKey, 'hex'); const IV = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); // Initialization vector of 16 null bytes const CIPHERTEXT = buf.slice(0, -16); //----------------------------------- // Create and return a Decipher object that uses the given algorithm and password (key) //----------------------------------- const decipher = crypto.createDecipheriv("aes-256-gcm", SYMMETRIC_KEY, IV); const tag = buf.slice(-16, buf.length); decipher.setAuthTag(tag); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Load encrypted token into Decipher object //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ let decrypted = decipher.update(CIPHERTEXT); console.log("🔑 Decrypted Data"); decrypted += decipher.final(); //::::::::::::::::::::::::::::::::::: // Return //::::::::::::::::::::::::::::::::::: return decrypted; //::::::::::::::::::::::::::::::::::: } decryptedToken();
2
0
143
Sep ’25
Unable to Renew Developer Membership
This really shouldn't be this difficult. Here's the situation: We had a card linked to our Apple Developer account, which expired. It had already seen 2 successful membership purchases. We had auto-renewal turned on for the membership, which failed due to the expired card. I was unable to capture new payment details for about 2 days (battling with various Apple payment pages to get the new card added). But finally managed to do so. Now, there is no way to disable auto-renewal, and no way to trigger renewal. The membership is in expired status. We can't post updates, we can't take apps live. We have several clients eagerly awaiting publication of their apps. And Apple Support has been silent for over two weeks despite numerous requests. Anyone have any idea how to resolve this? I've tried almost every option described on every forum post.
0
0
157
Jun ’25
enrollment
My case is 102643649532, I'm on my account page, I click enroll, then it opens the enroll status page and there is an explanation saying "Contact us to continue your enrollment. You’ve exceeded the maximum number of attempts. Please contact us.". In this case, what should I do if I want to apply for an organization account?
1
0
329
Jul ’25
We can't continue with your enrollment at this time.
Dear Suman, Here is Volker, senior Advisor with Developer Support, and I am following up on your case. Thank you for your patience. For one or more reasons, your enrollment in the Apple Developer Program couldn't be completed. We can't continue with your enrollment at this time. You can still take advantage of great content using your Apple Account in Xcode to develop and test apps on your own device. Learn more about Xcode development. If you have any further questions or queries, please feel free to contact us. If you contact us by phone, please reference your case number 102654*******. Developer Support is available Monday to Friday, 8:00 AM through 5:00 PM (GMT+1). Kind regards, Volker Developer Support
0
0
115
Sep ’25
I made the payment but they still haven't released the developer license
Good afternoon everyone. I made the purchase and payment (as shown in the screenshot) on August 6th. However, two business days have passed and they still haven't granted full access (including for publishing new apps). I've already sent two emails requesting support (IDs 102663263864 and 102665787348), but I haven't received a response yet. Nothing appears in my developer account. Has anyone experienced this? Do you have any tips?
1
0
65
Aug ’25
Unable to test in-app purchase integration
We are trying to implement / test in-app purchase for our subscription purchase in the app. We have done all the steps listed in the documentation on apple's website; and Our subscription plan is sitting in 'Ready to Submit' state. However, we are getting an empty response from, final response = await _iap.queryProductDetails({'com.company.xyz.basic1m'}); debugPrint(" Check: ${response.toString()}"); debugPrint("❌ Responses: ${response.productDetails.map((ProductDetailsResponse)=>ProductDetailsResponse.toString()).toList()}"); debugPrint("❌ Responses: ${response.productDetails.length}"); if (response.notFoundIDs.isNotEmpty) { debugPrint("❌ Not found: ${response.notFoundIDs}"); } else if (response.productDetails.isNotEmpty) { debugPrint("✅ Product loaded: ${response.productDetails.first.title}"); } The response we get is, flutter: Check: Instance of 'ProductDetailsResponse' flutter: ❌ Responses: [] flutter: ❌ Responses: 0 flutter: ❌ Not found: [com.company.xyz.basic1m] Note: We are testing with a real device iphone 13 mini via Xcode. We tried to test using, ''com.apple.test.Subscription1.monthly'', as instructed but we have not been successful with that. And seems like (based on online search), it doesn't work all the time. We also searched online for a solution, and some of the forums suggest that we have to submit the app for review when adding subscription for the first time. It doesn't mention the same that in the apple documentation. It confusing. Help and guidance in this regard would be really appreciated.
1
0
187
Jun ’25
Bug Issue
find bug in Dynamic Island shows calling even after the call Was disconnected
Replies
0
Boosts
0
Views
139
Activity
Jul ’25
Apple Inapp payement response handling
i'm integrating In-App Purchases in our Flutter app using the official in_app_purchase plugin. We are currently testing consumable purchases and facing issues with the way events are delivered from StoreKit to the app. Implementation details I initiate the purchase with: await InAppPurchase.instance.buyConsumable(purchaseParam: purchaseParam); I listen for purchase updates with: final Stream<List> purchaseUpdated = inAppPurchase.purchaseStream; _subscription = purchaseUpdated.listen((purchaseDetailsList) { _handlePurchaseUpdates(purchaseDetailsList); }, onError: (Object error) { updateApplePaymentStatus(isSuccess: false, response: jsonEncode(error.toString())); }, onDone: () { _subscription.cancel(); }); Issues Observed Control on purchase button event As soon as the user taps the purchase button, the App Store purchase sheet is shown. Question: Is there a way to intercept control at this point (before showing the sheet) to perform additional checks or logging? Cancelled payment after UPI intent In our testing with UPI payment flows (UPI intent triggered from Apple Pay/linked payment method), if the user cancels the payment from the external flow, we don’t see a clear event in purchaseStream. Question: How can we reliably capture this cancellation status on the app side? Event timing after successful purchase Currently, the purchaseStream event is only triggered after the StoreKit purchase confirmation popup has been dismissed by the user. Question: Is there a way to capture the event earlier (i.e., right after StoreKit confirms payment success), so we can update our backend and UI without waiting for popup dismissal? Request We would appreciate guidance on: Best practices for intercepting purchase initiation before the StoreKit sheet. Recommended way to detect and handle cancelled payments (especially in UPI flows) managed on frondend side. Whether it is possible to receive successful purchase events without waiting for the user to dismiss the confirmation dialog. Thank you for your support.
Replies
0
Boosts
0
Views
246
Activity
Sep ’25
When do I get my license?
I bought the apple dev license almost 24 hours ago and still dont have it. How long does this take?
Replies
0
Boosts
0
Views
146
Activity
Jul ’25
developers account
I recently bought my developers account, it has been 6 days and still isn't activated, And I repeated the request twice now The account is Kuwaiti,Waiting for reply.thanks
Replies
2
Boosts
0
Views
579
Activity
Apr ’26
Unable to View iOS 26 Developer Beta on Device
See title. I'm logged into the correct account, developer mode is correctly enabled, and the associated Apple ID is the same as my developer account. Has anyone else encountered this issue? I only see the public betas that are available.
Replies
0
Boosts
0
Views
187
Activity
Aug ’25
Admin role can't edit some certificate created
I created an apple development certificate using an api key. When the certificate was created and I want to revoke the certificate but revoke button and download button is not there. I am an Admin in that account. Not sure how to fix this
Replies
1
Boosts
0
Views
111
Activity
May ’25
Need assistance with accessing your developer account?
I can login. but when I click account, I was redirected to a page wiith a form directly.Need assistance with accessing your developer account?I got email saying below, but they never contact with me. What should I do? I need use the account info the app deloyment. Thank you for contacting us.We’ve received your support request and will get back to you in one to two business days. Your case number is xxxxxxxFor additional information on development-related topics, visit Apple Developer Support.Best regards,Apple Developer Program Support
Replies
5
Boosts
0
Views
3.6k
Activity
Oct ’25
Payment method
I am trying to make payment of $99 towards purchase of developer account through credit card but the transaction was not processed. Kindly provide the alternate payment options.
Replies
1
Boosts
0
Views
437
Activity
Oct ’25
Apple pay processing payment fail
Hey, I am trying to implement the apple pay process pay backend service, I have checked everything and somehow it fails. I only have 1 certificate for merchant and 1 for the apple pay process, I have the private keys and try to run this following code that fails - import crypto from 'crypto'; import fs from 'fs'; import forge from 'node-forge'; const MERCHANT_ID_FIELD_OID = '1.2.840.113635.100.6.32'; function decryptedToken() { const token = ""; const ephemeralPublicKey = ""; const encryptedData = ""; //=================================== // Import certs //=================================== const epk = Buffer.from(ephemeralPublicKey, 'base64'); const merchantCert = fs.readFileSync('merchant_full.pem', 'utf8') const paymentProcessorCert = fs.readFileSync("apple_pay_private.pem"); //=================================== let symmetricKey = ''; try { symmetricKey = restoreSymmetricKey(epk, merchantCert, paymentProcessorCert); } catch (err) { throw new Error(`Restore symmetric key failed: ${err.message}`); } try { //----------------------------------- // Use the symmetric key to decrypt the value of the data key //----------------------------------- const decrypted = JSON.parse(decryptCiphertextFunc(symmetricKey, encryptedData)); console.log("Decrypted Token:", decrypted); // const preppedToken = prepTabaPayToken(token, decrypted) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Send decrypted token back to frontend //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // res.send(preppedToken); } catch (err) { throw new Error(`Decrypt cipher data failed: ${err.message}`); } } // extractMerchantID - const extractMerchantID = (merchantCert) => { //=================================== // Extract merchant identification from public key certificate //=================================== try { const info = forge.pki.certificateFromPem(merchantCert); const result = info['extensions'].filter(d => d.id === MERCHANT_ID_FIELD_OID); //----------------------------------- // Return //----------------------------------- return result[0].value.toString().substring(2); } catch (err) { throw new Error(Unable to extract merchant ID from certificate: ${err}); } } // generateSharedSecret - const generateSharedSecret = (merchantPrivateKey, ephemeralPublicKey) => { //=================================== // Use private key from payment processing certificate and the ephemeral public key to generate // the shared secret using Elliptic Curve Diffie*Hellman (ECDH) //=================================== const privateKey = crypto.createPrivateKey({ key: merchantPrivateKey, format: "pem", type: "sec1", // because it's "EC PRIVATE KEY" }); const publicKey = crypto.createPublicKey({ key: ephemeralPublicKey, format: 'der', type: 'spki' }); //----------------------------------- // Return //----------------------------------- return crypto.diffieHellman({privateKey,publicKey: publicKey,}); //----------------------------------- } // getSymmetricKey - const getSymmetricKey = (merchantId, sharedSecret) => { //=================================== // Get KDF_Info as defined from Apple Pay documentation //=================================== const KDF_ALGORITHM = '\x0didaes256GCM'; const KDF_PARTY_V = Buffer.from(merchantId, 'hex').toString('binary'); const KDF_PARTY_U = 'Apple'; const KDF_INFO = KDF_ALGORITHM + KDF_PARTY_U + KDF_PARTY_V; //----------------------------------- // Create hash //----------------------------------- const hash = crypto.createHash('sha256'); hash.update(Buffer.from('000000', 'hex')); hash.update(Buffer.from('01', 'hex')); hash.update(Buffer.from(sharedSecret, 'hex')); hash.update(KDF_INFO, 'binary'); //----------------------------------- // Return //----------------------------------- return hash.digest('hex'); //----------------------------------- } // restoreSymmetricKey - const restoreSymmetricKey = (ephemeralPublicKey, merchantCert, paymentProcessorCert) => { //=================================== // 3.a Use the payment processor private key and the ephemeral public key, to generate the shared secret //=================================== const sharedSecret = generateSharedSecret(paymentProcessorCert, ephemeralPublicKey); //----------------------------------- // 3.b Use the merchant identifier of the public key certificate and the shared secret, to derive the symmetric key //----------------------------------- const merchantId = extractMerchantID(merchantCert); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Return //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ console.log("Merchant ID:", merchantId); console.log("Shared Secret (hex):", sharedSecret); return getSymmetricKey(merchantId, sharedSecret); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } // decryptCiphertextFunc - const decryptCiphertextFunc = (symmetricKey, encryptedData) => { console.log("🔑 Decrypting Ciphertext with Symmetric Key:", symmetricKey); //=================================== // Get symmetric key and initialization vector //=================================== const buf = Buffer.from(encryptedData, 'base64'); const SYMMETRIC_KEY = Buffer.from(symmetricKey, 'hex'); const IV = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); // Initialization vector of 16 null bytes const CIPHERTEXT = buf.slice(0, -16); //----------------------------------- // Create and return a Decipher object that uses the given algorithm and password (key) //----------------------------------- const decipher = crypto.createDecipheriv("aes-256-gcm", SYMMETRIC_KEY, IV); const tag = buf.slice(-16, buf.length); decipher.setAuthTag(tag); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Load encrypted token into Decipher object //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ let decrypted = decipher.update(CIPHERTEXT); console.log("🔑 Decrypted Data"); decrypted += decipher.final(); //::::::::::::::::::::::::::::::::::: // Return //::::::::::::::::::::::::::::::::::: return decrypted; //::::::::::::::::::::::::::::::::::: } decryptedToken();
Replies
2
Boosts
0
Views
143
Activity
Sep ’25
Unable to Renew Developer Membership
This really shouldn't be this difficult. Here's the situation: We had a card linked to our Apple Developer account, which expired. It had already seen 2 successful membership purchases. We had auto-renewal turned on for the membership, which failed due to the expired card. I was unable to capture new payment details for about 2 days (battling with various Apple payment pages to get the new card added). But finally managed to do so. Now, there is no way to disable auto-renewal, and no way to trigger renewal. The membership is in expired status. We can't post updates, we can't take apps live. We have several clients eagerly awaiting publication of their apps. And Apple Support has been silent for over two weeks despite numerous requests. Anyone have any idea how to resolve this? I've tried almost every option described on every forum post.
Replies
0
Boosts
0
Views
157
Activity
Jun ’25
enrollment
My case is 102643649532, I'm on my account page, I click enroll, then it opens the enroll status page and there is an explanation saying "Contact us to continue your enrollment. You’ve exceeded the maximum number of attempts. Please contact us.". In this case, what should I do if I want to apply for an organization account?
Replies
1
Boosts
0
Views
329
Activity
Jul ’25
Assistance Needed with Apple Developer Account Payment Issue
Hello Developers, I need your help. I'm trying to pay for my Apple Developer Account, but it's being declined saying 'Your Purchase Could Not Be Completed'. I need to know where the problem is so I can successfully make the payment.
Replies
2
Boosts
0
Views
450
Activity
Mar ’26
We can't continue with your enrollment at this time.
Dear Suman, Here is Volker, senior Advisor with Developer Support, and I am following up on your case. Thank you for your patience. For one or more reasons, your enrollment in the Apple Developer Program couldn't be completed. We can't continue with your enrollment at this time. You can still take advantage of great content using your Apple Account in Xcode to develop and test apps on your own device. Learn more about Xcode development. If you have any further questions or queries, please feel free to contact us. If you contact us by phone, please reference your case number 102654*******. Developer Support is available Monday to Friday, 8:00 AM through 5:00 PM (GMT+1). Kind regards, Volker Developer Support
Replies
0
Boosts
0
Views
115
Activity
Sep ’25
苹果开发者无法邀请测试员,请问现在是在维护吗
苹果开发者无法邀请测试员,请问现在是在维护吗
Replies
0
Boosts
0
Views
87
Activity
Jun ’25
I made the payment but they still haven't released the developer license
Good afternoon everyone. I made the purchase and payment (as shown in the screenshot) on August 6th. However, two business days have passed and they still haven't granted full access (including for publishing new apps). I've already sent two emails requesting support (IDs 102663263864 and 102665787348), but I haven't received a response yet. Nothing appears in my developer account. Has anyone experienced this? Do you have any tips?
Replies
1
Boosts
0
Views
65
Activity
Aug ’25
Your enrollment in the Apple Developer Program could not be completed at this time.
Hi! Any ideas what can I do with this? Support does not provide any information: for one or more reasons, your enrollment couldn't be completed
Replies
1
Boosts
0
Views
81
Activity
Jun ’25
Unable to test in-app purchase integration
We are trying to implement / test in-app purchase for our subscription purchase in the app. We have done all the steps listed in the documentation on apple's website; and Our subscription plan is sitting in 'Ready to Submit' state. However, we are getting an empty response from, final response = await _iap.queryProductDetails({'com.company.xyz.basic1m'}); debugPrint(" Check: ${response.toString()}"); debugPrint("❌ Responses: ${response.productDetails.map((ProductDetailsResponse)=>ProductDetailsResponse.toString()).toList()}"); debugPrint("❌ Responses: ${response.productDetails.length}"); if (response.notFoundIDs.isNotEmpty) { debugPrint("❌ Not found: ${response.notFoundIDs}"); } else if (response.productDetails.isNotEmpty) { debugPrint("✅ Product loaded: ${response.productDetails.first.title}"); } The response we get is, flutter: Check: Instance of 'ProductDetailsResponse' flutter: ❌ Responses: [] flutter: ❌ Responses: 0 flutter: ❌ Not found: [com.company.xyz.basic1m] Note: We are testing with a real device iphone 13 mini via Xcode. We tried to test using, ''com.apple.test.Subscription1.monthly'', as instructed but we have not been successful with that. And seems like (based on online search), it doesn't work all the time. We also searched online for a solution, and some of the forums suggest that we have to submit the app for review when adding subscription for the first time. It doesn't mention the same that in the apple documentation. It confusing. Help and guidance in this regard would be really appreciated.
Replies
1
Boosts
0
Views
187
Activity
Jun ’25
question about weatherkit
Why can't Weatherkit return the corresponding language's ConditionCode based on Langular
Replies
1
Boosts
0
Views
201
Activity
Aug ’25
About Pocket Tunnel Permissions
When my users are using my app, I want to transmit encrypted information through a VPN, and I need to use the Packet Tunnel permission. How can I apply for the Packet Tunnel permission? Is it through a Hotspot Helper Request?
Replies
1
Boosts
0
Views
233
Activity
Oct ’25