Files
Reflect/Configuration.storekit
Trey t f2c510de50 Refactor StoreKit 2 subscription system and add interactive vote widget
## 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>
2025-12-09 23:07:16 -06:00

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
}
}