Compare commits

..

28 Commits

Author SHA1 Message Date
Arthur Ariel Sabintsev 6139af3394 Updated podspec 2024-05-04 20:22:58 -04:00
Steve Spigarelli b034739065 Add PrivacyInfo (#422)
Close #420 in favor of #422.
2024-05-04 20:21:14 -04:00
Arthur Ariel Sabintsev e410ed0cbc Update README.md 2023-12-29 20:22:58 -05:00
Arthur Sabintsev dfee0e0e29 Upped podspec 2023-05-17 14:38:53 -04:00
Arthur Sabintsev 6129b57d39 Upped version 2023-05-17 14:31:31 -04:00
blerdfoniqi 0ac904cd51 Adds support for iOS 13 (#411) 2023-05-17 14:20:23 -04:00
Arthur Sabintsev 9b675a8f92 Updated API manager comments and version in Siren 2022-09-20 22:40:00 -04:00
wwwbbat 399e1bfec2 Modify APIManager to make it possible to customize a bundleID. (#404) 2022-09-20 22:34:25 -04:00
Alex Burgel ec892ae746 Ignore skipped versions when using AlertType.force (#405)
fixes #402
2022-09-20 22:29:15 -04:00
Sandro 3bd7b595fb Fixed 'try' must precede 'await' (#400) 2022-06-25 21:35:36 -04:00
Arthur Sabintsev 3d8c83c720 Updated readme 2022-06-02 00:14:12 -04:00
Arthur Sabintsev 466e70236c Removed Gemfiles as cocoapods is now installed via homebrew 2022-06-02 00:13:42 -04:00
Arthur Sabintsev 0fba2a6954 Updated gems 2022-06-02 00:03:39 -04:00
Arthur Sabintsev 8afe1fe943 Updated podspec 2022-06-02 00:02:26 -04:00
Arthur Sabintsev fa7308fdd9 Fixed swiftlint issues 2022-06-02 00:01:53 -04:00
Arthur Sabintsev f7568b6c16 updated vars 2022-06-01 23:48:56 -04:00
Arthur Sabintsev 12d7ba2960 Fixed async compilation issue 2022-06-01 23:45:05 -04:00
Arthur Sabintsev 0325de208a Updated pods 2022-06-01 23:41:49 -04:00
Seokmin bb1fa6fa5c Update dialog can't appear bug (#397)
* Update dialog can't appear bug

Problem
1. Check update as .onForeground (Siren.shared.wail(performCheck: .onForeground))
2. If user swipe down the notification center screen to the bottom of screen (by swiping downward from the very top of the device's screen)
3. And back to app can't appear update dialog

Reason
If swipe down the notification center screen to the bottom of screen
iOS call observer like this
1. starting to swipe down : willResignActiveNotification
2. reached to bottom : didBecomeActiveNotification, willResignActiveNotification

* Update Siren.swift

* Null safety and don't hardcode

The delay time what to consider is it called by notification center screen to bottom become constant
And appDidBecomeActiveWorkItem is used null safety

Co-authored-by: seokmin <jsm@dio.co.kr>
2022-06-01 23:35:22 -04:00
Arthur Sabintsev e3bb33873d Updated podspec 2022-05-19 20:59:19 -04:00
Arthur Sabintsev 4eb08279ac Fixed croation localization. Fixed testing target 2022-05-19 20:55:28 -04:00
dependabot[bot] eb70823f96 Bump cocoapods-downloader from 1.4.0 to 1.6.3 (#392) 2022-04-12 12:35:18 -04:00
Arthur Sabintsev e92ab66220 Updated sample project to facebook 2022-03-23 20:41:28 -04:00
Arthur Sabintsev c265763d25 Updated Siren.podspec 2022-03-23 20:16:35 -04:00
Arthur Sabintsev 3f31c97fc9 Updated comments 2022-03-23 20:14:31 -04:00
Kien Nguyen 609f1653a4 Add lang parameter to APIManager (#391)
Co-authored-by: kientux <kiennt@sapo.vn>
2022-03-23 19:43:49 -04:00
Arthur Sabintsev 07babd6e36 Minor changes to APIManager 2021-09-17 01:00:05 -04:00
Arthur Ariel Sabintsev 8ed72c71c4 iOS 15 Support (#375)
* Updated to latest version of Swift compatible with iOS 15

* Updated docs

* Updated package manager meta files

* Update README.md

* Minor changes

* Minor changes with Xcode 13 RC

* Re ran pod install on sample proj

* Updated readme
2021-09-17 00:50:06 -04:00
30 changed files with 463 additions and 493 deletions
+2 -4
View File
@@ -2,14 +2,12 @@ reporter: "xcode"
included:
- ../Sources/
- Example/Tests/
disabled_rules:
- cyclomatic_complexity
- identifier_name
- file_length
- line_length
- nesting
- unused_optional_binding
# Specialized Rules
file_length:
- 500
+4 -4
View File
@@ -426,7 +426,7 @@
DEBUG_INFORMATION_FORMAT = dwarf;
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.sabintsev.SirenTests;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -446,7 +446,7 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.sabintsev.SirenTests;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -571,7 +571,7 @@
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 2.0.2;
PRODUCT_BUNDLE_IDENTIFIER = se.score.ios.Score;
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.Facebook;
PRODUCT_NAME = Example;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -589,7 +589,7 @@
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 2.0.2;
PRODUCT_BUNDLE_IDENTIFIER = se.score.ios.Score;
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.Facebook;
PRODUCT_NAME = Example;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 5.0;
@@ -21,4 +21,3 @@ class ViewController: UIViewController {
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
platform :ios, '11.0'
platform :ios, '15.0'
inhibit_all_warnings!
use_frameworks!
+4 -4
View File
@@ -1,5 +1,5 @@
PODS:
- Siren (5.8.0)
- Siren (6.0.2)
DEPENDENCIES:
- Siren (from `../`)
@@ -9,8 +9,8 @@ EXTERNAL SOURCES:
:path: "../"
SPEC CHECKSUMS:
Siren: 07f3b6f1bd7b729e3ef11c5a3b01e85cdfdb2b98
Siren: 1be92ef5775f9b61ebb294c79c59268ab0afcf5d
PODFILE CHECKSUM: d209d935a01eba61b70c991ab419cca0ce2264cc
PODFILE CHECKSUM: 5800641824958ea506d6ae52e89b594fe8270c18
COCOAPODS: 1.10.0
COCOAPODS: 1.11.2
+6 -6
View File
@@ -1,7 +1,7 @@
{
"name": "Siren",
"version": "5.8.0",
"swift_versions": "5.3",
"version": "6.0.2",
"swift_versions": "5.5",
"summary": "Notify users that a new version of your iOS app is available, and prompt them with the App Store link.",
"homepage": "https://github.com/ArtSabintsev/Siren",
"license": "MIT",
@@ -10,15 +10,15 @@
},
"description": "Notify your users when a new version of your iOS app is available, and prompt them with the App Store link.",
"platforms": {
"ios": "13.0",
"tvos": "13.0"
"ios": "15.0",
"tvos": "15.0"
},
"source": {
"git": "https://github.com/ArtSabintsev/Siren.git",
"tag": "5.8.0"
"tag": "6.0.2"
},
"source_files": "Sources/**/*.swift",
"resources": "Sources/Siren.bundle",
"requires_arc": true,
"swift_version": "5.3"
"swift_version": "5.5"
}
+4 -4
View File
@@ -1,5 +1,5 @@
PODS:
- Siren (5.8.0)
- Siren (6.0.2)
DEPENDENCIES:
- Siren (from `../`)
@@ -9,8 +9,8 @@ EXTERNAL SOURCES:
:path: "../"
SPEC CHECKSUMS:
Siren: 07f3b6f1bd7b729e3ef11c5a3b01e85cdfdb2b98
Siren: 1be92ef5775f9b61ebb294c79c59268ab0afcf5d
PODFILE CHECKSUM: d209d935a01eba61b70c991ab419cca0ce2264cc
PODFILE CHECKSUM: 5800641824958ea506d6ae52e89b594fe8270c18
COCOAPODS: 1.10.0
COCOAPODS: 1.11.2
+267 -267
View File
@@ -7,47 +7,47 @@
objects = {
/* Begin PBXBuildFile section */
255F9826BEE2CA08E780FB094019FCF2 /* Rules.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1EABF799D1E792CA3E9194926E78605 /* Rules.swift */; };
2CC2921D0E3870BE57F4109A8D86BD61 /* UserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8349F11EDA01F629C4C61E99CCFD91 /* UserDefaultsExtension.swift */; };
30218B5D1392B10B81E7C9225C0C3A10 /* UIAlertControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F20FBAD7ADBFD07AF8183236B4ECE297 /* UIAlertControllerExtension.swift */; };
33D2B21652E5047F25CC88541BB73287 /* Siren.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 3CDA2F82B5CE0BD747E1FE8BA63539AD /* Siren.bundle */; };
33EEF991372578F71A0748F7DC815A96 /* APIModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06B1A9453346F0CDCD7A4DC41A4F92C /* APIModel.swift */; };
360942D6F6A83DE3E96E2D1E8948DD70 /* BundleExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11BFB38B8D147BDF94B9415C0F2DE13A /* BundleExtension.swift */; };
3A94CA2FD252DBB2C65863CF66CA162B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
40748647E5874EBB742D9C6D182E2A7E /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62176AC744B2DC815BA7CD121F4EA473 /* Model.swift */; };
46E55BD8BE9014F08BC6B049E644D4EE /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9220E906478C87C685A81A5177136643 /* DateExtension.swift */; };
4D6494164F4FC03561EA7AF220E79FD8 /* Siren.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7B3EAF82CFAB96C6721BA02F97FC71B /* Siren.swift */; };
61BBF26A368B8D0881109F382AA70A14 /* Siren-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2506E5646D43BCE53FBEE1AB44BF4871 /* Siren-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
6B835D4F0FDE448FFB6FD0A713B7E8F0 /* Pods-Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 850060B744F1FDFB6ADCAFD76D4D34EB /* Pods-Example-dummy.m */; };
787A652B28363FC9790B4864A0677026 /* AppStoreCountry.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAD38316B970AACF9940545155FFAF8 /* AppStoreCountry.swift */; };
7C1F9C31AE733B820CC98A01B90F9C3F /* UpdateResults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 567D8AAC664C44A23EBB5EC6B0AA4049 /* UpdateResults.swift */; };
7FBFE1AD6A8D7834B8F6988859E90685 /* Pods-Example-Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AEAE97BBEB3D5E4F45CEC2708FAFB72C /* Pods-Example-Tests-dummy.m */; };
817E25F6FD856AF426E0A2C80C01AD75 /* SirenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786A05732FE78B252DC56C9F78F693C0 /* SirenViewController.swift */; };
82BE45C1C67460BE6F1AFCE7FB1D82F4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
8AEE68B102342034548561E57D64BF46 /* KnownError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4681015D4D44EB9A4302B2A179FD809F /* KnownError.swift */; };
8D712E9E166301253D36F3B436891265 /* Pods-Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 90BF25316BE6972758B31C52602CE12C /* Pods-Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
906632580B54E2820AF28D94BD85D08F /* AlertConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19D5FEFBCEC302A522182EEE37AD81B3 /* AlertConstants.swift */; };
9124B98E6C1B96C4BC730BD75CD61497 /* Siren-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 94DA749EC12B6582F7B5F8C0E50736F1 /* Siren-dummy.m */; };
959A4681EE593C30A2F533585B6E030A /* PerformCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7637C46E7C27C83B4C31CECE3D6064B4 /* PerformCheck.swift */; };
9C0DF21D23C0F35F0D4C0C46836C39FB /* AlertAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF347B3A55392D1407E1A4ABC8114173 /* AlertAction.swift */; };
9FFB71E12FDDACF5E5D163DEEC0AF5F4 /* APIManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08A780E0CDE0D69B789468679AB277EA /* APIManager.swift */; };
BA5BA7FEEFBD47DC4901032058FC53A4 /* Pods-Example-Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F92A716E93EDF48D0C9EF3C5062B558 /* Pods-Example-Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
BC8E7EF47CD022CEFFA4DA834AE6EE4B /* Localization.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB4D2B7323F8C610677B540FEEC7673C /* Localization.swift */; };
E5E25C3794C83C14F07855C3A5CF0269 /* DataParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97602092A124F5A205482E90225B67EA /* DataParser.swift */; };
F076BC17B39BDBD24EA3F76732C3A298 /* PresentationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B26CBDBDDF69163D512AED074B4549D /* PresentationManager.swift */; };
F3085480DABA04EDEB3A9C4EB9411203 /* RulesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E841994E6AE2DF727221123E0ED744A /* RulesManager.swift */; };
FB40700BA9DA8B47E38FDFFDA5C59465 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
151BA7773369BE5FC2A1A56A0ADB1E11 /* PerformCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7637C46E7C27C83B4C31CECE3D6064B4 /* PerformCheck.swift */; };
158B5EA21F24D8A42B2C0DA33D6911D2 /* UIAlertControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F20FBAD7ADBFD07AF8183236B4ECE297 /* UIAlertControllerExtension.swift */; };
18AAE788DE1B28510F53F35A0E68214F /* AppStoreCountry.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAD38316B970AACF9940545155FFAF8 /* AppStoreCountry.swift */; };
1D79DF28DA9C6AA8026CBFF47184B6AF /* AlertConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19D5FEFBCEC302A522182EEE37AD81B3 /* AlertConstants.swift */; };
268E0E6589DE799396C3FBF264AD3996 /* RulesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E841994E6AE2DF727221123E0ED744A /* RulesManager.swift */; };
300E952C78F6EA5BEBF5B5E31F3706E0 /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9220E906478C87C685A81A5177136643 /* DateExtension.swift */; };
32AEE3D9A55EC66EBCE39C3A38D01126 /* Pods-Example-Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F92A716E93EDF48D0C9EF3C5062B558 /* Pods-Example-Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
425B752B150AAEF5221916E9FC670153 /* KnownError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4681015D4D44EB9A4302B2A179FD809F /* KnownError.swift */; };
428DE866FE6650BC83086E281DAD66F2 /* BundleExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11BFB38B8D147BDF94B9415C0F2DE13A /* BundleExtension.swift */; };
45303C99CEDE9EBA4990949652F4B28D /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62176AC744B2DC815BA7CD121F4EA473 /* Model.swift */; };
487B8148F836C8A64C6ECBBE67126ECA /* Pods-Example-Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AEAE97BBEB3D5E4F45CEC2708FAFB72C /* Pods-Example-Tests-dummy.m */; };
4B4BB6D6D4B49D976A961CEBCA97BC05 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
4ECA4FF1C7B4AC6DF846045C5B720A0B /* AlertAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF347B3A55392D1407E1A4ABC8114173 /* AlertAction.swift */; };
56AC6974308EB4B394AAF9B703DC7A47 /* Localization.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB4D2B7323F8C610677B540FEEC7673C /* Localization.swift */; };
5B9E7420A0284E837C04012B528EAE4A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
6522773E85791CCB1A7256E5C3201E75 /* Pods-Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 850060B744F1FDFB6ADCAFD76D4D34EB /* Pods-Example-dummy.m */; };
66D1B530F0822D462D840C6E2428F9C0 /* Siren.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7B3EAF82CFAB96C6721BA02F97FC71B /* Siren.swift */; };
9952BF0ED5F6B7F18A07976BDD134D41 /* DataParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97602092A124F5A205482E90225B67EA /* DataParser.swift */; };
A1E89EF77BDD0C8D1EE8AAE743D82ED4 /* Siren-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 94DA749EC12B6582F7B5F8C0E50736F1 /* Siren-dummy.m */; };
A1EA2053268A5D5D9AC11C3D74D5BD4F /* Siren-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2506E5646D43BCE53FBEE1AB44BF4871 /* Siren-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
A73E39544FF12C5E5E54F07B0A2F7F78 /* PresentationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B26CBDBDDF69163D512AED074B4549D /* PresentationManager.swift */; };
AE1B34BAF1974C7DDAF628092F663F7A /* UpdateResults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 567D8AAC664C44A23EBB5EC6B0AA4049 /* UpdateResults.swift */; };
C21F6BE2015F6B8C8540667C5C4EDCF0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
C609EB036330DECF2976CE62912E9745 /* SirenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786A05732FE78B252DC56C9F78F693C0 /* SirenViewController.swift */; };
C988AA88E47FFA79D317BF4291B2A04D /* UserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8349F11EDA01F629C4C61E99CCFD91 /* UserDefaultsExtension.swift */; };
D95522B7A00F56B9510A8E58BB5AE8ED /* APIManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08A780E0CDE0D69B789468679AB277EA /* APIManager.swift */; };
E5F659EBC88C14C084176F93C9F0156D /* Rules.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1EABF799D1E792CA3E9194926E78605 /* Rules.swift */; };
F235A549B294F2E848529A1A93F852EB /* Pods-Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 90BF25316BE6972758B31C52602CE12C /* Pods-Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
FB731D70855188EDE196CEA745D6940A /* APIModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06B1A9453346F0CDCD7A4DC41A4F92C /* APIModel.swift */; };
FF40E81B2B174F3584493809B90C6668 /* Siren.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 3CDA2F82B5CE0BD747E1FE8BA63539AD /* Siren.bundle */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
7964007FBDB153903F18D8E65B82F621 /* PBXContainerItemProxy */ = {
B52DE15DFA6D788DDC41A589FA9AD9E8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
remoteGlobalIDString = A0E2640B83527AE54205D7FDE9C5D930;
remoteInfo = Siren;
};
EC3B08B61F53448D5D5455B0CAAC8393 /* PBXContainerItemProxy */ = {
BF9CC9039B7878DA61A42FFBD3A22E9F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
@@ -114,27 +114,27 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
010B7D400A547200BE95AE1460A8E530 /* Frameworks */ = {
19C68C00E0D92CD65F2917255ED5A50B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
3A94CA2FD252DBB2C65863CF66CA162B /* Foundation.framework in Frameworks */,
4B4BB6D6D4B49D976A961CEBCA97BC05 /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CFDA23B2E175B88DE0C414E06EC2B036 /* Frameworks */ = {
5E2E02FD05446E0D72F1A5C4F34A57DB /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
82BE45C1C67460BE6F1AFCE7FB1D82F4 /* Foundation.framework in Frameworks */,
C21F6BE2015F6B8C8540667C5C4EDCF0 /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
E47F17FF7EBD00DA1EAA1F1055D9AC61 /* Frameworks */ = {
D01825EFADF2015C2D6F895EE2B5C81A /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
FB40700BA9DA8B47E38FDFFDA5C59465 /* Foundation.framework in Frameworks */,
5B9E7420A0284E837C04012B528EAE4A /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -251,7 +251,7 @@
name = "Targets Support Files";
sourceTree = "<group>";
};
B9631C05C4FAF8E57F8107FB01FB8FE5 /* Products */ = {
B9E413F3FEAF521324127A009A6039BA /* Products */ = {
isa = PBXGroup;
children = (
1F667CC0E19EAF34E5A4119E2121F585 /* Pods_Example.framework */,
@@ -290,7 +290,7 @@
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
CA5CC6205CFA8B5868F65C2CE32900E5 /* Development Pods */,
D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
B9631C05C4FAF8E57F8107FB01FB8FE5 /* Products */,
B9E413F3FEAF521324127A009A6039BA /* Products */,
A8A8EA9BC9538376CEF195F2EAAC8200 /* Targets Support Files */,
);
sourceTree = "<group>";
@@ -333,27 +333,27 @@
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
154DEE44CDFD039FFB480ECAEA61456E /* Headers */ = {
57B0EAD2BF26101AE4951B7571E127AC /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
BA5BA7FEEFBD47DC4901032058FC53A4 /* Pods-Example-Tests-umbrella.h in Headers */,
F235A549B294F2E848529A1A93F852EB /* Pods-Example-umbrella.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
335B4F2AD40CDDD7A3D8D7639BC6219C /* Headers */ = {
810C4E5C60D9DE47607703BE3EF5C570 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
8D712E9E166301253D36F3B436891265 /* Pods-Example-umbrella.h in Headers */,
32AEE3D9A55EC66EBCE39C3A38D01126 /* Pods-Example-Tests-umbrella.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
80B35383D69788C72824D259A2972DF3 /* Headers */ = {
C1B2B775EC37DA6784A580EC336EB857 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
61BBF26A368B8D0881109F382AA70A14 /* Siren-umbrella.h in Headers */,
A1EA2053268A5D5D9AC11C3D74D5BD4F /* Siren-umbrella.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -362,50 +362,50 @@
/* Begin PBXNativeTarget section */
0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1352C8BEDCD49084C88FC3EE48F87A26 /* Build configuration list for PBXNativeTarget "Pods-Example" */;
buildConfigurationList = D3B82CA51562CEF224C9A4BB49C4984C /* Build configuration list for PBXNativeTarget "Pods-Example" */;
buildPhases = (
335B4F2AD40CDDD7A3D8D7639BC6219C /* Headers */,
5B46586A04E1D7BA66FD69919C0D646F /* Sources */,
010B7D400A547200BE95AE1460A8E530 /* Frameworks */,
E6B9365C57D3583FC07E52EF62F2520F /* Resources */,
57B0EAD2BF26101AE4951B7571E127AC /* Headers */,
4FFB70C136C9E782741B288D15B85315 /* Sources */,
5E2E02FD05446E0D72F1A5C4F34A57DB /* Frameworks */,
1D93CD182681FF85B9578413C8D20386 /* Resources */,
);
buildRules = (
);
dependencies = (
91B29DC0C8930792F0A40637CCD190A8 /* PBXTargetDependency */,
5325AFA39850B8A702C4FAF857E8B547 /* PBXTargetDependency */,
);
name = "Pods-Example";
productName = "Pods-Example";
productName = Pods_Example;
productReference = 1F667CC0E19EAF34E5A4119E2121F585 /* Pods_Example.framework */;
productType = "com.apple.product-type.framework";
};
258F10561A9DF823C49949D6176054DD /* Pods-Example-Tests */ = {
isa = PBXNativeTarget;
buildConfigurationList = CF7AE5732556FF6AD26DA01FC4D1C5EE /* Build configuration list for PBXNativeTarget "Pods-Example-Tests" */;
buildConfigurationList = FF4C27B32F8578162520923AA315DD80 /* Build configuration list for PBXNativeTarget "Pods-Example-Tests" */;
buildPhases = (
154DEE44CDFD039FFB480ECAEA61456E /* Headers */,
CB38EDC036D74D391DF083944AB166E7 /* Sources */,
E47F17FF7EBD00DA1EAA1F1055D9AC61 /* Frameworks */,
34A2399B1D234B908E6592005945CB5A /* Resources */,
810C4E5C60D9DE47607703BE3EF5C570 /* Headers */,
222B8840F0BDB57E0AAD162A4612C884 /* Sources */,
19C68C00E0D92CD65F2917255ED5A50B /* Frameworks */,
26CAC077D527B3E5B13B86D2CA4BFF44 /* Resources */,
);
buildRules = (
);
dependencies = (
4572EBA4AA0DDAFA71E63EECBFA7E542 /* PBXTargetDependency */,
8292FC67D3422DFD54E714A9A8FF469E /* PBXTargetDependency */,
);
name = "Pods-Example-Tests";
productName = "Pods-Example-Tests";
productName = Pods_Example_Tests;
productReference = A2D5633C9DFACF001D250AC90A2EAD23 /* Pods_Example_Tests.framework */;
productType = "com.apple.product-type.framework";
};
A0E2640B83527AE54205D7FDE9C5D930 /* Siren */ = {
isa = PBXNativeTarget;
buildConfigurationList = DD2E5683B197FF070FA930B69494A169 /* Build configuration list for PBXNativeTarget "Siren" */;
buildConfigurationList = D32ED6FCE8895E74A4FB89FACB79DC86 /* Build configuration list for PBXNativeTarget "Siren" */;
buildPhases = (
80B35383D69788C72824D259A2972DF3 /* Headers */,
60475E6413F3CE69055CB05DE0981B72 /* Sources */,
CFDA23B2E175B88DE0C414E06EC2B036 /* Frameworks */,
31274E1111A4B46EC8931C2521654E8B /* Resources */,
C1B2B775EC37DA6784A580EC336EB857 /* Headers */,
D808E7A6F5C7F3EB841EB711DC313822 /* Sources */,
D01825EFADF2015C2D6F895EE2B5C81A /* Frameworks */,
15A1BDD07A3C42FFD26CA6341DED32EC /* Resources */,
);
buildRules = (
);
@@ -422,19 +422,19 @@
BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 1100;
LastUpgradeCheck = 1230;
LastSwiftUpdateCheck = 1240;
LastUpgradeCheck = 1340;
};
buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
en,
);
mainGroup = CF1408CF629C7361332E53B88F7BD30C;
productRefGroup = B9631C05C4FAF8E57F8107FB01FB8FE5 /* Products */;
productRefGroup = B9E413F3FEAF521324127A009A6039BA /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
@@ -446,22 +446,22 @@
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
31274E1111A4B46EC8931C2521654E8B /* Resources */ = {
15A1BDD07A3C42FFD26CA6341DED32EC /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
33D2B21652E5047F25CC88541BB73287 /* Siren.bundle in Resources */,
FF40E81B2B174F3584493809B90C6668 /* Siren.bundle in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
34A2399B1D234B908E6592005945CB5A /* Resources */ = {
1D93CD182681FF85B9578413C8D20386 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
E6B9365C57D3583FC07E52EF62F2520F /* Resources */ = {
26CAC077D527B3E5B13B86D2CA4BFF44 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -471,137 +471,69 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
5B46586A04E1D7BA66FD69919C0D646F /* Sources */ = {
222B8840F0BDB57E0AAD162A4612C884 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6B835D4F0FDE448FFB6FD0A713B7E8F0 /* Pods-Example-dummy.m in Sources */,
487B8148F836C8A64C6ECBBE67126ECA /* Pods-Example-Tests-dummy.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
60475E6413F3CE69055CB05DE0981B72 /* Sources */ = {
4FFB70C136C9E782741B288D15B85315 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9C0DF21D23C0F35F0D4C0C46836C39FB /* AlertAction.swift in Sources */,
906632580B54E2820AF28D94BD85D08F /* AlertConstants.swift in Sources */,
9FFB71E12FDDACF5E5D163DEEC0AF5F4 /* APIManager.swift in Sources */,
33EEF991372578F71A0748F7DC815A96 /* APIModel.swift in Sources */,
787A652B28363FC9790B4864A0677026 /* AppStoreCountry.swift in Sources */,
360942D6F6A83DE3E96E2D1E8948DD70 /* BundleExtension.swift in Sources */,
E5E25C3794C83C14F07855C3A5CF0269 /* DataParser.swift in Sources */,
46E55BD8BE9014F08BC6B049E644D4EE /* DateExtension.swift in Sources */,
8AEE68B102342034548561E57D64BF46 /* KnownError.swift in Sources */,
BC8E7EF47CD022CEFFA4DA834AE6EE4B /* Localization.swift in Sources */,
40748647E5874EBB742D9C6D182E2A7E /* Model.swift in Sources */,
959A4681EE593C30A2F533585B6E030A /* PerformCheck.swift in Sources */,
F076BC17B39BDBD24EA3F76732C3A298 /* PresentationManager.swift in Sources */,
255F9826BEE2CA08E780FB094019FCF2 /* Rules.swift in Sources */,
F3085480DABA04EDEB3A9C4EB9411203 /* RulesManager.swift in Sources */,
9124B98E6C1B96C4BC730BD75CD61497 /* Siren-dummy.m in Sources */,
4D6494164F4FC03561EA7AF220E79FD8 /* Siren.swift in Sources */,
817E25F6FD856AF426E0A2C80C01AD75 /* SirenViewController.swift in Sources */,
30218B5D1392B10B81E7C9225C0C3A10 /* UIAlertControllerExtension.swift in Sources */,
7C1F9C31AE733B820CC98A01B90F9C3F /* UpdateResults.swift in Sources */,
2CC2921D0E3870BE57F4109A8D86BD61 /* UserDefaultsExtension.swift in Sources */,
6522773E85791CCB1A7256E5C3201E75 /* Pods-Example-dummy.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CB38EDC036D74D391DF083944AB166E7 /* Sources */ = {
D808E7A6F5C7F3EB841EB711DC313822 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
7FBFE1AD6A8D7834B8F6988859E90685 /* Pods-Example-Tests-dummy.m in Sources */,
4ECA4FF1C7B4AC6DF846045C5B720A0B /* AlertAction.swift in Sources */,
1D79DF28DA9C6AA8026CBFF47184B6AF /* AlertConstants.swift in Sources */,
D95522B7A00F56B9510A8E58BB5AE8ED /* APIManager.swift in Sources */,
FB731D70855188EDE196CEA745D6940A /* APIModel.swift in Sources */,
18AAE788DE1B28510F53F35A0E68214F /* AppStoreCountry.swift in Sources */,
428DE866FE6650BC83086E281DAD66F2 /* BundleExtension.swift in Sources */,
9952BF0ED5F6B7F18A07976BDD134D41 /* DataParser.swift in Sources */,
300E952C78F6EA5BEBF5B5E31F3706E0 /* DateExtension.swift in Sources */,
425B752B150AAEF5221916E9FC670153 /* KnownError.swift in Sources */,
56AC6974308EB4B394AAF9B703DC7A47 /* Localization.swift in Sources */,
45303C99CEDE9EBA4990949652F4B28D /* Model.swift in Sources */,
151BA7773369BE5FC2A1A56A0ADB1E11 /* PerformCheck.swift in Sources */,
A73E39544FF12C5E5E54F07B0A2F7F78 /* PresentationManager.swift in Sources */,
E5F659EBC88C14C084176F93C9F0156D /* Rules.swift in Sources */,
268E0E6589DE799396C3FBF264AD3996 /* RulesManager.swift in Sources */,
66D1B530F0822D462D840C6E2428F9C0 /* Siren.swift in Sources */,
A1E89EF77BDD0C8D1EE8AAE743D82ED4 /* Siren-dummy.m in Sources */,
C609EB036330DECF2976CE62912E9745 /* SirenViewController.swift in Sources */,
158B5EA21F24D8A42B2C0DA33D6911D2 /* UIAlertControllerExtension.swift in Sources */,
AE1B34BAF1974C7DDAF628092F663F7A /* UpdateResults.swift in Sources */,
C988AA88E47FFA79D317BF4291B2A04D /* UserDefaultsExtension.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
4572EBA4AA0DDAFA71E63EECBFA7E542 /* PBXTargetDependency */ = {
5325AFA39850B8A702C4FAF857E8B547 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = Siren;
target = A0E2640B83527AE54205D7FDE9C5D930 /* Siren */;
targetProxy = 7964007FBDB153903F18D8E65B82F621 /* PBXContainerItemProxy */;
targetProxy = B52DE15DFA6D788DDC41A589FA9AD9E8 /* PBXContainerItemProxy */;
};
91B29DC0C8930792F0A40637CCD190A8 /* PBXTargetDependency */ = {
8292FC67D3422DFD54E714A9A8FF469E /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = Siren;
target = A0E2640B83527AE54205D7FDE9C5D930 /* Siren */;
targetProxy = EC3B08B61F53448D5D5455B0CAAC8393 /* PBXContainerItemProxy */;
targetProxy = BF9CC9039B7878DA61A42FFBD3A22E9F /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
0CF02D7B960FA8A9FA84E730FAAC4513 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 2C0257A9A3D8C5B62771A4DDEB17A0ED /* Pods-Example.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
CLANG_ENABLE_OBJC_WEAK = NO;
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "Target Support Files/Pods-Example/Pods-Example-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MACH_O_TYPE = staticlib;
MODULEMAP_FILE = "Target Support Files/Pods-Example/Pods-Example.modulemap";
OTHER_LDFLAGS = "";
OTHER_LIBTOOLFLAGS = "";
PODS_ROOT = "$(SRCROOT)";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
1127FFB5876D9B32F25875F999EDBF28 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1BA24BC1E607E24F1C9AED046EE27110 /* Pods-Example-Tests.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
CLANG_ENABLE_OBJC_WEAK = NO;
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "Target Support Files/Pods-Example-Tests/Pods-Example-Tests-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MACH_O_TYPE = staticlib;
MODULEMAP_FILE = "Target Support Files/Pods-Example-Tests/Pods-Example-Tests.modulemap";
OTHER_LDFLAGS = "";
OTHER_LIBTOOLFLAGS = "";
PODS_ROOT = "$(SRCROOT)";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
1FC25447E07884A3F482787B30235E25 /* Release */ = {
33693A1CC9F4648B54726664AFDE566F /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F5743486693D7F303412A3018B0941CF /* Siren.release.xcconfig */;
buildSettings = {
@@ -625,7 +557,7 @@
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
SWIFT_VERSION = 5.3;
SWIFT_VERSION = 5.5;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
@@ -633,7 +565,38 @@
};
name = Release;
};
6B04BCCAB73E18648C78D4A2B6D60931 /* Debug */ = {
7AE7988F711FD5F0C3BBD5F5321193F9 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1C22073E7207FFF335D3A9EADE0DA51B /* Siren.debug.xcconfig */;
buildSettings = {
CLANG_ENABLE_OBJC_WEAK = NO;
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_PREFIX_HEADER = "Target Support Files/Siren/Siren-prefix.pch";
INFOPLIST_FILE = "Target Support Files/Siren/Siren-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MODULEMAP_FILE = "Target Support Files/Siren/Siren.modulemap";
PRODUCT_MODULE_NAME = Siren;
PRODUCT_NAME = Siren;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
SWIFT_VERSION = 5.5;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
893704CF3A7D64225E29C0FC0B12E037 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 27809964D647C11D4B07299C7B264724 /* Pods-Example-Tests.debug.xcconfig */;
buildSettings = {
@@ -649,7 +612,7 @@
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "Target Support Files/Pods-Example-Tests/Pods-Example-Tests-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MACH_O_TYPE = staticlib;
MODULEMAP_FILE = "Target Support Files/Pods-Example-Tests/Pods-Example-Tests.modulemap";
@@ -666,68 +629,7 @@
};
name = Debug;
};
903A0004D3E6651EFD5D2E16214D101B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"POD_CONFIGURATION_RELEASE=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
STRIP_INSTALLED_PRODUCT = NO;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 5.0;
SYMROOT = "${SRCROOT}/../build";
};
name = Release;
};
B4EFE046ACF8F37157F6E322C7FCFC28 /* Debug */ = {
90D4D09BCB6A4660E43ACBE9ECB6FE9A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
@@ -780,7 +682,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -793,7 +695,68 @@
};
name = Debug;
};
B9CB033D9F9CEAEEE7E283C9EB0B856E /* Debug */ = {
9553C89E183877A5CB2F3C6801BEC129 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"POD_CONFIGURATION_RELEASE=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
STRIP_INSTALLED_PRODUCT = NO;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 5.0;
SYMROOT = "${SRCROOT}/../build";
};
name = Release;
};
A3E9B9058E9A918CE0B415D30ED0A72D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 07692E025EFBB5F5C9DD63817289A7F2 /* Pods-Example.debug.xcconfig */;
buildSettings = {
@@ -809,7 +772,7 @@
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "Target Support Files/Pods-Example/Pods-Example-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MACH_O_TYPE = staticlib;
MODULEMAP_FILE = "Target Support Files/Pods-Example/Pods-Example.modulemap";
@@ -826,10 +789,11 @@
};
name = Debug;
};
D1461D7C45E6E825AF17FFB0C80C60F9 /* Debug */ = {
B0425CD0BFC3B46122E8E1CC4DB5B5B8 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1C22073E7207FFF335D3A9EADE0DA51B /* Siren.debug.xcconfig */;
baseConfigurationReference = 2C0257A9A3D8C5B62771A4DDEB17A0ED /* Pods-Example.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
CLANG_ENABLE_OBJC_WEAK = NO;
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
@@ -839,59 +803,95 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_PREFIX_HEADER = "Target Support Files/Siren/Siren-prefix.pch";
INFOPLIST_FILE = "Target Support Files/Siren/Siren-Info.plist";
INFOPLIST_FILE = "Target Support Files/Pods-Example/Pods-Example-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MODULEMAP_FILE = "Target Support Files/Siren/Siren.modulemap";
PRODUCT_MODULE_NAME = Siren;
PRODUCT_NAME = Siren;
MACH_O_TYPE = staticlib;
MODULEMAP_FILE = "Target Support Files/Pods-Example/Pods-Example.modulemap";
OTHER_LDFLAGS = "";
OTHER_LIBTOOLFLAGS = "";
PODS_ROOT = "$(SRCROOT)";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
SWIFT_VERSION = 5.3;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
name = Release;
};
B3B633944F03CF5ACE6C6619C915EC03 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1BA24BC1E607E24F1C9AED046EE27110 /* Pods-Example-Tests.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
CLANG_ENABLE_OBJC_WEAK = NO;
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "Target Support Files/Pods-Example-Tests/Pods-Example-Tests-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MACH_O_TYPE = staticlib;
MODULEMAP_FILE = "Target Support Files/Pods-Example-Tests/Pods-Example-Tests.modulemap";
OTHER_LDFLAGS = "";
OTHER_LIBTOOLFLAGS = "";
PODS_ROOT = "$(SRCROOT)";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1352C8BEDCD49084C88FC3EE48F87A26 /* Build configuration list for PBXNativeTarget "Pods-Example" */ = {
isa = XCConfigurationList;
buildConfigurations = (
B9CB033D9F9CEAEEE7E283C9EB0B856E /* Debug */,
0CF02D7B960FA8A9FA84E730FAAC4513 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
isa = XCConfigurationList;
buildConfigurations = (
B4EFE046ACF8F37157F6E322C7FCFC28 /* Debug */,
903A0004D3E6651EFD5D2E16214D101B /* Release */,
90D4D09BCB6A4660E43ACBE9ECB6FE9A /* Debug */,
9553C89E183877A5CB2F3C6801BEC129 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
CF7AE5732556FF6AD26DA01FC4D1C5EE /* Build configuration list for PBXNativeTarget "Pods-Example-Tests" */ = {
D32ED6FCE8895E74A4FB89FACB79DC86 /* Build configuration list for PBXNativeTarget "Siren" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6B04BCCAB73E18648C78D4A2B6D60931 /* Debug */,
1127FFB5876D9B32F25875F999EDBF28 /* Release */,
7AE7988F711FD5F0C3BBD5F5321193F9 /* Debug */,
33693A1CC9F4648B54726664AFDE566F /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
DD2E5683B197FF070FA930B69494A169 /* Build configuration list for PBXNativeTarget "Siren" */ = {
D3B82CA51562CEF224C9A4BB49C4984C /* Build configuration list for PBXNativeTarget "Pods-Example" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D1461D7C45E6E825AF17FFB0C80C60F9 /* Debug */,
1FC25447E07884A3F482787B30235E25 /* Release */,
A3E9B9058E9A918CE0B415D30ED0A72D /* Debug */,
B0425CD0BFC3B46122E8E1CC4DB5B5B8 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
FF4C27B32F8578162520923AA315DD80 /* Build configuration list for PBXNativeTarget "Pods-Example-Tests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
893704CF3A7D64225E29C0FC0B12E037 /* Debug */,
B3B633944F03CF5ACE6C6619C915EC03 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1230"
LastUpgradeVersion = "1340"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1230"
LastUpgradeVersion = "1340"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1230"
LastUpgradeVersion = "1340"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -113,6 +113,7 @@ install_dsym() {
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
else
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
mkdir -p "${DWARF_DSYM_FOLDER_PATH}"
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM"
fi
fi
@@ -3,7 +3,8 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Siren"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Siren/Siren.framework/Headers"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift "$(PLATFORM_DIR)/Developer/Library/Frameworks" '@executable_path/Frameworks' '@loader_path/Frameworks'
LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/Siren/Siren.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/Siren"
OTHER_LDFLAGS = $(inherited) -framework "Siren"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
@@ -3,7 +3,8 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Siren"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Siren/Siren.framework/Headers"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift "$(PLATFORM_DIR)/Developer/Library/Frameworks" '@executable_path/Frameworks' '@loader_path/Frameworks'
LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/Siren/Siren.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/Siren"
OTHER_LDFLAGS = $(inherited) -framework "Siren"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
@@ -113,6 +113,7 @@ install_dsym() {
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
else
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
mkdir -p "${DWARF_DSYM_FOLDER_PATH}"
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM"
fi
fi
@@ -3,7 +3,8 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Siren"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Siren/Siren.framework/Headers"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/Siren/Siren.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/Siren"
OTHER_LDFLAGS = $(inherited) -framework "Siren"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
@@ -3,7 +3,8 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Siren"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Siren/Siren.framework/Headers"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/Siren/Siren.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/Siren"
OTHER_LDFLAGS = $(inherited) -framework "Siren"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
+1 -1
View File
@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>5.8.0</string>
<string>6.0.2</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
@@ -1,6 +1,7 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Siren
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
@@ -1,6 +1,7 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Siren
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
+24 -26
View File
@@ -18,11 +18,9 @@ final class SirenTests: XCTestCase {
// MARK: - API
extension SirenTests {
func testAPIDefaultsToUnitedStatesAppStore() {
XCTAssertEqual(siren.apiManager.country, AppStoreCountry.unitedStates)
}
}
// MARK: - Updates
@@ -230,7 +228,7 @@ extension SirenTests {
let language: Localization.Language = .croatian
// Update Available
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Nova ažuriranje je stigla")
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Novo ažuriranje je dostupno")
// Next time
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Sljedeći put")
@@ -353,19 +351,19 @@ extension SirenTests {
// Update
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Update")
}
func testGreekLocalization() {
let language: Localization.Language = .greek
// Update Available
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Διαθέσιμη Ενημέρωση")
// Next time
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Άλλη φορά")
// Skip this version
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Αγνόησε αυτήν την έκδοση")
// Update
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Αναβάθμιση")
}
@@ -535,49 +533,49 @@ extension SirenTests {
// Update Available
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "بروزرسانی در دسترس")
// Next time
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "دفعه بعد")
// Skip this version
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "رد این نسخه")
// Update
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "بروزرسانی")
}
func testPersianAfghanistanLocalization() {
let language: Localization.Language = .persianAfghanistan
// Update Available
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "بروزرسانی در دسترس")
// Next time
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "دگر بار")
// Skip this version
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "رد این نسخه")
// Update
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "بروزرسانی")
}
func testPersianIranLocalization() {
let language: Localization.Language = .persianIran
// Update Available
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "بروزرسانی در دسترس")
// Next time
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "دفعه بعد")
// Skip this version
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "رد این نسخه")
// Update
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "بروزرسانی")
}
func testPolishLocalization() {
let language: Localization.Language = .polish
@@ -775,17 +773,17 @@ extension SirenTests {
// Update Available
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Доступне Оновлення")
// Next time
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Наступного разу")
// Skip this version
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Пропустити версію")
// Update
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Оновити")
}
func testUrduLocalization() {
let language: Localization.Language = .urdu
@@ -801,7 +799,7 @@ extension SirenTests {
// Update
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "اپڈیٹ کریں")
}
func testVietnameseLocalization() {
let language: Localization.Language = .vietnamese
@@ -817,5 +815,5 @@ extension SirenTests {
// Update
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Cập nhật")
}
}
-3
View File
@@ -1,3 +0,0 @@
source "https://rubygems.org"
gem "cocoapods"
-93
View File
@@ -1,93 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.3)
activesupport (5.2.4.4)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
atomos (0.1.3)
claide (1.0.3)
cocoapods (1.10.0)
addressable (~> 2.6)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.10.0)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.4.0, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.4.0, < 2.0)
cocoapods-try (>= 1.1.0, < 2.0)
colored2 (~> 3.1)
escape (~> 0.0.4)
fourflusher (>= 2.3.0, < 3.0)
gh_inspector (~> 1.0)
molinillo (~> 0.6.6)
nap (~> 1.0)
ruby-macho (~> 1.4)
xcodeproj (>= 1.19.0, < 2.0)
cocoapods-core (1.10.0)
activesupport (> 5.0, < 6)
addressable (~> 2.6)
algoliasearch (~> 1.0)
concurrent-ruby (~> 1.1)
fuzzy_match (~> 2.0.4)
nap (~> 1.0)
netrc (~> 0.11)
public_suffix
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.4)
cocoapods-downloader (1.4.0)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.0)
cocoapods-trunk (1.5.0)
nap (>= 0.8, < 2.0)
netrc (~> 0.11)
cocoapods-try (1.2.0)
colored2 (3.1.2)
concurrent-ruby (1.1.7)
escape (0.0.4)
ethon (0.12.0)
ffi (>= 1.3.0)
ffi (1.14.2)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
httpclient (2.8.3)
i18n (1.8.5)
concurrent-ruby (~> 1.0)
json (2.5.1)
minitest (5.14.2)
molinillo (0.6.6)
nanaimo (0.3.0)
nap (1.1.0)
netrc (0.11.0)
public_suffix (4.0.6)
ruby-macho (1.4.0)
thread_safe (0.3.6)
typhoeus (1.4.0)
ethon (>= 0.9.0)
tzinfo (1.2.9)
thread_safe (~> 0.1)
xcodeproj (1.19.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
PLATFORMS
ruby
DEPENDENCIES
cocoapods
BUNDLED WITH
2.1.4
+2 -2
View File
@@ -1,10 +1,10 @@
// swift-tools-version:5.3
// swift-tools-version:5.5
import PackageDescription
let package = Package(
name: "Siren",
platforms: [.iOS(.v13), .tvOS(.v13)],
products: [.library(name: "Siren", targets: ["Siren"])],
targets: [.target(name: "Siren", path: "Sources", resources: [.copy("Siren.bundle")])],
targets: [.target(name: "Siren", path: "Sources", resources: [.copy("Siren.bundle"), .copy("PrivacyInfo.xcprivacy")])],
swiftLanguageVersions: [.v5]
)
+12 -4
View File
@@ -2,7 +2,13 @@
### Notify users when a new version of your app is available and prompt them to upgrade.
[![Travis CI Status](https://travis-ci.org/ArtSabintsev/Siren.svg?branch=master)](https://travis-ci.org/ArtSabintsev/Siren) ![Swift Support](https://img.shields.io/badge/Swift-5.3-orange.svg) [![CocoaPods](https://img.shields.io/cocoapods/v/Siren.svg)](https://cocoapods.org/pods/Siren) [![SwiftPM Compatible](https://img.shields.io/badge/SwiftPM-compatible-brightgreen.svg)](https://swift.org/package-manager/) [![Accio supported](https://img.shields.io/badge/Accio-supported-0A7CF5.svg?style=flat)](https://github.com/JamitLabs/Accio)
![Swift Support](https://img.shields.io/badge/Swift-5.5-orange.svg) [![CocoaPods](https://img.shields.io/cocoapods/v/Siren.svg)](https://cocoapods.org/pods/Siren) [![SwiftPM Compatible](https://img.shields.io/badge/SwiftPM-compatible-brightgreen.svg)](https://swift.org/package-manager/) [![Accio supported](https://img.shields.io/badge/Accio-supported-0A7CF5.svg?style=flat)](https://github.com/JamitLabs/Accio)
---
# Important Information
I stopped being a proactive iOS engineer in 2021. For the time being, I will keep this library maintained for the community, but I will not be proactively adding features.
---
@@ -81,7 +87,8 @@ Siren is built to work with the [**Semantic Versioning**](https://semver.org/) s
| Swift Version | Branch Name | Will Continue to Receive Updates?
| ------------- | ------------- | -------------
| 5.1+ | master | **Yes**
| 5.5+ | master | **Yes**
| 5.1-5.4 | swift5.4 | No
| 5.0 | swift5.0 | No
| 4.2 | swift4.2 | No
| 4.1 | swift4.1 | No
@@ -91,7 +98,8 @@ Siren is built to work with the [**Semantic Versioning**](https://semver.org/) s
### CocoaPods
```ruby
pod 'Siren' # Swift 5.1+
pod 'Siren' # Swift 5.5+
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift5.4' # Swift 5.1-5.4
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift5.0' # Swift 5.0
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift4.2' # Swift 4.2
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift4.1' # Swift 4.1
@@ -102,7 +110,7 @@ pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'sw
### Swift Package Manager
```swift
.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 5)
.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 6)
```
## Implementation Examples
+2 -2
View File
@@ -1,7 +1,7 @@
Pod::Spec.new do |s|
# Version
s.version = "5.8.1"
s.swift_version = "5.3"
s.version = "6.1.3"
s.swift_version = "5.5"
# Meta
s.name = "Siren"
+41 -39
View File
@@ -16,6 +16,8 @@ public struct APIManager {
static let bundleID = "bundleId"
/// Constant for the `country` parameter in the iTunes Lookup API request.
static let country = "country"
/// Constant for the `lang` parameter in the iTunes Lookup API request.
static let language = "lang"
/// Constant for the `entity` parameter in the iTunes Lookup API reqeust.
static let entity = "entity"
/// Constant for the `entity` parameter value when performing a tvOS iTunes Lookup API reqeust.
@@ -25,14 +27,25 @@ public struct APIManager {
/// Return results or errors obtained from performing a version check with Siren.
typealias CompletionHandler = (Result<APIModel, KnownError>) -> Void
/// The Bundle ID for the your application. Defaults to "Bundle.main.bundleIdentifier".
let bundleID: String?
/// The region or country of an App Store in which the app is available.
let country: AppStoreCountry
/// The language for the localization of App Store responses.
let language: String?
/// Initializes `APIManager` to the region or country of an App Store in which the app is available.
/// By default, all version check requests are performed against the US App Store.
/// - Parameter country: The country for the App Store in which the app is available.
public init(country: AppStoreCountry = .unitedStates) {
/// By default, all version check requests are performed against the US App Store and the language of the copy/text is returned in English.
/// - Parameters:
/// - country: The country for the App Store in which the app is available.
/// - language: The locale to use for the App Store notes. The default result the API returns is equivalent to passing "en_us", so passing `nil` is equivalent to passing "en_us".
/// - bundleID: The bundleID for your app. Defaults to `Bundle.main.bundleIdentifier`. Passing `nil` will throw a `missingBundleID` error.
public init(country: AppStoreCountry = .unitedStates, language: String? = nil, bundleID: String? = Bundle.main.bundleIdentifier) {
self.country = country
self.language = language
self.bundleID = bundleID
}
/// The default `APIManager`.
@@ -52,22 +65,19 @@ extension APIManager {
/// Creates and performs a URLRequest against the iTunes Lookup API.
///
/// - Parameter handler: The completion handler for the iTunes Lookup API request.
func performVersionCheckRequest(completion handler: CompletionHandler?) {
guard Bundle.main.bundleIdentifier != nil else {
handler?(.failure(.missingBundleID))
return
/// - returns APIModel: The decoded JSON as an instance of APIModel.
func performVersionCheckRequest() async throws -> APIModel {
guard bundleID != nil else {
throw KnownError.missingBundleID
}
do {
let url = try makeITunesURL()
let request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 30)
URLSession.shared.dataTask(with: request) { (data, response, error) in
URLCache.shared.removeCachedResponse(for: request)
self.processVersionCheckResults(withData: data, response: response, error: error, completion: handler)
}.resume()
let (data, response) = try await URLSession.shared.data(for: request)
return try processVersionCheckResults(withData: data, response: response)
} catch {
handler?(.failure(.malformedURL))
throw error
}
}
@@ -76,33 +86,20 @@ extension APIManager {
/// - Parameters:
/// - data: The JSON data returned from the request.
/// - response: The response metadata returned from the request.
/// - error: The error returned from the request.
/// - handler: The completion handler to call once the results of the request has been processed.
private func processVersionCheckResults(withData data: Data?,
response: URLResponse?,
error: Error?,
completion handler: CompletionHandler?) {
if let error = error {
handler?(.failure(.appStoreDataRetrievalFailure(underlyingError: error)))
} else {
guard let data = data else {
handler?(.failure(.appStoreDataRetrievalFailure(underlyingError: nil)))
return
}
do {
let apiModel = try JSONDecoder().decode(APIModel.self, from: data)
private func processVersionCheckResults(withData data: Data?, response: URLResponse?) throws -> APIModel {
guard let data = data else {
throw KnownError.appStoreDataRetrievalFailure(underlyingError: nil)
}
do {
let apiModel = try JSONDecoder().decode(APIModel.self, from: data)
guard !apiModel.results.isEmpty else {
handler?(.failure(.appStoreDataRetrievalEmptyResults))
return
}
DispatchQueue.main.async {
handler?(.success(apiModel))
}
} catch {
handler?(.failure(.appStoreJSONParsingFailure(underlyingError: error)))
guard !apiModel.results.isEmpty else {
throw KnownError.appStoreDataRetrievalEmptyResults
}
return apiModel
} catch {
throw KnownError.appStoreJSONParsingFailure(underlyingError: error)
}
}
@@ -116,7 +113,7 @@ extension APIManager {
components.host = "itunes.apple.com"
components.path = "/lookup"
var items: [URLQueryItem] = [URLQueryItem(name: Constants.bundleID, value: Bundle.main.bundleIdentifier)]
var items: [URLQueryItem] = [URLQueryItem(name: Constants.bundleID, value: bundleID)]
#if os(tvOS)
let tvOSQueryItem = URLQueryItem(name: Constants.entity, value: Constants.tvSoftware)
@@ -127,6 +124,11 @@ extension APIManager {
let item = URLQueryItem(name: Constants.country, value: countryCode)
items.append(item)
}
if let language = language {
let item = URLQueryItem(name: Constants.language, value: language)
items.append(item)
}
components.queryItems = items
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
</array>
<key>NSPrivacyCollectedDataTypes</key>
<array/>
</dict>
</plist>
@@ -1,8 +1,8 @@
/* Update alert message: A new version of {APP NAME} is available. Please update to version {NEW VERSION} now.*/
"A new version of %@ is available. Please update to version %@ now." = "Nova verzia %@ je stigla. Ažuriraj na verziju %@ sada.";
"A new version of %@ is available. Please update to version %@ now." = "Nova verzija %@ je dostupna. Ažuriraj na verziju %@ sada.";
/* Update alert title */
"Update Available" = "Nova ažuriranje je stigla";
"Update Available" = "Novo ažuriranje je dostupno";
/* Update alert dismiss button title */
"Next time" = "Sljedeći put";
+53 -23
View File
@@ -52,12 +52,22 @@ public final class Siren: NSObject {
/// The last date that an alert was presented to the user.
private var alertPresentationDate: Date? = UserDefaults.alertPresentationDate
/// Prevents the update dialog from not displaying when the user swipes down
/// on a notification center notification to the bottom of screen when calling
/// the Siren.shared.wail notificaiton using the `.onForeground` performCheck option.
private var appDidBecomeActiveWorkItem: DispatchWorkItem?
/// The minimal amount of time needed before calling the update notification
/// after entering the app from a notificaiton.
/// Refer to comment in `appDidBecomeActiveWorkItem` for more information.
private let appDidBecomeActiveWorkItemTimeDelay = 0.02
/// The App Store's unique identifier for an app.
private var appID: Int?
/// The completion handler used to return the results or errors returned by Siren.
private var resultsHandler: ResultsHandler?
/// The deinitialization method that clears out all observers,
deinit {
presentationManager.cleanUp()
@@ -81,7 +91,7 @@ public extension Siren {
switch performCheck {
case .onDemand:
removeForegroundObservers()
performVersionCheck()
startVersionCheckFlow()
case .onForeground:
addForegroundObservers()
}
@@ -110,16 +120,25 @@ public extension Siren {
// MARK: - Version Check and Alert Presentation Flow
private extension Siren {
/// Initiates the unidirectional version checking flow.
func performVersionCheck() {
/// Initiates the version checking flow.
func startVersionCheckFlow() {
alertPresentationDate = UserDefaults.alertPresentationDate
apiManager.performVersionCheckRequest { result in
switch result {
case .success(let apiModel):
Task {
await performVersionCheck()
}
}
/// Initiatives the version check request.
func performVersionCheck() async {
do {
let apiModel = try await apiManager.performVersionCheckRequest()
DispatchQueue.main.async {
self.validate(apiModel: apiModel)
case .failure(let error):
self.resultsHandler?(.failure(error))
}
} catch (let error as KnownError) {
self.resultsHandler?(.failure(error))
} catch {
// Do nothing. Silences exhaustive error.
}
}
@@ -186,23 +205,25 @@ private extension Siren {
/// - currentAppStoreVersion: The curren version of the app in the App Store.
/// - model: The iTunes Lookup Model.
func determineIfAlertPresentationRulesAreSatisfied(forCurrentAppStoreVersion currentAppStoreVersion: String, andModel model: Model) {
// Did the user:
// - request to skip being prompted with version update alerts for a specific version
// - and is the latest App Store update the same version that was requested?
if let previouslySkippedVersion = UserDefaults.storedSkippedVersion,
let currentInstalledVersion = currentInstalledVersion,
!currentAppStoreVersion.isEmpty,
currentAppStoreVersion == previouslySkippedVersion {
resultsHandler?(.failure(.skipVersionUpdate(installedVersion: currentInstalledVersion,
appStoreVersion: currentAppStoreVersion)))
return
}
let updateType = DataParser.parseForUpdate(forInstalledVersion: currentInstalledVersion,
andAppStoreVersion: currentAppStoreVersion)
do {
let rules = try rulesManager.loadRulesForUpdateType(updateType)
// Did the user:
// - request to skip being prompted with version update alerts for a specific version
// - and is the latest App Store update the same version that was requested
// - and app is not forcing updates?
if let previouslySkippedVersion = UserDefaults.storedSkippedVersion,
let currentInstalledVersion = currentInstalledVersion,
!currentAppStoreVersion.isEmpty,
currentAppStoreVersion == previouslySkippedVersion,
rules.alertType != .force {
resultsHandler?(.failure(.skipVersionUpdate(installedVersion: currentInstalledVersion,
appStoreVersion: currentAppStoreVersion)))
return
}
if rules.frequency == .immediately {
presentAlert(withRules: rules, forCurrentAppStoreVersion: currentAppStoreVersion, model: model, andUpdateType: updateType)
} else {
@@ -273,7 +294,14 @@ private extension Siren {
object: nil,
queue: nil) { [weak self] _ in
guard let self = self else { return }
self.performVersionCheck()
self.appDidBecomeActiveWorkItem = DispatchWorkItem {
Task {
await self.performVersionCheck()
}
}
if let appDidBecomeActiveWorkItem = self.appDidBecomeActiveWorkItem {
DispatchQueue.main.asyncAfter(deadline: .now() + self.appDidBecomeActiveWorkItemTimeDelay, execute: appDidBecomeActiveWorkItem)
}
}
}
@@ -287,6 +315,8 @@ private extension Siren {
object: nil,
queue: nil) { [weak self] _ in
guard let self = self else { return }
self.appDidBecomeActiveWorkItem?.cancel()
self.appDidBecomeActiveWorkItem = nil
self.presentationManager.cleanUp()
}
}