I made the purchase 48 hours ago and i dont have access to my developer account.
Subscriptions
RSS for tagGive users access to content, services, or premium features in your app on an ongoing basis with subscriptions, a type of in-app purchase.
Posts under Subscriptions tag
200 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
Hey,
I've been having a frustrating time with Apple regarding my app's submission.
I initially submitted a build (version 1.2.27) of my app that included a "Full Access" subscription feature.
Shortly after, I decided to cancel this submission to update and resubmit a newer version. But now, I'm stuck because the "Full Access" subscription seems locked in a "Waiting for Review" status.
This means I can't select it for my new submission.
I reached out to Apple Support for help. I explained that my problem isn't with canceling the submission but with being unable to choose the "Full Access" subscription for the new version. They responded quickly but only provided a link to manage version submissions, which doesn't really address my specific issue. So, I had to clarify again that I need guidance on how to unlock the subscription from its current status so I can move forward with my app's resubmission.
It's a bit of a loop, and I'm still waiting for a solution from them.
We are currently implementing a feature that will allow us to extend the subscription period for users who have suffered losses due to our negligence.
Regarding the problem that is occurring in the sandbox environment during the testing stage, please check whether it is due to the sandbox specifications.
■Reproduction steps
Sandbox account A starts charging in the sandbox environment (sandbox account A is in the state of automatic contract renewal)
Execute extension process for a specific period for sandbox account A.
Confirm that the period of sandbox account A has been extended.
Confirm that sandbox account A has reached the expiration date after the extension and that the next contract renewal will be performed automatically.
Delete the purchase history of sandbox account A by following the steps below.AppStoreConnect->Users and Access->Sandbox->Test Account->Edit "Clear Purchase History".
Proceed with steps 1 to 3 again for sandbox account A.
Due to the expiration of the period in step 4, the automatic contract renewal for sandbox account A was canceled and subsequent contract renewals were no longer performed. (This is the problem)
I've run similar tests with other accounts, and in every test the problem doesn't occur until I clear my purchase history, but the problem occurs after I clear my purchase history.
When I checked the log information, the following notification was received at the timing of step 7, and it seems that the user took the initiative to cancel the automatic update.
「"notificationType": "EXPIRED", "subtype": "VOLUNTARY"」
Please let me know if the behavior is as specified.
Hello everyone, we have 6 subscription models in only one subscription group, of which we only show 2 (monthly and yearly) via RevenueCat. So we have 3 prices (offer, normal price and another one that we use later to increase the price)
Now we were approached by a customer that she could choose the subscription model of the 3 monthly subscriptions when renewing her subscription. That would of course be fatal for us if that were the case.
We have already sold the app over 1000 times and it has been running for almost 6 months.
When I look at the statistics at RevenueCat, everything is ok, those who bought for the offer could also continue to run for the offer price. and those for the normal price too.
We have set the app to free because we allow downloading and installation and you only then take out the subscription in the app. Of course, we point this out to customers.
What is your experience? Does anyone know who can tell me whether I can continue with this or whether I should deactivate the other outdated subscriptions first, for example?
Of course, I still need to find out how this works with Google and the Google Play Store. Of course, we've done the same thing there.
Best Regards
Hi Team,
When offering services involving one-on-one consultations conducted outside the app (e.g., via phone calls or Zoom), is it required to implement Apple's in-app purchase system as a consumable for these services, or can we utilize a third-party payment method compliant with current App Store guidelines?
Why, in the list of displayed prices, I want to select 10480, but I can't find it. However, there is 9840. I have entered all the books, but it still doesn't exist.
I'm looking for an expert who can evaluate my app and provide advice to increase the conversion and retention rates.
Hello,
We have a few FAMILY_SHARED subscriptions which received a DID_RENEW notification, with all the cancellation fields completed, the expiration date in the future and no pending_renewal_info array in it.
We are not sure why did we get the DID_RENEW notification with the cancelation details, shouldn't we get a REVOKE notification?
We found this in the Apple documentation: The pending_renewal_info array is returned only for app receipts that contain auto-renewable subscriptions. If customers voluntarily cancel a subscription renewal while in the grace period, the App Store pauses billing retry, and removes the transaction from pending_renewal_info. The subscription is in the grace period if the key grace_period_expires_date_ms is present and the expiration date hasn't passed.
We do not handle any cancelation related logic for the DID_RENEW notification. Should we adjust the logic for this scenario or there should be a different notification type sent out.
This is how the latest element looks like from the lattest_recipt_info:
"auto_renew_status": "true",
"unified_receipt": {
"status": 0,
"environment": "Production",
"latest_receipt_info": [{
"quantity": "1",
"product_id": "product_id",
"transaction_id": "transaction_id",
"purchase_date": "2023-11-07 23:01:41 Etc/GMT",
"purchase_date_ms": "1699398101000",
"purchase_date_pst": "2023-11-07 15:01:41 America/Los_Angeles",
"original_purchase_date": "2021-10-07 22:01:42 Etc/GMT",
"original_purchase_date_ms": "1633644102000",
"original_purchase_date_pst": "2021-10-07 15:01:42 America/Los_Angeles",
"expires_date": "2024-11-07 23:01:41 Etc/GMT",
"expires_date_ms": "1731020501000",
"expires_date_pst": "2024-11-07 15:01:41 America/Los_Angeles",
"web_order_line_item_id": "web_order_line_item_id",
"is_trial_period": "false",
"is_in_intro_offer_period": "false",
"original_transaction_id": "original_transaction_id",
"cancellation_date": "2023-11-07 15:37:03 Etc/GMT",
"cancellation_date_ms": "1699371423020",
"cancellation_date_pst": "2023-11-07 07:37:03 America/Los_Angeles",
"cancellation_reason": "0",
"in_app_ownership_type": "FAMILY_SHARED",
"subscription_group_identifier": "subscription_group_identifier"
}
App Store kept rejecting my app because the Manage Subscriptions Page says Cannot Connect when it's run on a Sandbox account. I'm using the manageSubscriptionsSheet(isPresented:) API, and I don't know how to fix this.
There are others dealing with the same issue and everything I found so far is saying it's iOS issue.
I responded to the App Store saying it's an iOS issue and included the following links:
Apple Developer Forums
Apple Developer Forums
Apple Support Communities
Apple Support Communities
They replied with the following generic message:
During our review, we found that your app displayed an error message when we tapped on "manage subscription". While we cannot provide technical assistance with the reported issues, we have put together the following resources which discuss common issues seen in apps during review.
To start, please see Testing a Release Build, which gives an overview of how to test your app to minimize the chances of issues occurring during review.
You may also want to review Designing for Real-World Networks, as all apps are reviewed on-device and in an environment that replicates real-world use of your app.
Is there a way to fix this? How should I respond back? Also, can I just take out the Manage Subscription functionality?
We've implemented subscriptions in our app, but a few users are reporting that the payment sheet isn't opening its keep loading, we also checked with them that the permission for in app purchases is allowed in device settings and in all other apps purchases working fine only facing issue in our app side. This issue isn't replicable on our end, and we're unable to debug it. Can you please assist us in resolving this?
Hi
I am unable to delete a subscription, it keeps giving an error message "An error has occurred. Try again later."
Some background :
I have submitted my app along with subscription for review and it got rejected with the message - Guideline 3.1.2 - Business - Payments - Subscriptions
When I tried to edit the exisiting rejected subscription by changing the localisation or review screenshot it is giving an error. Then I decided to delete this subscription itself and create a new one, that also giving an error.
Spend whole day trying to figure out this issue still no luck , anyone else experienced this ?
I've read several topics on cancelling subscriptions in sandbox environment, but it seems to me that it could not be applied to TestFlight.
I can cancel sandbox subscriptions through Settings > App Store > Sandbox account
But since TestFlight does not use sandbox account I cannot cancel a sub from there.
Also, TF purchase does not appear in the list of regular subscriptions (Settings > Profile > Media & Purchases).
So my question is: is there any way to manually cancel auto-renewable subscription bought in TestFlight build of the app?
We have a subscription based app. We offer discount codes to some customers (e.g., 50% off). When the customer purchases, they receive confirmation code from Apple, but at the full price. Apple's confirmation email does not reflect the discount.
Anybody seen this? Could this be an issue with how discount codes are setup?
My app (Apple ID: 6473235939) first released on Dec 2 2023 to App Store for China market, and it has auto-renewal subscription. However, the user in China downloaded, installed and launched it, and he can't see the price, looks the app can't fetch the purchase product information, so the user can't subscribe. However, in the info section of app store the in-app purchase price is listed and right.
The app was tested ok based in Canada, and the right subscription price is showing.
Does the auto-subscription is blocked for China market?
Any help? Thanks a lot.
Hello,
I have configured V2 server notifications for my applications. I am receiving different types of notifications (https://developer.apple.com/documentation/appstoreservernotifications/notificationtype) in my webhook.
Something changed after November 18th. EXPIRED notifications are no longer received. Has something changed in the API? Other notification types still work.
I am developing my first app and having issues understanding how SubscriptionStoreView works. I used some business logic available from Apple, but I see other resources that insinuate the StoreKit views can handle all of the business logic itself, and all I need is the config file.
Can anyone confirm? When I'm previewing SubscriptionStoreView, It just says, "The subscription is unavailable in the current storefront," and I cannot find what that means or what to fix.
I want to add a feature where I can buy subscription for my friends or family members that are using same app
i have non-renewable plans in my app console. Upon plan approval, testing was successful initially. However, after 2 days, the plan, which I had successfully purchased multiple times in the sandbox environment, now displays an 'Invalid product ID,' while other plans continue to function correctly.
Greetings community members,
I am currently navigating the intricacies of in-app purchases in my React Native application. Specifically, I am in the process of integrating auto-renewable subscriptions using the 'react-native-iap' package. Below is the complete code snippet I have implemented. While I have successfully fetched the subscriptions, I encounter an issue during the subscription process. After triggering the sandbox UI, a subscribe button appears. However, upon selecting it, a sign-in prompt is presented. Despite providing the correct credentials, the intended action does not occur.
I would greatly appreciate any insights or guidance on resolving this matter. Thank you in advance for your assistance.
import { View, Text, Button, StyleSheet, Alert, Platform } from 'react-native'; // Import Platform
import {
useIAP,
validateReceiptIos,
finishTransaction,
} from 'react-native-iap';
import axios from 'axios';
import { ITUNES_SHARED_SECRET } from "@env";
const SubscriptionScreen = ({ navigation }) => {
const {
requestSubscription,
getSubscriptions,
currentPurchase,
purchaseHistory,
} = useIAP();
const [subscriptionStatus, setSubscriptionStatus] = useState(false);
const [loading, setLoading] = useState(false);
useEffect(() => {
handleGetSubscriptions();
}, []);
useEffect(() => {
if (purchaseHistory && purchaseHistory.length > 0) {
const isSubscribed = purchaseHistory.some((purchase) =>
subscriptionSkus.includes(purchase.productId)
);
if (isSubscribed) {
setSubscriptionStatus(true);
}
}
}, [purchaseHistory]);
const subscriptionSkus = Platform.select({
ios: ['sub1', 'sub2', 'sub3'],
});
const handleGetSubscriptions = async () => {
try {
await getSubscriptions({ skus: subscriptionSkus });
} catch (error) {
console.error('Error getting subscriptions:', error);
}
};
const handleBuySubscription = async (productId) => {
try {
setLoading(true);
// Request subscription
const purchase = await requestSubscription({
sku: productId,
...(Platform.OS === 'ios' && { andDangerouslyFinishTransactionAutomaticallyIOS: false }), // Handle differently for iOS
});
// Finish the transaction
await finishTransaction({
purchase,
isConsumable: false,
});
// Check if the purchase was successful
if (purchase.transactionState === 'Purchased') {
// Validate the receipt
const receipt = purchase.transactionReceipt;
await handleValidateReceipt(receipt);
// Navigate to the desired screen
navigation.navigate('IndexPage');
} else {
// Handle other transaction states if needed
console.warn('Transaction state:', purchase.transactionState);
}
} catch (err) {
console.error(err.code, err.message);
} finally {
setLoading(false);
}
};
const handleValidateReceipt = async (receipt) => {
try {
const isTestEnvironment = false;
const response = await validateReceiptIos(
{
'receipt-data': receipt,
password: ITUNES_SHARED_SECRET,
},
isTestEnvironment
);
if (response && response.status === 0) {
// Receipt is valid, you may want to save the purchase on your server
const serverValidationResult = await validateReceiptOnServer(receipt);
if (serverValidationResult.valid) {
setSubscriptionStatus(true);
Alert.alert('Subscription Purchased', 'Thank you for subscribing!');
} else {
console.warn('Server validation failed');
}
} else {
console.warn('Receipt validation failed');
}
} catch (error) {
console.error('Error during receipt validation:', error);
}
};
const validateReceiptOnServer = async (receipt) => {
try {
// Replace with your server endpoint for receipt validation
const response = await axios.post('', { receipt });
return response.data;
} catch (error) {
console.error('Error validating receipt on server:', error);
return { valid: false };
}
};
useEffect(() => {
const checkCurrentPurchase = async () => {
if (currentPurchase) {
const receipt = currentPurchase.transactionReceipt;
if (receipt) {
await handleValidateReceipt(receipt);
try {
await finishTransaction({
purchase: currentPurchase,
isConsumable: false,
});
} catch (err) {
console.warn(err.code, err.message);
}
}
}
};
checkCurrentPurchase();
}, [currentPurchase, finishTransaction]);
return (
<View style={styles.container}>
<Text>{subscriptionStatus ? 'Subscribed' : 'Not Subscribed'}</Text>
{subscriptionSkus.map((sku) => (
<Button
key={sku}
title={`Purchase ${sku}`}
onPress={() => handleBuySubscription(sku)}
/>
))}
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
});
export default SubscriptionScreen;```
You can still renew your membership within the next 8 days and your apps will remain available on the App Store during this time. Open the Apple Developer app on your iPhone, iPad, or Mac. Sign in to your account, tap/click Renew, and follow the prompts.
I'm getting this message but renew button is not visible in Developer App or on website. How to to renew?