Update StoreKit config reference and use IAPManager singleton
Re-add Configuration.storekit with updated project reference and use IAPManager.shared in FeelsApp to avoid creating a duplicate instance. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
177
Configuration.storekit
Normal file
177
Configuration.storekit
Normal file
@@ -0,0 +1,177 @@
|
||||
{
|
||||
"appPolicies" : {
|
||||
"eula" : "",
|
||||
"policies" : [
|
||||
{
|
||||
"locale" : "en_US",
|
||||
"policyText" : "",
|
||||
"policyURL" : ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"identifier" : "E4A24A40",
|
||||
"nonRenewingSubscriptions" : [
|
||||
|
||||
],
|
||||
"products" : [
|
||||
|
||||
],
|
||||
"settings" : {
|
||||
"_applicationInternalID" : "6758580945",
|
||||
"_askToBuyEnabled" : false,
|
||||
"_billingGracePeriodEnabled" : false,
|
||||
"_billingIssuesEnabled" : false,
|
||||
"_developerTeamID" : "QND55P4443",
|
||||
"_disableDialogs" : false,
|
||||
"_failTransactionsEnabled" : false,
|
||||
"_lastSynchronizedDate" : 792431418.15940905,
|
||||
"_locale" : "en_US",
|
||||
"_renewalBillingIssuesEnabled" : false,
|
||||
"_storefront" : "USA",
|
||||
"_storeKitErrors" : [
|
||||
|
||||
],
|
||||
"_timeRate" : 0
|
||||
},
|
||||
"subscriptionGroups" : [
|
||||
{
|
||||
"id" : "21914363",
|
||||
"localizations" : [
|
||||
|
||||
],
|
||||
"name" : "Feels Premium",
|
||||
"subscriptions" : [
|
||||
{
|
||||
"adHocOffers" : [
|
||||
|
||||
],
|
||||
"codeOffers" : [
|
||||
|
||||
],
|
||||
"displayPrice" : "0.99",
|
||||
"familyShareable" : true,
|
||||
"groupNumber" : 1,
|
||||
"internalID" : "6758582054",
|
||||
"introductoryOffer" : {
|
||||
"internalID" : "DDFEB050",
|
||||
"numberOfPeriods" : 1,
|
||||
"paymentMode" : "free",
|
||||
"subscriptionPeriod" : "P2W"
|
||||
},
|
||||
"localizations" : [
|
||||
{
|
||||
"description" : "Cobrança mensal",
|
||||
"displayName" : "Mensal",
|
||||
"locale" : "pt_BR"
|
||||
},
|
||||
{
|
||||
"description" : "毎月の請求",
|
||||
"displayName" : "月額",
|
||||
"locale" : "ja"
|
||||
},
|
||||
{
|
||||
"description" : "Facturation mensuelle",
|
||||
"displayName" : "Mensuel",
|
||||
"locale" : "fr"
|
||||
},
|
||||
{
|
||||
"description" : "Facturación mensual",
|
||||
"displayName" : "Mensual",
|
||||
"locale" : "es_ES"
|
||||
},
|
||||
{
|
||||
"description" : "Flexible month-to-month billing",
|
||||
"displayName" : "Monthly",
|
||||
"locale" : "en_US"
|
||||
},
|
||||
{
|
||||
"description" : "Monatliche Abrechnung",
|
||||
"displayName" : "Monatlich",
|
||||
"locale" : "de"
|
||||
},
|
||||
{
|
||||
"description" : "월간 결제",
|
||||
"displayName" : "월간",
|
||||
"locale" : "ko"
|
||||
}
|
||||
],
|
||||
"productID" : "com.88oakapps.feels.IAP.subscriptions.monthly",
|
||||
"recurringSubscriptionPeriod" : "P1M",
|
||||
"referenceName" : "Monthly",
|
||||
"subscriptionGroupID" : "21914363",
|
||||
"type" : "RecurringSubscription",
|
||||
"winbackOffers" : [
|
||||
|
||||
]
|
||||
},
|
||||
{
|
||||
"adHocOffers" : [
|
||||
|
||||
],
|
||||
"codeOffers" : [
|
||||
|
||||
],
|
||||
"displayPrice" : "9.99",
|
||||
"familyShareable" : true,
|
||||
"groupNumber" : 2,
|
||||
"internalID" : "6758581068",
|
||||
"introductoryOffer" : {
|
||||
"internalID" : "6E5324DA",
|
||||
"numberOfPeriods" : 1,
|
||||
"paymentMode" : "free",
|
||||
"subscriptionPeriod" : "P2W"
|
||||
},
|
||||
"localizations" : [
|
||||
{
|
||||
"description" : "Spare über 15%",
|
||||
"displayName" : "Jährlich",
|
||||
"locale" : "de"
|
||||
},
|
||||
{
|
||||
"description" : "Economize 15%",
|
||||
"displayName" : "Anual",
|
||||
"locale" : "pt_BR"
|
||||
},
|
||||
{
|
||||
"description" : "Best value — save over 15%",
|
||||
"displayName" : "Yearly",
|
||||
"locale" : "en_US"
|
||||
},
|
||||
{
|
||||
"description" : "15%以上お得",
|
||||
"displayName" : "年額",
|
||||
"locale" : "ja"
|
||||
},
|
||||
{
|
||||
"description" : "Mejor precio — ahorra 15%",
|
||||
"displayName" : "Anual",
|
||||
"locale" : "es_ES"
|
||||
},
|
||||
{
|
||||
"description" : "Économisez 15%",
|
||||
"displayName" : "Annuel",
|
||||
"locale" : "fr"
|
||||
},
|
||||
{
|
||||
"description" : "15% 이상 절약",
|
||||
"displayName" : "연간",
|
||||
"locale" : "ko"
|
||||
}
|
||||
],
|
||||
"productID" : "com.88oakapps.feels.IAP.subscriptions.yearly",
|
||||
"recurringSubscriptionPeriod" : "P1Y",
|
||||
"referenceName" : "Yearly",
|
||||
"subscriptionGroupID" : "21914363",
|
||||
"type" : "RecurringSubscription",
|
||||
"winbackOffers" : [
|
||||
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"version" : {
|
||||
"major" : 4,
|
||||
"minor" : 0
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,8 @@
|
||||
1CD90B56278C7E7A001C4FEA /* FeelsWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 1CD90B45278C7E7A001C4FEA /* FeelsWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
1CD90B6C278C7F78001C4FEA /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD90B6B278C7F78001C4FEA /* CloudKit.framework */; };
|
||||
1CD90B6E278C7F8B001C4FEA /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD90B6B278C7F78001C4FEA /* CloudKit.framework */; };
|
||||
1CDEFBBF2F3B8736006AE6A1 /* Configuration.storekit in Resources */ = {isa = PBXBuildFile; fileRef = 1CDEFBBE2F3B8736006AE6A1 /* Configuration.storekit */; };
|
||||
1CDEFBC02F3B8736006AE6A1 /* Configuration.storekit in Resources */ = {isa = PBXBuildFile; fileRef = 1CDEFBBE2F3B8736006AE6A1 /* Configuration.storekit */; };
|
||||
46F07FA9D330456697C9AC29 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD90B47278C7E7A001C4FEA /* WidgetKit.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
@@ -63,7 +65,6 @@
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1C0DAB50279DB0FB003B1F21 /* Feels/Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Feels/Localizable.xcstrings; sourceTree = "<group>"; };
|
||||
1CB4D09E28787B3C00902A56 /* Configuration.storekit */ = {isa = PBXFileReference; lastKnownFileType = text; path = Configuration.storekit; sourceTree = "<group>"; };
|
||||
1CB4D09F28787D8A00902A56 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.5.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||
1CD90AF5278C7DE0001C4FEA /* Feels.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Feels.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1CD90AFB278C7DE0001C4FEA /* Feels.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Feels.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@@ -83,6 +84,7 @@
|
||||
1CD90B6D278C7F89001C4FEA /* FeelsWidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = FeelsWidgetExtension.entitlements; sourceTree = "<group>"; };
|
||||
1CD90B6F278C8000001C4FEA /* FeelsWidgetExtensionDev.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = FeelsWidgetExtensionDev.entitlements; sourceTree = "<group>"; };
|
||||
1CD90B70278C8000001C4FEA /* Feels (iOS)Dev.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "Feels (iOS)Dev.entitlements"; sourceTree = "<group>"; };
|
||||
1CDEFBBE2F3B8736006AE6A1 /* Configuration.storekit */ = {isa = PBXFileReference; lastKnownFileType = text; path = Configuration.storekit; sourceTree = "<group>"; };
|
||||
1E594AEAB5F046E3B3ED7C47 /* Feels Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Feels Watch App.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B60015D02A064FF582E232FD /* Feels Watch App/Feels Watch AppDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Feels Watch App/Feels Watch AppDebug.entitlements"; sourceTree = "<group>"; };
|
||||
B8AB4CD73C2B4DC89C6FE84D /* Feels Watch App/Feels Watch App.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Feels Watch App/Feels Watch App.entitlements"; sourceTree = "<group>"; };
|
||||
@@ -198,8 +200,8 @@
|
||||
children = (
|
||||
B8AB4CD73C2B4DC89C6FE84D /* Feels Watch App/Feels Watch App.entitlements */,
|
||||
B60015D02A064FF582E232FD /* Feels Watch App/Feels Watch AppDebug.entitlements */,
|
||||
1CB4D09E28787B3C00902A56 /* Configuration.storekit */,
|
||||
1C0DAB50279DB0FB003B1F21 /* Feels/Localizable.xcstrings */,
|
||||
1CDEFBBE2F3B8736006AE6A1 /* Configuration.storekit */,
|
||||
1CD90B6A278C7F75001C4FEA /* Feels (iOS).entitlements */,
|
||||
1CD90B70278C8000001C4FEA /* Feels (iOS)Dev.entitlements */,
|
||||
1CD90B6D278C7F89001C4FEA /* FeelsWidgetExtension.entitlements */,
|
||||
@@ -468,6 +470,7 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1C0DAB51279DB0FB003B1F21 /* Feels/Localizable.xcstrings in Resources */,
|
||||
1CDEFBBF2F3B8736006AE6A1 /* Configuration.storekit in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -496,6 +499,7 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1CDEFBC02F3B8736006AE6A1 /* Configuration.storekit in Resources */,
|
||||
1C0DAB52279DB0FB003B1F22 /* Feels/Localizable.xcstrings in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
||||
@@ -16,7 +16,7 @@ struct FeelsApp: App {
|
||||
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
|
||||
|
||||
let dataController = DataController.shared
|
||||
@StateObject var iapManager = IAPManager()
|
||||
@StateObject var iapManager = IAPManager.shared
|
||||
@StateObject var authManager = BiometricAuthManager()
|
||||
@StateObject var healthKitManager = HealthKitManager.shared
|
||||
@AppStorage(UserDefaultsStore.Keys.firstLaunchDate.rawValue, store: GroupUserDefaults.groupDefaults) private var firstLaunchDate = Date()
|
||||
|
||||
Reference in New Issue
Block a user