## StoreKit 2 Refactor - Rewrote IAPManager with clean enum-based state model (SubscriptionState) - Added native SubscriptionStoreView for iOS 17+ purchase UI - Subscription status now checked on every app launch - Synced subscription status to UserDefaults for widget access - Simplified PurchaseButtonView and IAPWarningView - Removed unused StatusInfoView ## Interactive Vote Widget - New FeelsVoteWidget with App Intents for mood voting - Subscribers can vote directly from widget, shows stats after voting - Non-subscribers see "Tap to subscribe" which opens subscription store - Added feels:// URL scheme for deep linking ## Firebase Removal - Commented out Firebase imports and initialization - EventLogger now prints to console in DEBUG mode only ## Other Changes - Added fallback for Core Data when App Group unavailable - Added new localization strings for subscription UI - Updated entitlements and Info.plist 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
168 lines
3.7 KiB
Plaintext
168 lines
3.7 KiB
Plaintext
{
|
|
"appPolicies" : {
|
|
"eula" : "",
|
|
"policies" : [
|
|
{
|
|
"locale" : "en_US",
|
|
"policyText" : "",
|
|
"policyURL" : ""
|
|
}
|
|
]
|
|
},
|
|
"identifier" : "00CCEDCC",
|
|
"nonRenewingSubscriptions" : [
|
|
|
|
],
|
|
"products" : [
|
|
|
|
],
|
|
"settings" : {
|
|
"_askToBuyEnabled" : false,
|
|
"_billingGracePeriodEnabled" : false,
|
|
"_billingIssuesEnabled" : false,
|
|
"_disableDialogs" : false,
|
|
"_failTransactionsEnabled" : false,
|
|
"_locale" : "en_US",
|
|
"_renewalBillingIssuesEnabled" : false,
|
|
"_storefront" : "USA",
|
|
"_storeKitErrors" : [
|
|
{
|
|
"enabled" : false,
|
|
"name" : "Load Products"
|
|
},
|
|
{
|
|
"enabled" : false,
|
|
"name" : "Purchase"
|
|
},
|
|
{
|
|
"enabled" : false,
|
|
"name" : "Verification"
|
|
},
|
|
{
|
|
"enabled" : false,
|
|
"name" : "App Store Sync"
|
|
},
|
|
{
|
|
"enabled" : false,
|
|
"name" : "Subscription Status"
|
|
},
|
|
{
|
|
"enabled" : false,
|
|
"name" : "App Transaction"
|
|
},
|
|
{
|
|
"enabled" : false,
|
|
"name" : "Manage Subscriptions Sheet"
|
|
},
|
|
{
|
|
"enabled" : false,
|
|
"name" : "Refund Request Sheet"
|
|
},
|
|
{
|
|
"enabled" : false,
|
|
"name" : "Offer Code Redeem Sheet"
|
|
}
|
|
],
|
|
"_timeRate" : 0
|
|
},
|
|
"subscriptionGroups" : [
|
|
{
|
|
"id" : "2CFE4C4F",
|
|
"localizations" : [
|
|
|
|
],
|
|
"name" : "group1",
|
|
"subscriptions" : [
|
|
{
|
|
"adHocOffers" : [
|
|
|
|
],
|
|
"codeOffers" : [
|
|
|
|
],
|
|
"displayPrice" : "0.99",
|
|
"familyShareable" : false,
|
|
"groupNumber" : 1,
|
|
"internalID" : "44A8029E",
|
|
"introductoryOffer" : null,
|
|
"localizations" : [
|
|
{
|
|
"description" : "weekly desc",
|
|
"displayName" : "Weekly",
|
|
"locale" : "en_US"
|
|
}
|
|
],
|
|
"productID" : "com.tt.ifeel.IAP.subscriptions.weekly",
|
|
"recurringSubscriptionPeriod" : "P1W",
|
|
"referenceName" : "Weekly",
|
|
"subscriptionGroupID" : "2CFE4C4F",
|
|
"type" : "RecurringSubscription",
|
|
"winbackOffers" : [
|
|
|
|
]
|
|
},
|
|
{
|
|
"adHocOffers" : [
|
|
|
|
],
|
|
"codeOffers" : [
|
|
|
|
],
|
|
"displayPrice" : "0.99",
|
|
"familyShareable" : false,
|
|
"groupNumber" : 1,
|
|
"internalID" : "C011E06B",
|
|
"introductoryOffer" : null,
|
|
"localizations" : [
|
|
{
|
|
"description" : "montly desc",
|
|
"displayName" : "Monthly",
|
|
"locale" : "en_US"
|
|
}
|
|
],
|
|
"productID" : "com.tt.ifeel.IAP.subscriptions.monthly",
|
|
"recurringSubscriptionPeriod" : "P1M",
|
|
"referenceName" : "Monthly",
|
|
"subscriptionGroupID" : "2CFE4C4F",
|
|
"type" : "RecurringSubscription",
|
|
"winbackOffers" : [
|
|
|
|
]
|
|
},
|
|
{
|
|
"adHocOffers" : [
|
|
|
|
],
|
|
"codeOffers" : [
|
|
|
|
],
|
|
"displayPrice" : "4.99",
|
|
"familyShareable" : false,
|
|
"groupNumber" : 1,
|
|
"internalID" : "32967821",
|
|
"introductoryOffer" : null,
|
|
"localizations" : [
|
|
{
|
|
"description" : "yearly desc",
|
|
"displayName" : "Yearly",
|
|
"locale" : "en_US"
|
|
}
|
|
],
|
|
"productID" : "com.tt.ifeel.IAP.subscriptions.yearly",
|
|
"recurringSubscriptionPeriod" : "P1Y",
|
|
"referenceName" : "Yearly",
|
|
"subscriptionGroupID" : "2CFE4C4F",
|
|
"type" : "RecurringSubscription",
|
|
"winbackOffers" : [
|
|
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"version" : {
|
|
"major" : 4,
|
|
"minor" : 0
|
|
}
|
|
}
|