- Add NotificationPreferencesScreen (Android) and NotificationPreferencesView (iOS) - Add NotificationPreferencesViewModel for shared business logic - Wire up notification preferences from ProfileScreen on both platforms - Add subscription verification on app launch for iOS (StoreKit) and Android (Google Play Billing) - Update SubscriptionApi to match Go backend endpoints (/subscription/purchase/) - Update StoreKit Configuration with correct product IDs and pricing ($2.99/month, $27.99/year) - Update Android placeholder prices to match App Store pricing - Fix NotificationPreference model to match Go backend schema 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
140 lines
3.4 KiB
Plaintext
140 lines
3.4 KiB
Plaintext
{
|
|
"identifier" : "C7E7B8F0",
|
|
"nonRenewingSubscriptions" : [
|
|
|
|
],
|
|
"products" : [
|
|
|
|
],
|
|
"settings" : {
|
|
"_applicationInternalID" : "6738709434",
|
|
"_developerTeamID" : "Y3D7Z5NY85",
|
|
"_failTransactionsEnabled" : false,
|
|
"_lastSynchronizedDate" : 753868871.33856297,
|
|
"_locale" : "en_US",
|
|
"_storefront" : "USA",
|
|
"_storeKitErrors" : [
|
|
{
|
|
"current" : null,
|
|
"enabled" : false,
|
|
"name" : "Load Products"
|
|
},
|
|
{
|
|
"current" : null,
|
|
"enabled" : false,
|
|
"name" : "Purchase"
|
|
},
|
|
{
|
|
"current" : null,
|
|
"enabled" : false,
|
|
"name" : "Verification"
|
|
},
|
|
{
|
|
"current" : null,
|
|
"enabled" : false,
|
|
"name" : "App Store Sync"
|
|
},
|
|
{
|
|
"current" : null,
|
|
"enabled" : false,
|
|
"name" : "Subscription Status"
|
|
},
|
|
{
|
|
"current" : null,
|
|
"enabled" : false,
|
|
"name" : "App Transaction"
|
|
},
|
|
{
|
|
"current" : null,
|
|
"enabled" : false,
|
|
"name" : "Manage Subscriptions Sheet"
|
|
},
|
|
{
|
|
"current" : null,
|
|
"enabled" : false,
|
|
"name" : "Refund Request Sheet"
|
|
},
|
|
{
|
|
"current" : null,
|
|
"enabled" : false,
|
|
"name" : "Offer Code Redeem Sheet"
|
|
}
|
|
]
|
|
},
|
|
"subscriptionGroups" : [
|
|
{
|
|
"id" : "21517970",
|
|
"localizations" : [
|
|
|
|
],
|
|
"name" : "MyCrib Pro",
|
|
"subscriptions" : [
|
|
{
|
|
"adHocOffers" : [
|
|
|
|
],
|
|
"codeOffers" : [
|
|
|
|
],
|
|
"displayPrice" : "2.99",
|
|
"familyShareable" : false,
|
|
"groupNumber" : 1,
|
|
"internalID" : "6738711291",
|
|
"introductoryOffer" : {
|
|
"internalID" : "6738711408",
|
|
"numberOfPeriods" : 1,
|
|
"paymentMode" : "free",
|
|
"subscriptionPeriod" : "P1W"
|
|
},
|
|
"localizations" : [
|
|
{
|
|
"description" : "Unlock unlimited properties, tasks, contractors, and documents",
|
|
"displayName" : "Casera Pro Monthly",
|
|
"locale" : "en_US"
|
|
}
|
|
],
|
|
"productID" : "com.example.casera.pro.monthly",
|
|
"recurringSubscriptionPeriod" : "P1M",
|
|
"referenceName" : "Casera Pro Monthly",
|
|
"subscriptionGroupID" : "21517970",
|
|
"type" : "RecurringSubscription"
|
|
},
|
|
{
|
|
"adHocOffers" : [
|
|
|
|
],
|
|
"codeOffers" : [
|
|
|
|
],
|
|
"displayPrice" : "27.99",
|
|
"familyShareable" : false,
|
|
"groupNumber" : 2,
|
|
"internalID" : "6738711458",
|
|
"introductoryOffer" : {
|
|
"internalID" : "6738711502",
|
|
"numberOfPeriods" : 1,
|
|
"paymentMode" : "free",
|
|
"subscriptionPeriod" : "P1M"
|
|
},
|
|
"localizations" : [
|
|
{
|
|
"description" : "Unlock unlimited properties, tasks, contractors, and documents - Save 22% with annual billing",
|
|
"displayName" : "Casera Pro Annual",
|
|
"locale" : "en_US"
|
|
}
|
|
],
|
|
"productID" : "com.example.casera.pro.annual",
|
|
"recurringSubscriptionPeriod" : "P1Y",
|
|
"referenceName" : "Casera Pro Annual",
|
|
"subscriptionGroupID" : "21517970",
|
|
"type" : "RecurringSubscription"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"version" : {
|
|
"major" : 4,
|
|
"minor" : 0
|
|
}
|
|
}
|