Compare commits
205 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6139af3394 | |||
| b034739065 | |||
| e410ed0cbc | |||
| dfee0e0e29 | |||
| 6129b57d39 | |||
| 0ac904cd51 | |||
| 9b675a8f92 | |||
| 399e1bfec2 | |||
| ec892ae746 | |||
| 3bd7b595fb | |||
| 3d8c83c720 | |||
| 466e70236c | |||
| 0fba2a6954 | |||
| 8afe1fe943 | |||
| fa7308fdd9 | |||
| f7568b6c16 | |||
| 12d7ba2960 | |||
| 0325de208a | |||
| bb1fa6fa5c | |||
| e3bb33873d | |||
| 4eb08279ac | |||
| eb70823f96 | |||
| e92ab66220 | |||
| c265763d25 | |||
| 3f31c97fc9 | |||
| 609f1653a4 | |||
| 07babd6e36 | |||
| 8ed72c71c4 | |||
| 05cd85c479 | |||
| d8009d69dd | |||
| 9173fc5297 | |||
| bc4d6aa47a | |||
| 64e0b73c3a | |||
| a35be9ee2d | |||
| f10f6928a3 | |||
| 380f79053e | |||
| 3197a6dc30 | |||
| a5f51af7eb | |||
| 3a5a357834 | |||
| 2f80f8dce2 | |||
| 2fa31da639 | |||
| d137dabe69 | |||
| c563cf5a61 | |||
| 308e1061c8 | |||
| 2cffe34e2c | |||
| 60968544ab | |||
| 51b08a20c3 | |||
| 6eb57bcdee | |||
| 6d40521756 | |||
| 20a4a58b37 | |||
| 2490dc04db | |||
| 9275cc2794 | |||
| 336413447b | |||
| d8d4bd8f1c | |||
| b5cc26d007 | |||
| 5816cf245a | |||
| d546163f54 | |||
| a165a13abd | |||
| bf49eeb464 | |||
| 42ab71be3c | |||
| dc1bb6b058 | |||
| 9bb7a43b72 | |||
| ef8272aa0e | |||
| d8b9283143 | |||
| a8ffb6b410 | |||
| 4dc392f964 | |||
| 36fb52a574 | |||
| 994e44b4fd | |||
| 3340418fba | |||
| d655412b7c | |||
| 90a052c920 | |||
| 723f73f371 | |||
| 784ef62967 | |||
| 5680814481 | |||
| 4b96af4cfc | |||
| 48cc0e53d8 | |||
| 1f6ae4635d | |||
| eeb186481e | |||
| aade02d4f6 | |||
| 8a0dd7378a | |||
| 94d8ffb70f | |||
| a24b0ba657 | |||
| 9ec4235c67 | |||
| 918dac71d3 | |||
| e99df968fb | |||
| ce5312f8c8 | |||
| 4430cdd272 | |||
| b96dfe3790 | |||
| 1a37f10ef2 | |||
| c0f7d2375c | |||
| bb8a8c91cf | |||
| 323887c21b | |||
| d828943e4d | |||
| c3eb837d8f | |||
| 4198ad9e89 | |||
| 69092ff70c | |||
| df8f8338b3 | |||
| f44a06cd32 | |||
| 68e60f490b | |||
| 84ece2335f | |||
| c607fa72f3 | |||
| 2f3ed12e00 | |||
| dc9b8bbba4 | |||
| 1b95580ad8 | |||
| d9322bdb4f | |||
| 434e0cd2a0 | |||
| 2140c28398 | |||
| b901930ce5 | |||
| 90fcde1221 | |||
| 357afb22ab | |||
| 93e0f66020 | |||
| 7c952267e8 | |||
| 7fc6777d3d | |||
| ca3559cd93 | |||
| 3c7d06eac0 | |||
| c62c16f1b9 | |||
| 32de6efe8b | |||
| acfbf2a2d5 | |||
| ad967116cb | |||
| c114526eb8 | |||
| 70ad233b78 | |||
| 2b3c9c067d | |||
| 6bd43afc0c | |||
| be49cd82ff | |||
| 06994a9408 | |||
| dc787a23d7 | |||
| a1d30353df | |||
| b19712d8da | |||
| 245fec5abc | |||
| 34683f71fb | |||
| 251c186ff3 | |||
| 5b18c1606c | |||
| e1257d9eb6 | |||
| 516e368e82 | |||
| de01c00d2e | |||
| eb278bc030 | |||
| 367092af09 | |||
| ef6d9ffa42 | |||
| 3375ae2552 | |||
| 234d558b31 | |||
| 3ff9fff4c4 | |||
| 7b2f451643 | |||
| eee3edc923 | |||
| d59fbf6e5f | |||
| f042d70762 | |||
| a034d842de | |||
| 7470bcd720 | |||
| 47b0b5381e | |||
| 5ef05950ed | |||
| 84e728d65c | |||
| dcfe7df5ea | |||
| a759b4b947 | |||
| 5f70d96b2c | |||
| f9bc4dfb4f | |||
| 6947b485a5 | |||
| cb1febdaf3 | |||
| 2284e63c36 | |||
| af16cbbe20 | |||
| 38f6d9d1b5 | |||
| f9abb391d0 | |||
| a22230707a | |||
| fc155c83d5 | |||
| 298155897f | |||
| c9fb91a3ed | |||
| 07aa46fd1d | |||
| 448657eefe | |||
| 195de7391e | |||
| 4b88e28a99 | |||
| a420119765 | |||
| 1e759f197b | |||
| 93113a4f2e | |||
| c7df74e190 | |||
| 2591c0b3d4 | |||
| e669f8f5c0 | |||
| 77caddd434 | |||
| 8a0c03627c | |||
| c8519ea5be | |||
| 5d8f4800e1 | |||
| 2a4e5ceda3 | |||
| a3c7cfa26d | |||
| 8477f5fbe6 | |||
| 3c036ce559 | |||
| 212e68969a | |||
| 56a834ee41 | |||
| df6174ba06 | |||
| a11b7f0600 | |||
| de971bf52f | |||
| 5f00463928 | |||
| cf4274fb16 | |||
| a2cd55d83b | |||
| 3c064ffa4e | |||
| 84301d4ba2 | |||
| e226f934c0 | |||
| 33b6e60862 | |||
| fc64e7aca7 | |||
| f976791460 | |||
| 2a948f0133 | |||
| 2253c339ff | |||
| 85a8a4141d | |||
| fc8d7d80d0 | |||
| 7167868002 | |||
| ced4415181 | |||
| d28f69d7bc | |||
| 790d771a2a | |||
| eed4b9ac41 |
+1
-1
@@ -1 +1 @@
|
||||
docs/* linguist-vendored
|
||||
Docs/* linguist-vendored
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# If you're experiencing a problem integrating Siren into your app, please provide the following information when posting a new issue:
|
||||
## If you're experiencing a problem integrating Siren into your app, please provide the following information when posting a new issue:
|
||||
|
||||
- **Are you using the [latest version](https://github.com/ArtSabintsev/Siren/releases) of Siren?**:
|
||||
- **What is your app's Bundle ID?**:
|
||||
@@ -8,19 +8,19 @@
|
||||
|
||||
---
|
||||
|
||||
# Before posting an issue, please make sure your issue has not already been resolved or answered elsewhere.
|
||||
## Before posting an issue, please make sure your issue has not already been resolved or answered elsewhere.
|
||||
|
||||
## Common Issue #1:
|
||||
### Common Issue #1:
|
||||
>"Error retrieving iOS version number as there was no data returned."
|
||||
|
||||
Check if your app is available in the US App Store, otherwise add the corresponding country code when setting up Siren.
|
||||
|
||||
## Common Issue #2:
|
||||
### Common Issue #2:
|
||||
> "Support for macOS App Store."
|
||||
|
||||
Siren does not and will not support the macOS App Store.
|
||||
|
||||
## Common Issue #3:
|
||||
### Common Issue #3:
|
||||
> "Support for prompting TestFlight users to update to the newest beta build."
|
||||
|
||||
Siren does not support this functionality. There is no publicly accessible TestFlight API akin to that of the public App Store API that Siren can utilize to provide this functionality.
|
||||
|
||||
+52
-5
@@ -1,6 +1,12 @@
|
||||
# Xcode
|
||||
#
|
||||
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
|
||||
|
||||
## Build generated
|
||||
build/
|
||||
DerivedData/
|
||||
|
||||
## Various settings
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
@@ -9,11 +15,52 @@ build/
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
*.xccheckout
|
||||
xcuserdata/
|
||||
|
||||
## Other
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.xcuserstate
|
||||
.DS_Store
|
||||
|
||||
## Obj-C/Swift specific
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.dSYM.zip
|
||||
*.dSYM
|
||||
|
||||
## Playgrounds
|
||||
timeline.xctimeline
|
||||
playground.xcworkspace
|
||||
|
||||
# Swift Package Manager
|
||||
#
|
||||
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
|
||||
# Packages/
|
||||
.build/
|
||||
|
||||
# CocoaPods
|
||||
#
|
||||
# We recommend against adding the Pods directory to your .gitignore. However
|
||||
# you should judge for yourself, the pros and cons are mentioned at:
|
||||
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
||||
#
|
||||
# Pods/
|
||||
|
||||
# Carthage
|
||||
#
|
||||
# Add this line if you want to avoid checking in source code from Carthage dependencies.
|
||||
# Carthage/Checkouts
|
||||
|
||||
Carthage/Build
|
||||
|
||||
# fastlane
|
||||
#
|
||||
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
|
||||
# screenshots whenever they are needed.
|
||||
# For more information about the recommended setup visit:
|
||||
# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md
|
||||
|
||||
fastlane/report.xml
|
||||
fastlane/Preview.html
|
||||
fastlane/screenshots
|
||||
fastlane/test_output
|
||||
|
||||
+3
-5
@@ -2,14 +2,12 @@ reporter: "xcode"
|
||||
|
||||
included:
|
||||
- ../Sources/
|
||||
- Example/Tests/
|
||||
|
||||
disabled_rules:
|
||||
- cyclomatic_complexity
|
||||
- identifier_name
|
||||
- file_length
|
||||
- line_length
|
||||
- nesting
|
||||
- unused_optional_binding
|
||||
- variable_name
|
||||
|
||||
# Specialized Rules
|
||||
file_length:
|
||||
- 500
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
+10
-9
@@ -1,15 +1,16 @@
|
||||
language: objective-c
|
||||
osx_image: xcode10
|
||||
|
||||
language: swift
|
||||
osx_image: xcode11
|
||||
notifications:
|
||||
email: false
|
||||
|
||||
before_install:
|
||||
- brew update
|
||||
- gem install bundler
|
||||
- bundle
|
||||
- cd Example/
|
||||
- pod install
|
||||
env:
|
||||
- LC_CTYPE=en_US.UTF-8 LANG=en_US.UTF-8
|
||||
before_install:
|
||||
- rvm install ruby-2.4.1
|
||||
- gem install cocoapods
|
||||
- gem install xcpretty -N
|
||||
- brew update
|
||||
script:
|
||||
- set -o pipefail
|
||||
- xcodebuild -project Example/Example.xcodeproj -scheme Example -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO | xcpretty -c
|
||||
- xcodebuild -workspace Example.xcworkspace -scheme Example -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO
|
||||
|
||||
Executable → Regular
+151
-280
@@ -7,33 +7,14 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
4D729C4421A20EDC002F73AB /* Siren.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 55EC365E1E6BB99B00726F13 /* Siren.bundle */; };
|
||||
4D729C4621A213B4002F73AB /* Rules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D729C4521A213B4002F73AB /* Rules.swift */; };
|
||||
55EC364B1E6BB98A00726F13 /* Siren.h in Headers */ = {isa = PBXBuildFile; fileRef = 55EC36491E6BB98A00726F13 /* Siren.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
55EC36601E6BB99B00726F13 /* Siren.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 55EC365E1E6BB99B00726F13 /* Siren.bundle */; };
|
||||
55EC36611E6BB99B00726F13 /* Siren.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55EC365F1E6BB99B00726F13 /* Siren.swift */; };
|
||||
8E01817921B379AF006DED05 /* Results.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E01817821B379AF006DED05 /* Results.swift */; };
|
||||
8E01817E21B379DD006DED05 /* PresentationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E01817B21B379DD006DED05 /* PresentationManager.swift */; };
|
||||
8E01818021B379DD006DED05 /* RulesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E01817D21B379DD006DED05 /* RulesManager.swift */; };
|
||||
8E01818221B37B43006DED05 /* AlertAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E01818121B37B43006DED05 /* AlertAction.swift */; };
|
||||
5913ECF89C0DE3BEB22031BE /* Pods_Example_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3207656F9030B2912198AF2E /* Pods_Example_Tests.framework */; };
|
||||
8E1635A91E6A0B9C0060CE27 /* SirenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EE6C74C1E6A0AE100DBE454 /* SirenTests.swift */; };
|
||||
8E171DDE215B26B4006FBBCC /* BundleExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DD1215B26B4006FBBCC /* BundleExtension.swift */; };
|
||||
8E171DDF215B26B4006FBBCC /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DD2215B26B4006FBBCC /* DateExtension.swift */; };
|
||||
8E171DE2215B26B4006FBBCC /* LookupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DD7215B26B4006FBBCC /* LookupModel.swift */; };
|
||||
8E171DE3215B26B4006FBBCC /* UIAlertControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DD8215B26B4006FBBCC /* UIAlertControllerExtension.swift */; };
|
||||
8E171DE4215B26B4006FBBCC /* SirenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DDA215B26B4006FBBCC /* SirenViewController.swift */; };
|
||||
8E171DE6215B2701006FBBCC /* Localization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DE5215B2701006FBBCC /* Localization.swift */; };
|
||||
8E171DEE215B2D09006FBBCC /* UserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DED215B2D09006FBBCC /* UserDefaultsExtension.swift */; };
|
||||
8E5061EB21C9CDF000A28DE0 /* AlertConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E5061EA21C9CDF000A28DE0 /* AlertConstants.swift */; };
|
||||
8E641D2520C8B44B00908555 /* Siren.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55EC36471E6BB98A00726F13 /* Siren.framework */; };
|
||||
8EACA9711F380294003134CA /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8EACA9671F37F2D3003134CA /* LaunchScreen.xib */; };
|
||||
8EACA9721F380294003134CA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8EACA9691F37F2D3003134CA /* Main.storyboard */; };
|
||||
8EACA9731F380294003134CA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8EACA96B1F37F2D3003134CA /* Images.xcassets */; };
|
||||
8EACA9741F38029B003134CA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EACA9661F37F2D3003134CA /* AppDelegate.swift */; };
|
||||
8EACA9751F38029B003134CA /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EACA96D1F37F2D3003134CA /* ViewController.swift */; };
|
||||
8EE1FAF321B4DC0F009112A8 /* KnownError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EE1FAF221B4DC0F009112A8 /* KnownError.swift */; };
|
||||
8EE1FAF521B4E6B8009112A8 /* APIManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EE1FAF421B4E6B8009112A8 /* APIManager.swift */; };
|
||||
8EEF4AB121AA6DDF00C83AAA /* DataParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EEF4AB021AA6DDF00C83AAA /* DataParser.swift */; };
|
||||
E7269D91A22F64E1A0C661C5 /* Pods_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37940350BF612EEBD59D5DF4 /* Pods_Example.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@@ -46,26 +27,27 @@
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
8EF9F892224EB00200B20545 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
4D729C4521A213B4002F73AB /* Rules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Rules.swift; sourceTree = "<group>"; };
|
||||
55EC36471E6BB98A00726F13 /* Siren.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Siren.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
55EC36491E6BB98A00726F13 /* Siren.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Siren.h; sourceTree = "<group>"; };
|
||||
55EC364A1E6BB98A00726F13 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = ../../Siren/Info.plist; sourceTree = "<group>"; };
|
||||
55EC365E1E6BB99B00726F13 /* Siren.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Siren.bundle; path = ../../Sources/Siren.bundle; sourceTree = "<group>"; };
|
||||
55EC365F1E6BB99B00726F13 /* Siren.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Siren.swift; path = ../../Sources/Siren.swift; sourceTree = "<group>"; };
|
||||
8E01817821B379AF006DED05 /* Results.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Results.swift; sourceTree = "<group>"; };
|
||||
8E01817B21B379DD006DED05 /* PresentationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationManager.swift; sourceTree = "<group>"; };
|
||||
8E01817D21B379DD006DED05 /* RulesManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RulesManager.swift; sourceTree = "<group>"; };
|
||||
8E01818121B37B43006DED05 /* AlertAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertAction.swift; sourceTree = "<group>"; };
|
||||
8E171DD1215B26B4006FBBCC /* BundleExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BundleExtension.swift; sourceTree = "<group>"; };
|
||||
8E171DD2215B26B4006FBBCC /* DateExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = "<group>"; };
|
||||
8E171DD7215B26B4006FBBCC /* LookupModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LookupModel.swift; sourceTree = "<group>"; };
|
||||
8E171DD8215B26B4006FBBCC /* UIAlertControllerExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIAlertControllerExtension.swift; sourceTree = "<group>"; };
|
||||
8E171DDA215B26B4006FBBCC /* SirenViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenViewController.swift; sourceTree = "<group>"; };
|
||||
8E171DE5215B2701006FBBCC /* Localization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Localization.swift; sourceTree = "<group>"; };
|
||||
8E171DED215B2D09006FBBCC /* UserDefaultsExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsExtension.swift; sourceTree = "<group>"; };
|
||||
3008B0CC506A71223653ED92 /* Pods-Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests.release.xcconfig"; path = "Target Support Files/Pods-Tests/Pods-Tests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
31A1A1D27EA05F1E28033516 /* Pods-Example-Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example-Tests.release.xcconfig"; path = "Target Support Files/Pods-Example-Tests/Pods-Example-Tests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
3207656F9030B2912198AF2E /* Pods_Example_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
37940350BF612EEBD59D5DF4 /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5A65216266BE44478A3B3AEB /* Pods-Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests.debug.xcconfig"; path = "Target Support Files/Pods-Tests/Pods-Tests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
740DAA3321466F1ABE6CC37D /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.debug.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
8E3A6C041D07CB6F00A8B7CF /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8E5061EA21C9CDF000A28DE0 /* AlertConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertConstants.swift; sourceTree = "<group>"; };
|
||||
8EACA9661F37F2D3003134CA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
8EACA9681F37F2D3003134CA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
|
||||
8EACA96A1F37F2D3003134CA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
@@ -73,25 +55,18 @@
|
||||
8EACA96C1F37F2D3003134CA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
8EACA96D1F37F2D3003134CA /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||
8EC391811A58B465001C121E /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8EE1FAF221B4DC0F009112A8 /* KnownError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KnownError.swift; sourceTree = "<group>"; };
|
||||
8EE1FAF421B4E6B8009112A8 /* APIManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIManager.swift; sourceTree = "<group>"; };
|
||||
8EE6C74B1E6A0AE100DBE454 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
8EE6C74C1E6A0AE100DBE454 /* SirenTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenTests.swift; sourceTree = "<group>"; };
|
||||
8EEF4AB021AA6DDF00C83AAA /* DataParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataParser.swift; sourceTree = "<group>"; };
|
||||
E83E47CD9052083916E39F84 /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.release.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.release.xcconfig"; sourceTree = "<group>"; };
|
||||
EA761E9782C2024D152342D4 /* Pods-Example-Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example-Tests.debug.xcconfig"; path = "Target Support Files/Pods-Example-Tests/Pods-Example-Tests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
55EC36431E6BB98A00726F13 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8E3A6C011D07CB6F00A8B7CF /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5913ECF89C0DE3BEB22031BE /* Pods_Example_Tests.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -99,87 +74,31 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8E641D2520C8B44B00908555 /* Siren.framework in Frameworks */,
|
||||
E7269D91A22F64E1A0C661C5 /* Pods_Example.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
55EC36481E6BB98A00726F13 /* Siren */ = {
|
||||
781697C27F2F128F70738C30 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
55EC36491E6BB98A00726F13 /* Siren.h */,
|
||||
55EC365F1E6BB99B00726F13 /* Siren.swift */,
|
||||
55EC365E1E6BB99B00726F13 /* Siren.bundle */,
|
||||
8E171DD0215B26B4006FBBCC /* Extensions */,
|
||||
8E01817A21B379DD006DED05 /* Managers */,
|
||||
8E171DD5215B26B4006FBBCC /* Models */,
|
||||
8E171DCC215B26B4006FBBCC /* Utilities */,
|
||||
8E171DD9215B26B4006FBBCC /* View Controllers */,
|
||||
740DAA3321466F1ABE6CC37D /* Pods-Example.debug.xcconfig */,
|
||||
E83E47CD9052083916E39F84 /* Pods-Example.release.xcconfig */,
|
||||
5A65216266BE44478A3B3AEB /* Pods-Tests.debug.xcconfig */,
|
||||
3008B0CC506A71223653ED92 /* Pods-Tests.release.xcconfig */,
|
||||
EA761E9782C2024D152342D4 /* Pods-Example-Tests.debug.xcconfig */,
|
||||
31A1A1D27EA05F1E28033516 /* Pods-Example-Tests.release.xcconfig */,
|
||||
);
|
||||
path = Siren;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E01817A21B379DD006DED05 /* Managers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EE1FAF421B4E6B8009112A8 /* APIManager.swift */,
|
||||
8E01817B21B379DD006DED05 /* PresentationManager.swift */,
|
||||
8E01817D21B379DD006DED05 /* RulesManager.swift */,
|
||||
);
|
||||
name = Managers;
|
||||
path = ../../Sources/Managers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E171DCC215B26B4006FBBCC /* Utilities */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EEF4AB021AA6DDF00C83AAA /* DataParser.swift */,
|
||||
8EE1FAF221B4DC0F009112A8 /* KnownError.swift */,
|
||||
);
|
||||
name = Utilities;
|
||||
path = ../../Sources/Utilities;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E171DD0215B26B4006FBBCC /* Extensions */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8E171DD1215B26B4006FBBCC /* BundleExtension.swift */,
|
||||
8E171DD2215B26B4006FBBCC /* DateExtension.swift */,
|
||||
8E171DD8215B26B4006FBBCC /* UIAlertControllerExtension.swift */,
|
||||
8E171DED215B2D09006FBBCC /* UserDefaultsExtension.swift */,
|
||||
);
|
||||
name = Extensions;
|
||||
path = ../../Sources/Extensions;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E171DD5215B26B4006FBBCC /* Models */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8E01818121B37B43006DED05 /* AlertAction.swift */,
|
||||
8E5061EA21C9CDF000A28DE0 /* AlertConstants.swift */,
|
||||
8E171DE5215B2701006FBBCC /* Localization.swift */,
|
||||
8E171DD7215B26B4006FBBCC /* LookupModel.swift */,
|
||||
8E01817821B379AF006DED05 /* Results.swift */,
|
||||
4D729C4521A213B4002F73AB /* Rules.swift */,
|
||||
);
|
||||
name = Models;
|
||||
path = ../../Sources/Models;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E171DD9215B26B4006FBBCC /* View Controllers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8E171DDA215B26B4006FBBCC /* SirenViewController.swift */,
|
||||
);
|
||||
name = "View Controllers";
|
||||
path = "../../Sources/View Controllers";
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E641D2420C8B44B00908555 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
37940350BF612EEBD59D5DF4 /* Pods_Example.framework */,
|
||||
3207656F9030B2912198AF2E /* Pods_Example_Tests.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
@@ -201,7 +120,6 @@
|
||||
8EACA96B1F37F2D3003134CA /* Images.xcassets */,
|
||||
8EACA96C1F37F2D3003134CA /* Info.plist */,
|
||||
8EACA96D1F37F2D3003134CA /* ViewController.swift */,
|
||||
55EC364A1E6BB98A00726F13 /* Info.plist */,
|
||||
);
|
||||
path = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
@@ -209,11 +127,11 @@
|
||||
8EC391781A58B465001C121E = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
55EC36481E6BB98A00726F13 /* Siren */,
|
||||
8EACA9651F37F2D3003134CA /* Example */,
|
||||
8EE6C74A1E6A0AE100DBE454 /* Tests */,
|
||||
8EC391821A58B465001C121E /* Products */,
|
||||
8E641D2420C8B44B00908555 /* Frameworks */,
|
||||
781697C27F2F128F70738C30 /* Pods */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -222,7 +140,6 @@
|
||||
children = (
|
||||
8EC391811A58B465001C121E /* Example.app */,
|
||||
8E3A6C041D07CB6F00A8B7CF /* Tests.xctest */,
|
||||
55EC36471E6BB98A00726F13 /* Siren.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@@ -238,43 +155,16 @@
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
55EC36441E6BB98A00726F13 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
55EC364B1E6BB98A00726F13 /* Siren.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
55EC36461E6BB98A00726F13 /* Siren */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 55EC36521E6BB98A00726F13 /* Build configuration list for PBXNativeTarget "Siren" */;
|
||||
buildPhases = (
|
||||
55EC36421E6BB98A00726F13 /* Sources */,
|
||||
55EC36431E6BB98A00726F13 /* Frameworks */,
|
||||
55EC36441E6BB98A00726F13 /* Headers */,
|
||||
55EC36451E6BB98A00726F13 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Siren;
|
||||
productName = Siren;
|
||||
productReference = 55EC36471E6BB98A00726F13 /* Siren.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
8E3A6C031D07CB6F00A8B7CF /* Tests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8E3A6C0D1D07CB6F00A8B7CF /* Build configuration list for PBXNativeTarget "Tests" */;
|
||||
buildPhases = (
|
||||
F0D788DF78612C5704C442B8 /* [CP] Check Pods Manifest.lock */,
|
||||
8E3A6C001D07CB6F00A8B7CF /* Sources */,
|
||||
8E3A6C011D07CB6F00A8B7CF /* Frameworks */,
|
||||
8E3A6C021D07CB6F00A8B7CF /* Resources */,
|
||||
F4829FA85904971576C7920A /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -290,10 +180,13 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8EC391A01A58B466001C121E /* Build configuration list for PBXNativeTarget "Example" */;
|
||||
buildPhases = (
|
||||
007D5BEF60AE64704A038FBF /* [CP] Check Pods Manifest.lock */,
|
||||
8EC3917D1A58B465001C121E /* Sources */,
|
||||
8EC3917E1A58B465001C121E /* Frameworks */,
|
||||
8EE3A3F81E6A0E470010BDCE /* SwiftLint */,
|
||||
8EC3917F1A58B465001C121E /* Resources */,
|
||||
8EF9F892224EB00200B20545 /* Embed Frameworks */,
|
||||
E31482FEAF1E4460E554FDD1 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -312,24 +205,19 @@
|
||||
attributes = {
|
||||
LastSwiftMigration = 0700;
|
||||
LastSwiftUpdateCheck = 0730;
|
||||
LastUpgradeCheck = 0930;
|
||||
LastUpgradeCheck = 1220;
|
||||
ORGANIZATIONNAME = "Sabintsev iOS Projects";
|
||||
TargetAttributes = {
|
||||
55EC36461E6BB98A00726F13 = {
|
||||
CreatedOnToolsVersion = 8.2.1;
|
||||
LastSwiftMigration = 0900;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
8E3A6C031D07CB6F00A8B7CF = {
|
||||
CreatedOnToolsVersion = 7.3.1;
|
||||
LastSwiftMigration = 0900;
|
||||
LastSwiftMigration = 1020;
|
||||
TestTargetID = 8EC391801A58B465001C121E;
|
||||
};
|
||||
8EC391801A58B465001C121E = {
|
||||
CreatedOnToolsVersion = 6.1.1;
|
||||
DevelopmentTeam = HT94948NDD;
|
||||
DevelopmentTeamName = "Arthur Sabintsev";
|
||||
LastSwiftMigration = 0900;
|
||||
LastSwiftMigration = 1020;
|
||||
SystemCapabilities = {
|
||||
com.apple.BackgroundModes = {
|
||||
enabled = 0;
|
||||
@@ -346,7 +234,7 @@
|
||||
};
|
||||
buildConfigurationList = 8EC3917C1A58B465001C121E /* Build configuration list for PBXProject "Example" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
@@ -359,25 +247,15 @@
|
||||
targets = (
|
||||
8EC391801A58B465001C121E /* Example */,
|
||||
8E3A6C031D07CB6F00A8B7CF /* Tests */,
|
||||
55EC36461E6BB98A00726F13 /* Siren */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
55EC36451E6BB98A00726F13 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
55EC36601E6BB99B00726F13 /* Siren.bundle in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8E3A6C021D07CB6F00A8B7CF /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4D729C4421A20EDC002F73AB /* Siren.bundle in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -394,6 +272,28 @@
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
007D5BEF60AE64704A038FBF /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-Example-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
8EE3A3F81E6A0E470010BDCE /* SwiftLint */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -408,33 +308,67 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "if which swiftlint >/dev/null; then\nswiftlint lint --config ../.swiftlint.yml\nelse\necho \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi";
|
||||
};
|
||||
E31482FEAF1E4460E554FDD1 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks.sh",
|
||||
"${BUILT_PRODUCTS_DIR}/Siren/Siren.framework",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Siren.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
F0D788DF78612C5704C442B8 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-Example-Tests-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
F4829FA85904971576C7920A /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Example-Tests/Pods-Example-Tests-frameworks.sh",
|
||||
"${BUILT_PRODUCTS_DIR}/Siren/Siren.framework",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Siren.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example-Tests/Pods-Example-Tests-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
55EC36421E6BB98A00726F13 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8E01818021B379DD006DED05 /* RulesManager.swift in Sources */,
|
||||
8E01818221B37B43006DED05 /* AlertAction.swift in Sources */,
|
||||
8E171DEE215B2D09006FBBCC /* UserDefaultsExtension.swift in Sources */,
|
||||
8E171DE2215B26B4006FBBCC /* LookupModel.swift in Sources */,
|
||||
55EC36611E6BB99B00726F13 /* Siren.swift in Sources */,
|
||||
8E5061EB21C9CDF000A28DE0 /* AlertConstants.swift in Sources */,
|
||||
8E01817921B379AF006DED05 /* Results.swift in Sources */,
|
||||
8EEF4AB121AA6DDF00C83AAA /* DataParser.swift in Sources */,
|
||||
4D729C4621A213B4002F73AB /* Rules.swift in Sources */,
|
||||
8E171DE4215B26B4006FBBCC /* SirenViewController.swift in Sources */,
|
||||
8E171DE6215B2701006FBBCC /* Localization.swift in Sources */,
|
||||
8EE1FAF521B4E6B8009112A8 /* APIManager.swift in Sources */,
|
||||
8E171DDE215B26B4006FBBCC /* BundleExtension.swift in Sources */,
|
||||
8E01817E21B379DD006DED05 /* PresentationManager.swift in Sources */,
|
||||
8E171DE3215B26B4006FBBCC /* UIAlertControllerExtension.swift in Sources */,
|
||||
8EE1FAF321B4DC0F009112A8 /* KnownError.swift in Sources */,
|
||||
8E171DDF215B26B4006FBBCC /* DateExtension.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8E3A6C001D07CB6F00A8B7CF /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -482,70 +416,9 @@
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
55EC36501E6BB98A00726F13 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Siren/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.apple.AppStoreConnect;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
55EC36511E6BB98A00726F13 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Siren/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.apple.AppStoreConnect;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
8E3A6C0B1D07CB6F00A8B7CF /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = EA761E9782C2024D152342D4 /* Pods-Example-Tests.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
@@ -553,18 +426,18 @@
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = Tests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
|
||||
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)";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.2;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8E3A6C0C1D07CB6F00A8B7CF /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 31A1A1D27EA05F1E28033516 /* Pods-Example-Tests.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
@@ -573,13 +446,12 @@
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = Tests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
|
||||
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)";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.2;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
|
||||
};
|
||||
name = Release;
|
||||
@@ -606,6 +478,7 @@
|
||||
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;
|
||||
@@ -630,7 +503,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
@@ -661,6 +534,7 @@
|
||||
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;
|
||||
@@ -678,7 +552,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_VERSION = 4.2;
|
||||
@@ -688,47 +562,44 @@
|
||||
};
|
||||
8EC391A11A58B466001C121E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 740DAA3321466F1ABE6CC37D /* Pods-Example.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
DEVELOPMENT_TEAM = HT94948NDD;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Siren/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Example/Supporting Files/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.apple.AppStoreConnect;
|
||||
MARKETING_VERSION = 2.0.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.Facebook;
|
||||
PRODUCT_NAME = Example;
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.2;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8EC391A21A58B466001C121E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = E83E47CD9052083916E39F84 /* Pods-Example.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
DEVELOPMENT_TEAM = HT94948NDD;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Siren/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Example/Supporting Files/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.apple.AppStoreConnect;
|
||||
MARKETING_VERSION = 2.0.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.Facebook;
|
||||
PRODUCT_NAME = Example;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 4.2;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
55EC36521E6BB98A00726F13 /* Build configuration list for PBXNativeTarget "Siren" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
55EC36501E6BB98A00726F13 /* Debug */,
|
||||
55EC36511E6BB98A00726F13 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
8E3A6C0D1D07CB6F00A8B7CF /* Build configuration list for PBXNativeTarget "Tests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Example.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?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>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -22,11 +22,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
// defaultExample()
|
||||
// defaultExampleUsingCompletionHandler()
|
||||
// manualExampleWithCompletionHandler()
|
||||
// minimalCustomizationPresentationExample()
|
||||
// forceLocalizationCustomizationPresentationExample()
|
||||
// customMessagingPresentationExample()
|
||||
annoyingRuleExample()
|
||||
// hyperCriticalRulesExample()
|
||||
// annoyingRuleExample()
|
||||
hyperCriticalRulesExample()
|
||||
// updateSpecificRulesExample()
|
||||
// customAlertRulesExample()
|
||||
// appStoreCountryChangeExample()
|
||||
@@ -51,13 +52,30 @@ private extension AppDelegate {
|
||||
/// All default rules are implemented and the
|
||||
/// results of the completion handler are returned or an error is returned.
|
||||
func defaultExampleUsingCompletionHandler() {
|
||||
Siren.shared.wail { (results, error) in
|
||||
if let results = results {
|
||||
print("AlertAction ", results.alertAction)
|
||||
print("Localization ", results.localization)
|
||||
print("LookupModel ", results.lookupModel)
|
||||
print("UpdateType ", results.updateType)
|
||||
} else if let error = error {
|
||||
Siren.shared.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Rather than waiting for `didBecomeActive` state changes (e.g., app launching/relaunching),
|
||||
/// Siren's version checking and alert presentation methods will be triggered each time this method is called.
|
||||
func manualExampleWithCompletionHandler() {
|
||||
Siren.shared.wail(performCheck: .onDemand) { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
@@ -66,31 +84,34 @@ private extension AppDelegate {
|
||||
/// Minor customization to Siren's update alert presentation.
|
||||
func minimalCustomizationPresentationExample() {
|
||||
let siren = Siren.shared
|
||||
siren.rulesManager = RulesManager(globalRules: .annoying)
|
||||
siren.presentationManager = PresentationManager(alertTintColor: .purple,
|
||||
appName: "Siren Example App Override!")
|
||||
siren.wail { (results, error) in
|
||||
if let results = results {
|
||||
print("AlertAction ", results.alertAction)
|
||||
print("Localization ", results.localization)
|
||||
print("LookupModel ", results.lookupModel)
|
||||
print("UpdateType ", results.updateType)
|
||||
} else if let error = error {
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Forcing the language of the update alert to a specific localization (e.g., Russian is force in this function.
|
||||
/// Forcing the language of the update alert to a specific localization (e.g., Russian is forced in this function)
|
||||
func forceLocalizationCustomizationPresentationExample() {
|
||||
let siren = Siren.shared
|
||||
siren.presentationManager = PresentationManager(forceLanguageLocalization: .russian)
|
||||
siren.wail { (results, error) in
|
||||
if let results = results {
|
||||
print("AlertAction ", results.alertAction)
|
||||
print("Localization ", results.localization)
|
||||
print("LookupModel ", results.lookupModel)
|
||||
print("UpdateType ", results.updateType)
|
||||
} else if let error = error {
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
@@ -101,13 +122,14 @@ private extension AppDelegate {
|
||||
let siren = Siren.shared
|
||||
siren.presentationManager = PresentationManager(alertTitle: "Update Now, OK?",
|
||||
nextTimeButtonTitle: "Next time, please!?")
|
||||
siren.wail { (results, error) in
|
||||
if let results = results {
|
||||
print("AlertAction ", results.alertAction)
|
||||
print("Localization ", results.localization)
|
||||
print("LookupModel ", results.lookupModel)
|
||||
print("UpdateType ", results.updateType)
|
||||
} else if let error = error {
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
@@ -118,13 +140,14 @@ private extension AppDelegate {
|
||||
let siren = Siren.shared
|
||||
siren.rulesManager = RulesManager(globalRules: .annoying)
|
||||
|
||||
siren.wail { (results, error) in
|
||||
if let results = results {
|
||||
print("AlertAction ", results.alertAction)
|
||||
print("Localization ", results.localization)
|
||||
print("LookupModel ", results.lookupModel)
|
||||
print("UpdateType ", results.updateType)
|
||||
} else if let error = error {
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
@@ -142,13 +165,14 @@ private extension AppDelegate {
|
||||
siren.rulesManager = RulesManager(globalRules: .critical,
|
||||
showAlertAfterCurrentVersionHasBeenReleasedForDays: 0)
|
||||
|
||||
siren.wail { (results, error) in
|
||||
if let results = results {
|
||||
print("AlertAction ", results.alertAction)
|
||||
print("Localization ", results.localization)
|
||||
print("LookupModel ", results.lookupModel)
|
||||
print("UpdateType ", results.updateType)
|
||||
} else if let error = error {
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
@@ -157,18 +181,19 @@ private extension AppDelegate {
|
||||
/// Major, Minor, Patch, and Revision specific rules implementations.
|
||||
func updateSpecificRulesExample() {
|
||||
let siren = Siren.shared
|
||||
siren.rulesManager = RulesManager(majorUpdateRules: .annoying,
|
||||
minorUpdateRules: .default,
|
||||
patchUpdateRules: .critical,
|
||||
siren.rulesManager = RulesManager(majorUpdateRules: .critical,
|
||||
minorUpdateRules: .annoying,
|
||||
patchUpdateRules: .default,
|
||||
revisionUpdateRules: Rules(promptFrequency: .weekly, forAlertType: .option))
|
||||
|
||||
siren.wail { (results, error) in
|
||||
if let results = results {
|
||||
print("AlertAction ", results.alertAction)
|
||||
print("Localization ", results.localization)
|
||||
print("LookupModel ", results.lookupModel)
|
||||
print("UpdateType ", results.updateType)
|
||||
} else if let error = error {
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
@@ -183,33 +208,34 @@ private extension AppDelegate {
|
||||
let rules = Rules(promptFrequency: .immediately, forAlertType: .none)
|
||||
siren.rulesManager = RulesManager(globalRules: rules)
|
||||
|
||||
siren.wail { (results, error) in
|
||||
if let results = results {
|
||||
print("USE THE VALUES FROM THE `RESULTS` DATA STRUCTURE TO BUILD YOUR UPDATE ALERT WITH LOCALIZED STRINGS.")
|
||||
print("AlertAction ", results.alertAction)
|
||||
print("Localization ", results.localization)
|
||||
print("LookupModel ", results.lookupModel)
|
||||
print("UpdateType ", results.updateType)
|
||||
} else if let error = error {
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// An example on how to change the App Store region that your app in which your app is available.
|
||||
// This should only be used if your app is not available in the US App Store.
|
||||
// This example function illustrates how this can be done by checking against the Russian App Store.
|
||||
/// This should only be used if your app is not available in the US App Store.
|
||||
/// This example function illustrates how this can be done by checking against the Russian App Store.
|
||||
func appStoreCountryChangeExample() {
|
||||
let siren = Siren.shared
|
||||
siren.apiManager = APIManager(countryCode: "RU")
|
||||
siren.apiManager = APIManager(country: .russia)
|
||||
|
||||
siren.wail { (results, error) in
|
||||
if let results = results {
|
||||
print("AlertAction ", results.alertAction)
|
||||
print("Localization ", results.localization)
|
||||
print("LookupModel ", results.lookupModel)
|
||||
print("UpdateType ", results.updateType)
|
||||
} else if let error = error {
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
@@ -223,18 +249,19 @@ private extension AppDelegate {
|
||||
alertTitle: "Please, Update Now!",
|
||||
skipButtonTitle: "Click here to skip!",
|
||||
forceLanguageLocalization: .spanish)
|
||||
siren.rulesManager = RulesManager(majorUpdateRules: .annoying,
|
||||
minorUpdateRules: .default,
|
||||
patchUpdateRules: .critical,
|
||||
siren.rulesManager = RulesManager(majorUpdateRules: .critical,
|
||||
minorUpdateRules: .annoying,
|
||||
patchUpdateRules: .default,
|
||||
revisionUpdateRules: .relaxed)
|
||||
|
||||
siren.wail { (results, error) in
|
||||
if let results = results {
|
||||
print("AlertAction ", results.alertAction)
|
||||
print("Localization ", results.localization)
|
||||
print("LookupModel ", results.lookupModel)
|
||||
print("UpdateType ", results.updateType)
|
||||
} else if let error = error {
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
@@ -15,9 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.0.9</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
|
||||
@@ -21,4 +21,3 @@ class ViewController: UIViewController {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
platform :ios, '15.0'
|
||||
inhibit_all_warnings!
|
||||
use_frameworks!
|
||||
|
||||
target 'Example' do
|
||||
pod 'Siren', :path => '../'
|
||||
|
||||
target 'Tests' do
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,16 @@
|
||||
PODS:
|
||||
- Siren (6.0.2)
|
||||
|
||||
DEPENDENCIES:
|
||||
- Siren (from `../`)
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
Siren:
|
||||
:path: "../"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
Siren: 1be92ef5775f9b61ebb294c79c59268ab0afcf5d
|
||||
|
||||
PODFILE CHECKSUM: 5800641824958ea506d6ae52e89b594fe8270c18
|
||||
|
||||
COCOAPODS: 1.11.2
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Siren",
|
||||
"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",
|
||||
"authors": {
|
||||
"Arthur Ariel Sabintsev": "arthur@sabintsev.com"
|
||||
},
|
||||
"description": "Notify your users when a new version of your iOS app is available, and prompt them with the App Store link.",
|
||||
"platforms": {
|
||||
"ios": "15.0",
|
||||
"tvos": "15.0"
|
||||
},
|
||||
"source": {
|
||||
"git": "https://github.com/ArtSabintsev/Siren.git",
|
||||
"tag": "6.0.2"
|
||||
},
|
||||
"source_files": "Sources/**/*.swift",
|
||||
"resources": "Sources/Siren.bundle",
|
||||
"requires_arc": true,
|
||||
"swift_version": "5.5"
|
||||
}
|
||||
Generated
+16
@@ -0,0 +1,16 @@
|
||||
PODS:
|
||||
- Siren (6.0.2)
|
||||
|
||||
DEPENDENCIES:
|
||||
- Siren (from `../`)
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
Siren:
|
||||
:path: "../"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
Siren: 1be92ef5775f9b61ebb294c79c59268ab0afcf5d
|
||||
|
||||
PODFILE CHECKSUM: 5800641824958ea506d6ae52e89b594fe8270c18
|
||||
|
||||
COCOAPODS: 1.11.2
|
||||
+902
@@ -0,0 +1,902 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
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 */
|
||||
B52DE15DFA6D788DDC41A589FA9AD9E8 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = A0E2640B83527AE54205D7FDE9C5D930;
|
||||
remoteInfo = Siren;
|
||||
};
|
||||
BF9CC9039B7878DA61A42FFBD3A22E9F /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = A0E2640B83527AE54205D7FDE9C5D930;
|
||||
remoteInfo = Siren;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
033A17C59E0896996DE69A71A44F74D3 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
||||
07692E025EFBB5F5C9DD63817289A7F2 /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
08A780E0CDE0D69B789468679AB277EA /* APIManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = APIManager.swift; sourceTree = "<group>"; };
|
||||
11BFB38B8D147BDF94B9415C0F2DE13A /* BundleExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BundleExtension.swift; sourceTree = "<group>"; };
|
||||
17E70395B3CDD0B7EDA622612E2C3144 /* Siren.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Siren.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
19D5FEFBCEC302A522182EEE37AD81B3 /* AlertConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlertConstants.swift; sourceTree = "<group>"; };
|
||||
1BA24BC1E607E24F1C9AED046EE27110 /* Pods-Example-Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example-Tests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
1C22073E7207FFF335D3A9EADE0DA51B /* Siren.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Siren.debug.xcconfig; sourceTree = "<group>"; };
|
||||
1F667CC0E19EAF34E5A4119E2121F585 /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2506E5646D43BCE53FBEE1AB44BF4871 /* Siren-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Siren-umbrella.h"; sourceTree = "<group>"; };
|
||||
27809964D647C11D4B07299C7B264724 /* Pods-Example-Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example-Tests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
2C0257A9A3D8C5B62771A4DDEB17A0ED /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.release.xcconfig"; sourceTree = "<group>"; };
|
||||
2F92A716E93EDF48D0C9EF3C5062B558 /* Pods-Example-Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Example-Tests-umbrella.h"; sourceTree = "<group>"; };
|
||||
3CDA2F82B5CE0BD747E1FE8BA63539AD /* Siren.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = Siren.bundle; path = Sources/Siren.bundle; sourceTree = "<group>"; };
|
||||
3F4E87B2E26A88328CDC6588E37F2AD2 /* Siren-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Siren-prefix.pch"; sourceTree = "<group>"; };
|
||||
4681015D4D44EB9A4302B2A179FD809F /* KnownError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KnownError.swift; sourceTree = "<group>"; };
|
||||
4E841994E6AE2DF727221123E0ED744A /* RulesManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RulesManager.swift; sourceTree = "<group>"; };
|
||||
5281882E9C6A7A11616D41DF41B0CC7A /* Pods-Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-acknowledgements.plist"; sourceTree = "<group>"; };
|
||||
567D8AAC664C44A23EBB5EC6B0AA4049 /* UpdateResults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UpdateResults.swift; sourceTree = "<group>"; };
|
||||
62176AC744B2DC815BA7CD121F4EA473 /* Model.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Model.swift; sourceTree = "<group>"; };
|
||||
688C1754B2F8DFC0710F4772C4A75C32 /* Pods-Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-Info.plist"; sourceTree = "<group>"; };
|
||||
6D859521A91F233E653F06300C561D0A /* Pods-Example-Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Example-Tests-acknowledgements.markdown"; sourceTree = "<group>"; };
|
||||
6FE61F66C83C50497BB430E4C3C49CD6 /* Pods-Example-Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-Tests-Info.plist"; sourceTree = "<group>"; };
|
||||
70689754D9C1D7660D29312893615F94 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
|
||||
73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
|
||||
7637C46E7C27C83B4C31CECE3D6064B4 /* PerformCheck.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PerformCheck.swift; sourceTree = "<group>"; };
|
||||
786A05732FE78B252DC56C9F78F693C0 /* SirenViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SirenViewController.swift; sourceTree = "<group>"; };
|
||||
850060B744F1FDFB6ADCAFD76D4D34EB /* Pods-Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Example-dummy.m"; sourceTree = "<group>"; };
|
||||
89F8A185DF29707E4DC9BB13872AF702 /* Siren.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = Siren.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||
8B26CBDBDDF69163D512AED074B4549D /* PresentationManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PresentationManager.swift; sourceTree = "<group>"; };
|
||||
8B636D1CA58AC29F35305FCC180DDAD8 /* Siren-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Siren-Info.plist"; sourceTree = "<group>"; };
|
||||
90BF25316BE6972758B31C52602CE12C /* Pods-Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Example-umbrella.h"; sourceTree = "<group>"; };
|
||||
9220E906478C87C685A81A5177136643 /* DateExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = "<group>"; };
|
||||
94DA749EC12B6582F7B5F8C0E50736F1 /* Siren-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Siren-dummy.m"; sourceTree = "<group>"; };
|
||||
97602092A124F5A205482E90225B67EA /* DataParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataParser.swift; sourceTree = "<group>"; };
|
||||
9A8349F11EDA01F629C4C61E99CCFD91 /* UserDefaultsExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UserDefaultsExtension.swift; sourceTree = "<group>"; };
|
||||
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||
A2D5633C9DFACF001D250AC90A2EAD23 /* Pods_Example_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AB37C628ACFCAD98A383C821813EFBBF /* Pods-Example-Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Example-Tests-frameworks.sh"; sourceTree = "<group>"; };
|
||||
AB4D2B7323F8C610677B540FEEC7673C /* Localization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Localization.swift; sourceTree = "<group>"; };
|
||||
AEAE97BBEB3D5E4F45CEC2708FAFB72C /* Pods-Example-Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Example-Tests-dummy.m"; sourceTree = "<group>"; };
|
||||
AEB39A55C28B48D98B02090079C5C084 /* Pods-Example-Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-Tests-acknowledgements.plist"; sourceTree = "<group>"; };
|
||||
B297160149C4B307A3DD5A8DDFC7EEF9 /* Siren.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Siren.modulemap; sourceTree = "<group>"; };
|
||||
CCAD38316B970AACF9940545155FFAF8 /* AppStoreCountry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AppStoreCountry.swift; sourceTree = "<group>"; };
|
||||
D06B1A9453346F0CDCD7A4DC41A4F92C /* APIModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = APIModel.swift; sourceTree = "<group>"; };
|
||||
D991827462FB11E20C03858A8A0EF766 /* Pods-Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Example.modulemap"; sourceTree = "<group>"; };
|
||||
DDB351CF336FC775897FB3DEFC1AECE1 /* Pods-Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Example-frameworks.sh"; sourceTree = "<group>"; };
|
||||
EEF458E38855C5A2A0F70C968763EEAD /* Pods-Example-Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Example-Tests.modulemap"; sourceTree = "<group>"; };
|
||||
F1EABF799D1E792CA3E9194926E78605 /* Rules.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Rules.swift; sourceTree = "<group>"; };
|
||||
F20FBAD7ADBFD07AF8183236B4ECE297 /* UIAlertControllerExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UIAlertControllerExtension.swift; sourceTree = "<group>"; };
|
||||
F5743486693D7F303412A3018B0941CF /* Siren.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Siren.release.xcconfig; sourceTree = "<group>"; };
|
||||
F7B3EAF82CFAB96C6721BA02F97FC71B /* Siren.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Siren.swift; path = Sources/Siren.swift; sourceTree = "<group>"; };
|
||||
F924C881D2735430B1A17EDFF024E317 /* Pods-Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Example-acknowledgements.markdown"; sourceTree = "<group>"; };
|
||||
FF347B3A55392D1407E1A4ABC8114173 /* AlertAction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlertAction.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
19C68C00E0D92CD65F2917255ED5A50B /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4B4BB6D6D4B49D976A961CEBCA97BC05 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5E2E02FD05446E0D72F1A5C4F34A57DB /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C21F6BE2015F6B8C8540667C5C4EDCF0 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D01825EFADF2015C2D6F895EE2B5C81A /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5B9E7420A0284E837C04012B528EAE4A /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
108F8CE4A8FCBCCB97F2FAD6A5B6D6D2 /* Extensions */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
11BFB38B8D147BDF94B9415C0F2DE13A /* BundleExtension.swift */,
|
||||
9220E906478C87C685A81A5177136643 /* DateExtension.swift */,
|
||||
F20FBAD7ADBFD07AF8183236B4ECE297 /* UIAlertControllerExtension.swift */,
|
||||
9A8349F11EDA01F629C4C61E99CCFD91 /* UserDefaultsExtension.swift */,
|
||||
);
|
||||
name = Extensions;
|
||||
path = Sources/Extensions;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1CB4D55DAEB98D0046DA84E18479FED9 /* View Controllers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
786A05732FE78B252DC56C9F78F693C0 /* SirenViewController.swift */,
|
||||
);
|
||||
name = "View Controllers";
|
||||
path = "Sources/View Controllers";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
578452D2E740E91742655AC8F1636D1F /* iOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */,
|
||||
);
|
||||
name = iOS;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
62A567EC72AC1F16179364897645F180 /* Utilities */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
97602092A124F5A205482E90225B67EA /* DataParser.swift */,
|
||||
4681015D4D44EB9A4302B2A179FD809F /* KnownError.swift */,
|
||||
);
|
||||
name = Utilities;
|
||||
path = Sources/Utilities;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
79BF3B1D578C929414C256003C35CDDA /* Pods-Example-Tests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EEF458E38855C5A2A0F70C968763EEAD /* Pods-Example-Tests.modulemap */,
|
||||
6D859521A91F233E653F06300C561D0A /* Pods-Example-Tests-acknowledgements.markdown */,
|
||||
AEB39A55C28B48D98B02090079C5C084 /* Pods-Example-Tests-acknowledgements.plist */,
|
||||
AEAE97BBEB3D5E4F45CEC2708FAFB72C /* Pods-Example-Tests-dummy.m */,
|
||||
AB37C628ACFCAD98A383C821813EFBBF /* Pods-Example-Tests-frameworks.sh */,
|
||||
6FE61F66C83C50497BB430E4C3C49CD6 /* Pods-Example-Tests-Info.plist */,
|
||||
2F92A716E93EDF48D0C9EF3C5062B558 /* Pods-Example-Tests-umbrella.h */,
|
||||
27809964D647C11D4B07299C7B264724 /* Pods-Example-Tests.debug.xcconfig */,
|
||||
1BA24BC1E607E24F1C9AED046EE27110 /* Pods-Example-Tests.release.xcconfig */,
|
||||
);
|
||||
name = "Pods-Example-Tests";
|
||||
path = "Target Support Files/Pods-Example-Tests";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
85FAA2FE23142B2837AABDED1ABBE431 /* Siren */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3CDA2F82B5CE0BD747E1FE8BA63539AD /* Siren.bundle */,
|
||||
F7B3EAF82CFAB96C6721BA02F97FC71B /* Siren.swift */,
|
||||
108F8CE4A8FCBCCB97F2FAD6A5B6D6D2 /* Extensions */,
|
||||
96395B3494838F55CD3B289AE14E3EBC /* Managers */,
|
||||
A2735ADBD845397D9F481076C17C1760 /* Models */,
|
||||
DAE3F5037DE241FD14030F7285578362 /* Pod */,
|
||||
C9A9CB18FAE1BDEE996F72E1BA74240D /* Support Files */,
|
||||
62A567EC72AC1F16179364897645F180 /* Utilities */,
|
||||
1CB4D55DAEB98D0046DA84E18479FED9 /* View Controllers */,
|
||||
);
|
||||
name = Siren;
|
||||
path = ../..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
96395B3494838F55CD3B289AE14E3EBC /* Managers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
08A780E0CDE0D69B789468679AB277EA /* APIManager.swift */,
|
||||
8B26CBDBDDF69163D512AED074B4549D /* PresentationManager.swift */,
|
||||
4E841994E6AE2DF727221123E0ED744A /* RulesManager.swift */,
|
||||
);
|
||||
name = Managers;
|
||||
path = Sources/Managers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A2735ADBD845397D9F481076C17C1760 /* Models */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FF347B3A55392D1407E1A4ABC8114173 /* AlertAction.swift */,
|
||||
19D5FEFBCEC302A522182EEE37AD81B3 /* AlertConstants.swift */,
|
||||
D06B1A9453346F0CDCD7A4DC41A4F92C /* APIModel.swift */,
|
||||
CCAD38316B970AACF9940545155FFAF8 /* AppStoreCountry.swift */,
|
||||
AB4D2B7323F8C610677B540FEEC7673C /* Localization.swift */,
|
||||
62176AC744B2DC815BA7CD121F4EA473 /* Model.swift */,
|
||||
7637C46E7C27C83B4C31CECE3D6064B4 /* PerformCheck.swift */,
|
||||
F1EABF799D1E792CA3E9194926E78605 /* Rules.swift */,
|
||||
567D8AAC664C44A23EBB5EC6B0AA4049 /* UpdateResults.swift */,
|
||||
);
|
||||
name = Models;
|
||||
path = Sources/Models;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A8A8EA9BC9538376CEF195F2EAAC8200 /* Targets Support Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E91BC7AD44E15DE8E857ACB38F588DF3 /* Pods-Example */,
|
||||
79BF3B1D578C929414C256003C35CDDA /* Pods-Example-Tests */,
|
||||
);
|
||||
name = "Targets Support Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B9E413F3FEAF521324127A009A6039BA /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1F667CC0E19EAF34E5A4119E2121F585 /* Pods_Example.framework */,
|
||||
A2D5633C9DFACF001D250AC90A2EAD23 /* Pods_Example_Tests.framework */,
|
||||
17E70395B3CDD0B7EDA622612E2C3144 /* Siren.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9A9CB18FAE1BDEE996F72E1BA74240D /* Support Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B297160149C4B307A3DD5A8DDFC7EEF9 /* Siren.modulemap */,
|
||||
94DA749EC12B6582F7B5F8C0E50736F1 /* Siren-dummy.m */,
|
||||
8B636D1CA58AC29F35305FCC180DDAD8 /* Siren-Info.plist */,
|
||||
3F4E87B2E26A88328CDC6588E37F2AD2 /* Siren-prefix.pch */,
|
||||
2506E5646D43BCE53FBEE1AB44BF4871 /* Siren-umbrella.h */,
|
||||
1C22073E7207FFF335D3A9EADE0DA51B /* Siren.debug.xcconfig */,
|
||||
F5743486693D7F303412A3018B0941CF /* Siren.release.xcconfig */,
|
||||
);
|
||||
name = "Support Files";
|
||||
path = "Example/Pods/Target Support Files/Siren";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
CA5CC6205CFA8B5868F65C2CE32900E5 /* Development Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
85FAA2FE23142B2837AABDED1ABBE431 /* Siren */,
|
||||
);
|
||||
name = "Development Pods";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
CF1408CF629C7361332E53B88F7BD30C = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
|
||||
CA5CC6205CFA8B5868F65C2CE32900E5 /* Development Pods */,
|
||||
D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
|
||||
B9E413F3FEAF521324127A009A6039BA /* Products */,
|
||||
A8A8EA9BC9538376CEF195F2EAAC8200 /* Targets Support Files */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
578452D2E740E91742655AC8F1636D1F /* iOS */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DAE3F5037DE241FD14030F7285578362 /* Pod */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
70689754D9C1D7660D29312893615F94 /* LICENSE */,
|
||||
033A17C59E0896996DE69A71A44F74D3 /* README.md */,
|
||||
89F8A185DF29707E4DC9BB13872AF702 /* Siren.podspec */,
|
||||
);
|
||||
name = Pod;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E91BC7AD44E15DE8E857ACB38F588DF3 /* Pods-Example */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D991827462FB11E20C03858A8A0EF766 /* Pods-Example.modulemap */,
|
||||
F924C881D2735430B1A17EDFF024E317 /* Pods-Example-acknowledgements.markdown */,
|
||||
5281882E9C6A7A11616D41DF41B0CC7A /* Pods-Example-acknowledgements.plist */,
|
||||
850060B744F1FDFB6ADCAFD76D4D34EB /* Pods-Example-dummy.m */,
|
||||
DDB351CF336FC775897FB3DEFC1AECE1 /* Pods-Example-frameworks.sh */,
|
||||
688C1754B2F8DFC0710F4772C4A75C32 /* Pods-Example-Info.plist */,
|
||||
90BF25316BE6972758B31C52602CE12C /* Pods-Example-umbrella.h */,
|
||||
07692E025EFBB5F5C9DD63817289A7F2 /* Pods-Example.debug.xcconfig */,
|
||||
2C0257A9A3D8C5B62771A4DDEB17A0ED /* Pods-Example.release.xcconfig */,
|
||||
);
|
||||
name = "Pods-Example";
|
||||
path = "Target Support Files/Pods-Example";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
57B0EAD2BF26101AE4951B7571E127AC /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
F235A549B294F2E848529A1A93F852EB /* Pods-Example-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
810C4E5C60D9DE47607703BE3EF5C570 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
32AEE3D9A55EC66EBCE39C3A38D01126 /* Pods-Example-Tests-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
C1B2B775EC37DA6784A580EC336EB857 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A1EA2053268A5D5D9AC11C3D74D5BD4F /* Siren-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = D3B82CA51562CEF224C9A4BB49C4984C /* Build configuration list for PBXNativeTarget "Pods-Example" */;
|
||||
buildPhases = (
|
||||
57B0EAD2BF26101AE4951B7571E127AC /* Headers */,
|
||||
4FFB70C136C9E782741B288D15B85315 /* Sources */,
|
||||
5E2E02FD05446E0D72F1A5C4F34A57DB /* Frameworks */,
|
||||
1D93CD182681FF85B9578413C8D20386 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
5325AFA39850B8A702C4FAF857E8B547 /* PBXTargetDependency */,
|
||||
);
|
||||
name = "Pods-Example";
|
||||
productName = Pods_Example;
|
||||
productReference = 1F667CC0E19EAF34E5A4119E2121F585 /* Pods_Example.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
258F10561A9DF823C49949D6176054DD /* Pods-Example-Tests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = FF4C27B32F8578162520923AA315DD80 /* Build configuration list for PBXNativeTarget "Pods-Example-Tests" */;
|
||||
buildPhases = (
|
||||
810C4E5C60D9DE47607703BE3EF5C570 /* Headers */,
|
||||
222B8840F0BDB57E0AAD162A4612C884 /* Sources */,
|
||||
19C68C00E0D92CD65F2917255ED5A50B /* Frameworks */,
|
||||
26CAC077D527B3E5B13B86D2CA4BFF44 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
8292FC67D3422DFD54E714A9A8FF469E /* PBXTargetDependency */,
|
||||
);
|
||||
name = "Pods-Example-Tests";
|
||||
productName = Pods_Example_Tests;
|
||||
productReference = A2D5633C9DFACF001D250AC90A2EAD23 /* Pods_Example_Tests.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
A0E2640B83527AE54205D7FDE9C5D930 /* Siren */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = D32ED6FCE8895E74A4FB89FACB79DC86 /* Build configuration list for PBXNativeTarget "Siren" */;
|
||||
buildPhases = (
|
||||
C1B2B775EC37DA6784A580EC336EB857 /* Headers */,
|
||||
D808E7A6F5C7F3EB841EB711DC313822 /* Sources */,
|
||||
D01825EFADF2015C2D6F895EE2B5C81A /* Frameworks */,
|
||||
15A1BDD07A3C42FFD26CA6341DED32EC /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Siren;
|
||||
productName = Siren;
|
||||
productReference = 17E70395B3CDD0B7EDA622612E2C3144 /* Siren.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 1240;
|
||||
LastUpgradeCheck = 1340;
|
||||
};
|
||||
buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
Base,
|
||||
en,
|
||||
);
|
||||
mainGroup = CF1408CF629C7361332E53B88F7BD30C;
|
||||
productRefGroup = B9E413F3FEAF521324127A009A6039BA /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */,
|
||||
258F10561A9DF823C49949D6176054DD /* Pods-Example-Tests */,
|
||||
A0E2640B83527AE54205D7FDE9C5D930 /* Siren */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
15A1BDD07A3C42FFD26CA6341DED32EC /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
FF40E81B2B174F3584493809B90C6668 /* Siren.bundle in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
1D93CD182681FF85B9578413C8D20386 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
26CAC077D527B3E5B13B86D2CA4BFF44 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
222B8840F0BDB57E0AAD162A4612C884 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
487B8148F836C8A64C6ECBBE67126ECA /* Pods-Example-Tests-dummy.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4FFB70C136C9E782741B288D15B85315 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6522773E85791CCB1A7256E5C3201E75 /* Pods-Example-dummy.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D808E7A6F5C7F3EB841EB711DC313822 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
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 */
|
||||
5325AFA39850B8A702C4FAF857E8B547 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = Siren;
|
||||
target = A0E2640B83527AE54205D7FDE9C5D930 /* Siren */;
|
||||
targetProxy = B52DE15DFA6D788DDC41A589FA9AD9E8 /* PBXContainerItemProxy */;
|
||||
};
|
||||
8292FC67D3422DFD54E714A9A8FF469E /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = Siren;
|
||||
target = A0E2640B83527AE54205D7FDE9C5D930 /* Siren */;
|
||||
targetProxy = BF9CC9039B7878DA61A42FFBD3A22E9F /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
33693A1CC9F4648B54726664AFDE566F /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = F5743486693D7F303412A3018B0941CF /* Siren.release.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";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
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 = {
|
||||
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";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
90D4D09BCB6A4660E43ACBE9ECB6FE9A /* Debug */ = {
|
||||
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;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"POD_CONFIGURATION_DEBUG=1",
|
||||
"DEBUG=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 = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
SYMROOT = "${SRCROOT}/../build";
|
||||
};
|
||||
name = 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 = {
|
||||
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 = 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";
|
||||
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";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
B0425CD0BFC3B46122E8E1CC4DB5B5B8 /* 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 = 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";
|
||||
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;
|
||||
};
|
||||
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 */
|
||||
4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
90D4D09BCB6A4660E43ACBE9ECB6FE9A /* Debug */,
|
||||
9553C89E183877A5CB2F3C6801BEC129 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
D32ED6FCE8895E74A4FB89FACB79DC86 /* Build configuration list for PBXNativeTarget "Siren" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
7AE7988F711FD5F0C3BBD5F5321193F9 /* Debug */,
|
||||
33693A1CC9F4648B54726664AFDE566F /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
D3B82CA51562CEF224C9A4BB49C4984C /* Build configuration list for PBXNativeTarget "Pods-Example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
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;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;
|
||||
}
|
||||
+11
-45
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0940"
|
||||
LastUpgradeVersion = "1340"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@@ -14,10 +14,10 @@
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8EC391801A58B465001C121E"
|
||||
BuildableName = "Example.app"
|
||||
BlueprintName = "Example"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
BlueprintIdentifier = "258F10561A9DF823C49949D6176054DD"
|
||||
BuildableName = "Pods_Example_Tests.framework"
|
||||
BlueprintName = "Pods-Example-Tests"
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
@@ -28,28 +28,7 @@
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8E3A6C031D07CB6F00A8B7CF"
|
||||
BuildableName = "Tests.xctest"
|
||||
BlueprintName = "Tests"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8EC391801A58B465001C121E"
|
||||
BuildableName = "Example.app"
|
||||
BlueprintName = "Example"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
@@ -61,18 +40,6 @@
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8EC391801A58B465001C121E"
|
||||
BuildableName = "Example.app"
|
||||
BlueprintName = "Example"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
@@ -80,16 +47,15 @@
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8EC391801A58B465001C121E"
|
||||
BuildableName = "Example.app"
|
||||
BlueprintName = "Example"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
BlueprintIdentifier = "258F10561A9DF823C49949D6176054DD"
|
||||
BuildableName = "Pods_Example_Tests.framework"
|
||||
BlueprintName = "Pods-Example-Tests"
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1340"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0AEE99A309977BD12A049FF48AF9BA4B"
|
||||
BuildableName = "Pods_Example.framework"
|
||||
BlueprintName = "Pods-Example"
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0AEE99A309977BD12A049FF48AF9BA4B"
|
||||
BuildableName = "Pods_Example.framework"
|
||||
BlueprintName = "Pods-Example"
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
+5
-18
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0930"
|
||||
LastUpgradeVersion = "1340"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@@ -14,10 +14,10 @@
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "55EC36461E6BB98A00726F13"
|
||||
BlueprintIdentifier = "A0E2640B83527AE54205D7FDE9C5D930"
|
||||
BuildableName = "Siren.framework"
|
||||
BlueprintName = "Siren"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
@@ -29,8 +29,6 @@
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
@@ -42,17 +40,6 @@
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "55EC36461E6BB98A00726F13"
|
||||
BuildableName = "Siren.framework"
|
||||
BlueprintName = "Siren"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
@@ -63,10 +50,10 @@
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "55EC36461E6BB98A00726F13"
|
||||
BlueprintIdentifier = "A0E2640B83527AE54205D7FDE9C5D930"
|
||||
BuildableName = "Siren.framework"
|
||||
BlueprintName = "Siren"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<?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>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
Generated
+29
@@ -0,0 +1,29 @@
|
||||
# Acknowledgements
|
||||
This application makes use of the following third party libraries:
|
||||
|
||||
## Siren
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Arthur Ariel Sabintsev
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
|
||||
Generated by CocoaPods - https://cocoapods.org
|
||||
Generated
+61
@@ -0,0 +1,61 @@
|
||||
<?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>PreferenceSpecifiers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>This application makes use of the following third party libraries:</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Arthur Ariel Sabintsev
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
</string>
|
||||
<key>License</key>
|
||||
<string>MIT</string>
|
||||
<key>Title</key>
|
||||
<string>Siren</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Generated by CocoaPods - https://cocoapods.org</string>
|
||||
<key>Title</key>
|
||||
<string></string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>StringsTable</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
</dict>
|
||||
</plist>
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_Pods_Example_Tests : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_Pods_Example_Tests
|
||||
@end
|
||||
Generated
Executable
+186
@@ -0,0 +1,186 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
function on_error {
|
||||
echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
|
||||
}
|
||||
trap 'on_error $LINENO' ERR
|
||||
|
||||
if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
|
||||
# If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
|
||||
# frameworks to, so exit 0 (signalling the script phase was successful).
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
|
||||
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
|
||||
BCSYMBOLMAP_DIR="BCSymbolMaps"
|
||||
|
||||
|
||||
# This protects against multiple targets copying the same framework dependency at the same time. The solution
|
||||
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
|
||||
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
|
||||
|
||||
# Copies and strips a vendored framework
|
||||
install_framework()
|
||||
{
|
||||
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
|
||||
local source="${BUILT_PRODUCTS_DIR}/$1"
|
||||
elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
|
||||
local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
|
||||
elif [ -r "$1" ]; then
|
||||
local source="$1"
|
||||
fi
|
||||
|
||||
local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
if [ -L "${source}" ]; then
|
||||
echo "Symlinked..."
|
||||
source="$(readlink "${source}")"
|
||||
fi
|
||||
|
||||
if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then
|
||||
# Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied
|
||||
find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do
|
||||
echo "Installing $f"
|
||||
install_bcsymbolmap "$f" "$destination"
|
||||
rm "$f"
|
||||
done
|
||||
rmdir "${source}/${BCSYMBOLMAP_DIR}"
|
||||
fi
|
||||
|
||||
# Use filter instead of exclude so missing patterns don't throw errors.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
|
||||
|
||||
local basename
|
||||
basename="$(basename -s .framework "$1")"
|
||||
binary="${destination}/${basename}.framework/${basename}"
|
||||
|
||||
if ! [ -r "$binary" ]; then
|
||||
binary="${destination}/${basename}"
|
||||
elif [ -L "${binary}" ]; then
|
||||
echo "Destination binary is symlinked..."
|
||||
dirname="$(dirname "${binary}")"
|
||||
binary="${dirname}/$(readlink "${binary}")"
|
||||
fi
|
||||
|
||||
# Strip invalid architectures so "fat" simulator / device frameworks work on device
|
||||
if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
|
||||
strip_invalid_archs "$binary"
|
||||
fi
|
||||
|
||||
# Resign the code if required by the build settings to avoid unstable apps
|
||||
code_sign_if_enabled "${destination}/$(basename "$1")"
|
||||
|
||||
# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
|
||||
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
|
||||
local swift_runtime_libs
|
||||
swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u)
|
||||
for lib in $swift_runtime_libs; do
|
||||
echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
|
||||
rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
|
||||
code_sign_if_enabled "${destination}/${lib}"
|
||||
done
|
||||
fi
|
||||
}
|
||||
# Copies and strips a vendored dSYM
|
||||
install_dsym() {
|
||||
local source="$1"
|
||||
warn_missing_arch=${2:-true}
|
||||
if [ -r "$source" ]; then
|
||||
# Copy the dSYM into the targets temp dir.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
|
||||
|
||||
local basename
|
||||
basename="$(basename -s .dSYM "$source")"
|
||||
binary_name="$(ls "$source/Contents/Resources/DWARF")"
|
||||
binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}"
|
||||
|
||||
# Strip invalid architectures from the dSYM.
|
||||
if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then
|
||||
strip_invalid_archs "$binary" "$warn_missing_arch"
|
||||
fi
|
||||
if [[ $STRIP_BINARY_RETVAL == 0 ]]; then
|
||||
# Move the stripped file into its final destination.
|
||||
echo "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}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
|
||||
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
|
||||
}
|
||||
|
||||
# Used as a return value for each invocation of `strip_invalid_archs` function.
|
||||
STRIP_BINARY_RETVAL=0
|
||||
|
||||
# Strip invalid architectures
|
||||
strip_invalid_archs() {
|
||||
binary="$1"
|
||||
warn_missing_arch=${2:-true}
|
||||
# Get architectures for current target binary
|
||||
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
|
||||
# Intersect them with the architectures we are building for
|
||||
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
|
||||
# If there are no archs supported by this binary then warn the user
|
||||
if [[ -z "$intersected_archs" ]]; then
|
||||
if [[ "$warn_missing_arch" == "true" ]]; then
|
||||
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
|
||||
fi
|
||||
STRIP_BINARY_RETVAL=1
|
||||
return
|
||||
fi
|
||||
stripped=""
|
||||
for arch in $binary_archs; do
|
||||
if ! [[ "${ARCHS}" == *"$arch"* ]]; then
|
||||
# Strip non-valid architectures in-place
|
||||
lipo -remove "$arch" -output "$binary" "$binary"
|
||||
stripped="$stripped $arch"
|
||||
fi
|
||||
done
|
||||
if [[ "$stripped" ]]; then
|
||||
echo "Stripped $binary of architectures:$stripped"
|
||||
fi
|
||||
STRIP_BINARY_RETVAL=0
|
||||
}
|
||||
|
||||
# Copies the bcsymbolmap files of a vendored framework
|
||||
install_bcsymbolmap() {
|
||||
local bcsymbolmap_path="$1"
|
||||
local destination="${BUILT_PRODUCTS_DIR}"
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"
|
||||
}
|
||||
|
||||
# Signs a framework with the provided identity
|
||||
code_sign_if_enabled() {
|
||||
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
|
||||
# Use the current code_sign_identity
|
||||
echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
|
||||
local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
|
||||
|
||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||
code_sign_cmd="$code_sign_cmd &"
|
||||
fi
|
||||
echo "$code_sign_cmd"
|
||||
eval "$code_sign_cmd"
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/Siren/Siren.framework"
|
||||
fi
|
||||
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/Siren/Siren.framework"
|
||||
fi
|
||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||
wait
|
||||
fi
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double Pods_Example_TestsVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char Pods_Example_TestsVersionString[];
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
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) /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
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
framework module Pods_Example_Tests {
|
||||
umbrella header "Pods-Example-Tests-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
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) /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
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
@@ -0,0 +1,26 @@
|
||||
<?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>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
# Acknowledgements
|
||||
This application makes use of the following third party libraries:
|
||||
|
||||
## Siren
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Arthur Ariel Sabintsev
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
|
||||
Generated by CocoaPods - https://cocoapods.org
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
<?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>PreferenceSpecifiers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>This application makes use of the following third party libraries:</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Arthur Ariel Sabintsev
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
</string>
|
||||
<key>License</key>
|
||||
<string>MIT</string>
|
||||
<key>Title</key>
|
||||
<string>Siren</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Generated by CocoaPods - https://cocoapods.org</string>
|
||||
<key>Title</key>
|
||||
<string></string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>StringsTable</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_Pods_Example : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_Pods_Example
|
||||
@end
|
||||
+186
@@ -0,0 +1,186 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
function on_error {
|
||||
echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
|
||||
}
|
||||
trap 'on_error $LINENO' ERR
|
||||
|
||||
if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
|
||||
# If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
|
||||
# frameworks to, so exit 0 (signalling the script phase was successful).
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
|
||||
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
|
||||
BCSYMBOLMAP_DIR="BCSymbolMaps"
|
||||
|
||||
|
||||
# This protects against multiple targets copying the same framework dependency at the same time. The solution
|
||||
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
|
||||
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
|
||||
|
||||
# Copies and strips a vendored framework
|
||||
install_framework()
|
||||
{
|
||||
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
|
||||
local source="${BUILT_PRODUCTS_DIR}/$1"
|
||||
elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
|
||||
local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
|
||||
elif [ -r "$1" ]; then
|
||||
local source="$1"
|
||||
fi
|
||||
|
||||
local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
if [ -L "${source}" ]; then
|
||||
echo "Symlinked..."
|
||||
source="$(readlink "${source}")"
|
||||
fi
|
||||
|
||||
if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then
|
||||
# Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied
|
||||
find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do
|
||||
echo "Installing $f"
|
||||
install_bcsymbolmap "$f" "$destination"
|
||||
rm "$f"
|
||||
done
|
||||
rmdir "${source}/${BCSYMBOLMAP_DIR}"
|
||||
fi
|
||||
|
||||
# Use filter instead of exclude so missing patterns don't throw errors.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
|
||||
|
||||
local basename
|
||||
basename="$(basename -s .framework "$1")"
|
||||
binary="${destination}/${basename}.framework/${basename}"
|
||||
|
||||
if ! [ -r "$binary" ]; then
|
||||
binary="${destination}/${basename}"
|
||||
elif [ -L "${binary}" ]; then
|
||||
echo "Destination binary is symlinked..."
|
||||
dirname="$(dirname "${binary}")"
|
||||
binary="${dirname}/$(readlink "${binary}")"
|
||||
fi
|
||||
|
||||
# Strip invalid architectures so "fat" simulator / device frameworks work on device
|
||||
if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
|
||||
strip_invalid_archs "$binary"
|
||||
fi
|
||||
|
||||
# Resign the code if required by the build settings to avoid unstable apps
|
||||
code_sign_if_enabled "${destination}/$(basename "$1")"
|
||||
|
||||
# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
|
||||
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
|
||||
local swift_runtime_libs
|
||||
swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u)
|
||||
for lib in $swift_runtime_libs; do
|
||||
echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
|
||||
rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
|
||||
code_sign_if_enabled "${destination}/${lib}"
|
||||
done
|
||||
fi
|
||||
}
|
||||
# Copies and strips a vendored dSYM
|
||||
install_dsym() {
|
||||
local source="$1"
|
||||
warn_missing_arch=${2:-true}
|
||||
if [ -r "$source" ]; then
|
||||
# Copy the dSYM into the targets temp dir.
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
|
||||
|
||||
local basename
|
||||
basename="$(basename -s .dSYM "$source")"
|
||||
binary_name="$(ls "$source/Contents/Resources/DWARF")"
|
||||
binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}"
|
||||
|
||||
# Strip invalid architectures from the dSYM.
|
||||
if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then
|
||||
strip_invalid_archs "$binary" "$warn_missing_arch"
|
||||
fi
|
||||
if [[ $STRIP_BINARY_RETVAL == 0 ]]; then
|
||||
# Move the stripped file into its final destination.
|
||||
echo "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}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
|
||||
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
|
||||
}
|
||||
|
||||
# Used as a return value for each invocation of `strip_invalid_archs` function.
|
||||
STRIP_BINARY_RETVAL=0
|
||||
|
||||
# Strip invalid architectures
|
||||
strip_invalid_archs() {
|
||||
binary="$1"
|
||||
warn_missing_arch=${2:-true}
|
||||
# Get architectures for current target binary
|
||||
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
|
||||
# Intersect them with the architectures we are building for
|
||||
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
|
||||
# If there are no archs supported by this binary then warn the user
|
||||
if [[ -z "$intersected_archs" ]]; then
|
||||
if [[ "$warn_missing_arch" == "true" ]]; then
|
||||
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
|
||||
fi
|
||||
STRIP_BINARY_RETVAL=1
|
||||
return
|
||||
fi
|
||||
stripped=""
|
||||
for arch in $binary_archs; do
|
||||
if ! [[ "${ARCHS}" == *"$arch"* ]]; then
|
||||
# Strip non-valid architectures in-place
|
||||
lipo -remove "$arch" -output "$binary" "$binary"
|
||||
stripped="$stripped $arch"
|
||||
fi
|
||||
done
|
||||
if [[ "$stripped" ]]; then
|
||||
echo "Stripped $binary of architectures:$stripped"
|
||||
fi
|
||||
STRIP_BINARY_RETVAL=0
|
||||
}
|
||||
|
||||
# Copies the bcsymbolmap files of a vendored framework
|
||||
install_bcsymbolmap() {
|
||||
local bcsymbolmap_path="$1"
|
||||
local destination="${BUILT_PRODUCTS_DIR}"
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}""
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"
|
||||
}
|
||||
|
||||
# Signs a framework with the provided identity
|
||||
code_sign_if_enabled() {
|
||||
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
|
||||
# Use the current code_sign_identity
|
||||
echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
|
||||
local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
|
||||
|
||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||
code_sign_cmd="$code_sign_cmd &"
|
||||
fi
|
||||
echo "$code_sign_cmd"
|
||||
eval "$code_sign_cmd"
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/Siren/Siren.framework"
|
||||
fi
|
||||
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||
install_framework "${BUILT_PRODUCTS_DIR}/Siren/Siren.framework"
|
||||
fi
|
||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||
wait
|
||||
fi
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
function on_error {
|
||||
echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
|
||||
}
|
||||
trap 'on_error $LINENO' ERR
|
||||
|
||||
if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
|
||||
# If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
|
||||
# resources to, so exit 0 (signalling the script phase was successful).
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
|
||||
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
|
||||
> "$RESOURCES_TO_COPY"
|
||||
|
||||
XCASSET_FILES=()
|
||||
|
||||
# This protects against multiple targets copying the same framework dependency at the same time. The solution
|
||||
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
|
||||
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
|
||||
|
||||
case "${TARGETED_DEVICE_FAMILY:-}" in
|
||||
1,2)
|
||||
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
|
||||
;;
|
||||
1)
|
||||
TARGET_DEVICE_ARGS="--target-device iphone"
|
||||
;;
|
||||
2)
|
||||
TARGET_DEVICE_ARGS="--target-device ipad"
|
||||
;;
|
||||
3)
|
||||
TARGET_DEVICE_ARGS="--target-device tv"
|
||||
;;
|
||||
4)
|
||||
TARGET_DEVICE_ARGS="--target-device watch"
|
||||
;;
|
||||
*)
|
||||
TARGET_DEVICE_ARGS="--target-device mac"
|
||||
;;
|
||||
esac
|
||||
|
||||
install_resource()
|
||||
{
|
||||
if [[ "$1" = /* ]] ; then
|
||||
RESOURCE_PATH="$1"
|
||||
else
|
||||
RESOURCE_PATH="${PODS_ROOT}/$1"
|
||||
fi
|
||||
if [[ ! -e "$RESOURCE_PATH" ]] ; then
|
||||
cat << EOM
|
||||
error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
|
||||
EOM
|
||||
exit 1
|
||||
fi
|
||||
case $RESOURCE_PATH in
|
||||
*.storyboard)
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.xib)
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.framework)
|
||||
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
|
||||
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
;;
|
||||
*.xcdatamodel)
|
||||
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
|
||||
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
|
||||
;;
|
||||
*.xcdatamodeld)
|
||||
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
|
||||
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
|
||||
;;
|
||||
*.xcmappingmodel)
|
||||
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
|
||||
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
|
||||
;;
|
||||
*.xcassets)
|
||||
ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
|
||||
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
|
||||
;;
|
||||
*)
|
||||
echo "$RESOURCE_PATH" || true
|
||||
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||
install_resource "${PODS_ROOT}/../../Sources/Siren.bundle"
|
||||
fi
|
||||
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||
install_resource "${PODS_ROOT}/../../Sources/Siren.bundle"
|
||||
fi
|
||||
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
|
||||
mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
fi
|
||||
rm -f "$RESOURCES_TO_COPY"
|
||||
|
||||
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
|
||||
then
|
||||
# Find all other xcassets (this unfortunately includes those of path pods and other targets).
|
||||
OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
|
||||
while read line; do
|
||||
if [[ $line != "${PODS_ROOT}*" ]]; then
|
||||
XCASSET_FILES+=("$line")
|
||||
fi
|
||||
done <<<"$OTHER_XCASSETS"
|
||||
|
||||
if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
|
||||
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
else
|
||||
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
|
||||
fi
|
||||
fi
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double Pods_ExampleVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char Pods_ExampleVersionString[];
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
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) /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
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
@@ -0,0 +1,6 @@
|
||||
framework module Pods_Example {
|
||||
umbrella header "Pods-Example-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
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) /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
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
@@ -0,0 +1,26 @@
|
||||
<?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>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>6.0.2</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_Siren : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_Siren
|
||||
@end
|
||||
@@ -0,0 +1,12 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double SirenVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char SirenVersionString[];
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
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)
|
||||
PODS_ROOT = ${SRCROOT}
|
||||
PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
|
||||
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
@@ -0,0 +1,6 @@
|
||||
framework module Siren {
|
||||
umbrella header "Siren-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
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)
|
||||
PODS_ROOT = ${SRCROOT}
|
||||
PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
|
||||
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
|
||||
@@ -0,0 +1,9 @@
|
||||
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Siren
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings
|
||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}
|
||||
PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
@@ -1,28 +0,0 @@
|
||||
<?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>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.0.9</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,17 +0,0 @@
|
||||
//
|
||||
// Siren.h
|
||||
// Siren
|
||||
//
|
||||
// Created by Sabintsev, Arthur on 3/4/17.
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for Siren.
|
||||
FOUNDATION_EXPORT double SirenVersionNumber;
|
||||
|
||||
//! Project version string for Siren.
|
||||
FOUNDATION_EXPORT const unsigned char SirenVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <Siren/PublicHeader.h>
|
||||
@@ -16,8 +16,6 @@
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
|
||||
@@ -15,6 +15,14 @@ final class SirenTests: XCTestCase {
|
||||
|
||||
}
|
||||
|
||||
// MARK: - API
|
||||
|
||||
extension SirenTests {
|
||||
func testAPIDefaultsToUnitedStatesAppStore() {
|
||||
XCTAssertEqual(siren.apiManager.country, AppStoreCountry.unitedStates)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Updates
|
||||
|
||||
extension SirenTests {
|
||||
@@ -220,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")
|
||||
@@ -343,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), "Αναβάθμιση")
|
||||
}
|
||||
@@ -525,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
|
||||
|
||||
@@ -616,6 +624,22 @@ extension SirenTests {
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Actualizar")
|
||||
}
|
||||
|
||||
func testRomanianLocalization() {
|
||||
let language: Localization.Language = .romanian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Actualizare disponibilă")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Data viitoare")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Ignor această versiune")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Actualizare")
|
||||
}
|
||||
|
||||
func testRussianLocalization() {
|
||||
let language: Localization.Language = .russian
|
||||
|
||||
@@ -749,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
|
||||
|
||||
@@ -775,7 +799,7 @@ extension SirenTests {
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "اپڈیٹ کریں")
|
||||
}
|
||||
|
||||
|
||||
func testVietnameseLocalization() {
|
||||
let language: Localization.Language = .vietnamese
|
||||
|
||||
@@ -791,5 +815,5 @@ extension SirenTests {
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Cập nhật")
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "cocoapods"
|
||||
gem "jazzy", :git => "https://www.github.com/realm/jazzy.git"
|
||||
gem "rubygems-bundler"
|
||||
-114
@@ -1,114 +0,0 @@
|
||||
GIT
|
||||
remote: https://www.github.com/realm/jazzy.git
|
||||
revision: 916cf729525040c43ea31fc55a3730dee04f1a29
|
||||
specs:
|
||||
jazzy (0.9.4)
|
||||
cocoapods (~> 1.5.3)
|
||||
mustache (~> 1.1.0)
|
||||
open4
|
||||
redcarpet (~> 3.4.0)
|
||||
rouge (>= 2.0.6, < 4.0)
|
||||
sass (~> 3.6.0)
|
||||
sqlite3 (~> 1.3.13)
|
||||
xcinvoke (~> 0.3.0)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (3.0.0)
|
||||
activesupport (4.2.10)
|
||||
i18n (~> 0.7)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
atomos (0.1.3)
|
||||
bundler-unload (1.0.2)
|
||||
claide (1.0.2)
|
||||
cocoapods (1.5.3)
|
||||
activesupport (>= 4.0.2, < 5)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
cocoapods-core (= 1.5.3)
|
||||
cocoapods-deintegrate (>= 1.0.2, < 2.0)
|
||||
cocoapods-downloader (>= 1.2.0, < 2.0)
|
||||
cocoapods-plugins (>= 1.0.0, < 2.0)
|
||||
cocoapods-search (>= 1.0.0, < 2.0)
|
||||
cocoapods-stats (>= 1.0.0, < 2.0)
|
||||
cocoapods-trunk (>= 1.3.0, < 2.0)
|
||||
cocoapods-try (>= 1.1.0, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
escape (~> 0.0.4)
|
||||
fourflusher (~> 2.0.1)
|
||||
gh_inspector (~> 1.0)
|
||||
molinillo (~> 0.6.5)
|
||||
nap (~> 1.0)
|
||||
ruby-macho (~> 1.1)
|
||||
xcodeproj (>= 1.5.7, < 2.0)
|
||||
cocoapods-core (1.5.3)
|
||||
activesupport (>= 4.0.2, < 6)
|
||||
fuzzy_match (~> 2.0.4)
|
||||
nap (~> 1.0)
|
||||
cocoapods-deintegrate (1.0.2)
|
||||
cocoapods-downloader (1.2.2)
|
||||
cocoapods-plugins (1.0.0)
|
||||
nap
|
||||
cocoapods-search (1.0.0)
|
||||
cocoapods-stats (1.0.0)
|
||||
cocoapods-trunk (1.3.1)
|
||||
nap (>= 0.8, < 2.0)
|
||||
netrc (~> 0.11)
|
||||
cocoapods-try (1.1.0)
|
||||
colored2 (3.1.2)
|
||||
concurrent-ruby (1.0.5)
|
||||
escape (0.0.4)
|
||||
executable-hooks (1.6.0)
|
||||
ffi (1.9.25)
|
||||
fourflusher (2.0.1)
|
||||
fuzzy_match (2.0.4)
|
||||
gh_inspector (1.1.3)
|
||||
i18n (0.9.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
liferaft (0.0.6)
|
||||
minitest (5.11.3)
|
||||
molinillo (0.6.6)
|
||||
mustache (1.1.0)
|
||||
nanaimo (0.2.6)
|
||||
nap (1.1.0)
|
||||
netrc (0.11.0)
|
||||
open4 (1.3.4)
|
||||
rb-fsevent (0.10.3)
|
||||
rb-inotify (0.9.10)
|
||||
ffi (>= 0.5.0, < 2)
|
||||
redcarpet (3.4.0)
|
||||
rouge (3.3.0)
|
||||
ruby-macho (1.3.1)
|
||||
rubygems-bundler (1.4.5)
|
||||
bundler-unload (>= 1.0.2)
|
||||
executable-hooks (>= 1.5.0)
|
||||
sass (3.6.0)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
sqlite3 (1.3.13)
|
||||
thread_safe (0.3.6)
|
||||
tzinfo (1.2.5)
|
||||
thread_safe (~> 0.1)
|
||||
xcinvoke (0.3.0)
|
||||
liferaft (~> 0.0.6)
|
||||
xcodeproj (1.7.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
nanaimo (~> 0.2.6)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
cocoapods
|
||||
jazzy!
|
||||
rubygems-bundler
|
||||
|
||||
BUNDLED WITH
|
||||
1.17.1
|
||||
+6
-1
@@ -1,5 +1,10 @@
|
||||
// swift-tools-version:5.5
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "Siren"
|
||||
name: "Siren",
|
||||
platforms: [.iOS(.v13), .tvOS(.v13)],
|
||||
products: [.library(name: "Siren", targets: ["Siren"])],
|
||||
targets: [.target(name: "Siren", path: "Sources", resources: [.copy("Siren.bundle"), .copy("PrivacyInfo.xcprivacy")])],
|
||||
swiftLanguageVersions: [.v5]
|
||||
)
|
||||
|
||||
@@ -2,28 +2,42 @@
|
||||
|
||||
### Notify users when a new version of your app is available and prompt them to upgrade.
|
||||
|
||||
[](https://travis-ci.org/ArtSabintsev/Siren)   [](https://cocoapods.org/pods/Siren) [](https://github.com/Carthage/Carthage) [](https://swift.org/package-manager/)
|
||||
 [](https://cocoapods.org/pods/Siren) [](https://swift.org/package-manager/) [](https://github.com/JamitLabs/Accio)
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
- [About](https://github.com/ArtSabintsev/Siren#about)
|
||||
- [Features](https://github.com/ArtSabintsev/Siren#features)
|
||||
- [Screenshots](https://github.com/ArtSabintsev/Siren#screenshots)
|
||||
- [Installation Instructions](https://github.com/ArtSabintsev/Siren#installation-instructions)
|
||||
- [Implementation Examples](https://github.com/ArtSabintsev/Siren#implementation-examples)
|
||||
- [Localization](https://github.com/ArtSabintsev/Siren#localization)
|
||||
- [Device Compatibility](https://github.com/ArtSabintsev/Siren#device-compatibility)
|
||||
- [Testing Siren](https://github.com/ArtSabintsev/Siren#testing-siren)
|
||||
- [App Store Review & Submissions](https://github.com/ArtSabintsev/Siren#app-store-submissions)
|
||||
- [Phased Releases](https://github.com/ArtSabintsev/Siren#phased-releases)
|
||||
- [Words of Caution](https://github.com/ArtSabintsev/Siren#words-of-caution)
|
||||
- [Ports](https://github.com/ArtSabintsev/Siren#ports)
|
||||
- [Special Thanks](https://github.com/ArtSabintsev/Siren#special-thanks)
|
||||
- [Attribution](https://github.com/ArtSabintsev/Siren#created-and-maintained-by)
|
||||
# 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.
|
||||
|
||||
---
|
||||
|
||||
# Table of Contents
|
||||
- [**Meta**](https://github.com/ArtSabintsev/Siren#meta)
|
||||
- [About](https://github.com/ArtSabintsev/Siren#about)
|
||||
- [Features](https://github.com/ArtSabintsev/Siren#features)
|
||||
- [Screenshots](https://github.com/ArtSabintsev/Siren#screenshots)
|
||||
- [Ports](https://github.com/ArtSabintsev/Siren#ports)
|
||||
- [**Installation and Integration**](https://github.com/ArtSabintsev/Siren#installation-and-integration)
|
||||
- [Installation Instructions](https://github.com/ArtSabintsev/Siren#installation-instructions)
|
||||
- [Implementation Examples](https://github.com/ArtSabintsev/Siren#implementation-examples)
|
||||
- [**Device-Specific Checks**](https://github.com/ArtSabintsev/Siren#device-specific-checks)
|
||||
- [Localization](https://github.com/ArtSabintsev/Siren#localization)
|
||||
- [Device Compatibility](https://github.com/ArtSabintsev/Siren#device-compatibility)
|
||||
- [**Testing**](https://github.com/ArtSabintsev/Siren#testing)
|
||||
- [Testing Siren Locally](https://github.com/ArtSabintsev/Siren#testing-siren-locally)
|
||||
- [Words of Caution](https://github.com/ArtSabintsev/Siren#words-of-caution)
|
||||
- [**App Submission**](https://github.com/ArtSabintsev/Siren#app-submission)
|
||||
- [App Store Review](https://github.com/ArtSabintsev/Siren#app-store-review)
|
||||
- [Phased Releases](https://github.com/ArtSabintsev/Siren#phased-releases)
|
||||
- [**Attribution**](https://github.com/ArtSabintsev/Siren#attribution)
|
||||
- [Special Thanks](https://github.com/ArtSabintsev/Siren#special-thanks)
|
||||
- [Creator](https://github.com/ArtSabintsev/Siren#creator)
|
||||
|
||||
---
|
||||
|
||||
# Meta
|
||||
|
||||
## About
|
||||
**Siren** checks a user's currently installed version of your iOS app against the version that is currently available in the App Store.
|
||||
|
||||
@@ -36,18 +50,14 @@ Siren is built to work with the [**Semantic Versioning**](https://semver.org/) s
|
||||
## Features
|
||||
|
||||
### Current Features
|
||||
- [x] CocoaPods, Carthage, and Swift Package Manager Support (see [Installation Instructions](https://github.com/ArtSabintsev/Siren#installation-instructions))
|
||||
- [x] Compatible with iOS 13+ and tvOS 13+
|
||||
- [x] CocoaPods and Swift Package Manager Support (see [Installation Instructions](https://github.com/ArtSabintsev/Siren#installation-instructions))
|
||||
- [x] Three Types of Alerts (see [Screenshots](https://github.com/ArtSabintsev/Siren#screenshots))
|
||||
- [x] Highly Customizable Presentation Rules (see [Implementation Examples](https://github.com/ArtSabintsev/Siren#implementation-examples))
|
||||
- [x] Localized for 40+ Languages (see [Localization](https://github.com/ArtSabintsev/Siren#localization))
|
||||
- [x] Device Compatibility Check (see [Device Compatibility](https://github.com/ArtSabintsev/Siren#device-compatibility))
|
||||
- [x] 100% Documentation Coverage (see https://sabintsev.com/Siren)
|
||||
|
||||
### Future Features
|
||||
- [ ] Present prompt only on WiFi if app is over the OTA limit.
|
||||
- [ ] Support for Third-Party/Homegrown Update Servers (not including TestFlight).
|
||||
- [ ] Increase code coverage with more unit tests and UI tests.
|
||||
|
||||
---
|
||||
|
||||
## Screenshots
|
||||
- The **left picture** forces the user to update the app.
|
||||
@@ -57,101 +67,6 @@ Siren is built to work with the [**Semantic Versioning**](https://semver.org/) s
|
||||
|
||||
<img src="https://github.com/ArtSabintsev/Siren/blob/master/Assets/picForcedUpdate.png?raw=true" height="480"><img src="https://github.com/ArtSabintsev/Siren/blob/master/Assets/picOptionalUpdate.png?raw=true" height="480"><img src="https://github.com/ArtSabintsev/Siren/blob/master/Assets/picSkippedUpdate.png?raw=true" height="480">
|
||||
|
||||
|
||||
## Installation Instructions
|
||||
|
||||
| Swift Version | Branch Name | Will Continue to Receive Updates?
|
||||
| ------------- | ------------- | -------------
|
||||
| 4.2 | master | **Yes**
|
||||
| 4.1 | swift4.1 | No
|
||||
| 3.2 | swift3.2 | No
|
||||
| 3.1 | swift3.1 | No
|
||||
| 2.3 | swift2.3 | No
|
||||
|
||||
### CocoaPods
|
||||
```ruby
|
||||
pod 'Siren' # Swift 4.2
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift4.1' # Swift 4.1
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.2' # Swift 3.2
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.1' # Swift 3.1
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift2.3' # Swift 2.3
|
||||
```
|
||||
|
||||
### Carthage
|
||||
```swift
|
||||
github "ArtSabintsev/Siren" // Swift 4.2
|
||||
github "ArtSabintsev/Siren" "swift4.1" // Swift 4.1
|
||||
github "ArtSabintsev/Siren" "swift3.2" // Swift 3.2
|
||||
github "ArtSabintsev/Siren" "swift3.1" // Swift 3.1
|
||||
github "ArtSabintsev/Siren" "swift2.3" // Swift 2.3
|
||||
```
|
||||
|
||||
### Swift Package Manager
|
||||
```swift
|
||||
.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 4)
|
||||
```
|
||||
|
||||
## Implementation Examples
|
||||
Implementing Siren is as easy as adding two lines of code to your app:
|
||||
|
||||
```swift
|
||||
import Siren // Line 1
|
||||
import UIKit
|
||||
|
||||
@UIApplicationMain
|
||||
final class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
var window: UIWindow?
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
|
||||
window?.makeKeyAndVisible()
|
||||
|
||||
Siren.shared.wail() // Line 2
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Siren also has plenty of customization options. All examples can be found in the Example Project's [**AppDelegate**](https://github.com/ArtSabintsev/Siren/blob/master/Example/Example/AppDelegate.swift) file. Uncomment the example you'd like to test.
|
||||
|
||||
|
||||
**WARNING**: Siren should ONLY be placed in [UIApplication.didFinishLaunchingWithOptions](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622921-application) and only after the `window?.makeKeyAndVisible()` call. Siren initializes a listener on [didBecomeActiveNotification](https://developer.apple.com/reference/foundation/nsnotification.name/1622953-uiapplicationdidbecomeactive) to perform version checks.
|
||||
|
||||
## Localization
|
||||
Siren is localized for the following languages:
|
||||
|
||||
Arabic, Armenian, Basque, Chinese (Simplified and Traditional), Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hebrew, Hungarian, Indonesian, Italian, Japanese, Korean, Latvian, Lithuanian, Malay, Norwegian (Bokmål), Persian (Afghanistan, Iran, Persian), Polish, Portuguese (Brazil and Portugal), Russian, Serbian (Cyrillic and Latin), Slovenian, Spanish, Swedish, Thai, Turkish, Ukrainian, Urdu, Vietnamese
|
||||
|
||||
If your user's device is set to one of the supported locales, an update message will appear in that language. If a locale is not supported, than the message will appear in English.
|
||||
|
||||
You may want the update dialog to *always* appear in a certain language, ignoring the user's device-specific setting. You can enable it like so:
|
||||
|
||||
```swift
|
||||
// In this example, we force the `russian` language.
|
||||
Siren.shared.presentationManager = PresentationManager(forceLanguageLocalization: .russian)
|
||||
```
|
||||
|
||||
## Device Compatibility
|
||||
If an app update is available, Siren checks to make sure that the version of iOS on the user's device is compatible with the one that is required by the app update. For example, if a user has iOS 11 installed on their device, but the app update requires iOS 12, an alert will not be shown. This takes care of the *false positive* case regarding app updating.
|
||||
|
||||
## Testing Siren
|
||||
Temporarily change the version string in Xcode (within the `.xcodeproj` file) to an older version than the one that's currently available in the App Store. Afterwards, build and run your app, and you should see the alert.
|
||||
|
||||
If you currently don't have an app in the store, change your bundleID to one that is already in the store. In the sample app packaged with this library, we use the [App Store Connect](https://itunes.apple.com/app/id1234793120) app's bundleID: `com.apple.AppStoreConnect`.
|
||||
|
||||
## App Store Submissions
|
||||
The App Store reviewer will **not** see the alert. The version in the App Store will always be older than the version being reviewed.
|
||||
|
||||
## Phased Releases
|
||||
In 2017, Apple announced the [ability to rollout app updates gradually (a.k.a. Phased Releases)](https://itunespartner.apple.com/en/apps/faq/Managing%20Your%20Apps_Submission%20Process). Siren will continue to work as it has in the past, presenting an update modal to _all_ users. If you opt-in to a phased rollout for a specific version, you have a few choices:
|
||||
|
||||
- You can leave Siren configured as normal. Phased rollout will continue to auto-update apps. Since all users can still manually update your app directly from the App Store, Siren will ignore the phased rollout and will prompt users to update.
|
||||
- You can set `showAlertAfterCurrentVersionHasBeenReleasedForDays` to `7`, and Siren will not prompt any users until the latest version is 7 days old, after the phased rollout is complete.
|
||||
- You can remotely disable Siren until the rollout is done using your own API / backend logic.
|
||||
|
||||
## Words of Caution
|
||||
Occasionally, the iTunes JSON will update faster than the App Store CDN, meaning the JSON may state that the new version of the app has been released, while no new binary is made available for download via the App Store. It is for this reason that Siren will, by default, wait 1 day (24 hours) after the JSON has been updated to prompt the user to update. To change the default setting, please modify the value of `showAlertAfterCurrentVersionHasBeenReleasedForDays`.
|
||||
|
||||
## Ports
|
||||
- **Objective-C (iOS)**
|
||||
- [**Harpy**](https://github.com/ArtSabintsev/Harpy)
|
||||
@@ -164,6 +79,134 @@ Occasionally, the iTunes JSON will update faster than the App Store CDN, meaning
|
||||
- [**Gant Laborde's Siren library**](https://github.com/GantMan/react-native-siren)
|
||||
- The Siren Swift library inspired the React Native library.
|
||||
|
||||
---
|
||||
|
||||
# Installation and Integration
|
||||
|
||||
## Installation Instructions
|
||||
|
||||
| Swift Version | Branch Name | Will Continue to Receive Updates?
|
||||
| ------------- | ------------- | -------------
|
||||
| 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
|
||||
| 3.2 | swift3.2 | No
|
||||
| 3.1 | swift3.1 | No
|
||||
| 2.3 | swift2.3 | No
|
||||
|
||||
### CocoaPods
|
||||
```ruby
|
||||
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
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.2' # Swift 3.2
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.1' # Swift 3.1
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift2.3' # Swift 2.3
|
||||
```
|
||||
|
||||
### Swift Package Manager
|
||||
```swift
|
||||
.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 6)
|
||||
```
|
||||
|
||||
## Implementation Examples
|
||||
Implementing Siren is as easy as adding two lines of code to your app in **either** `AppDelegate.swift` or `SceneDelegate.swift`:
|
||||
|
||||
### AppDelegate.swift Example
|
||||
```swift
|
||||
import Siren // Line 1
|
||||
import UIKit
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
var window: UIWindow?
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
|
||||
window?.makeKeyAndVisible()
|
||||
|
||||
Siren.shared.wail() // Line 2
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### SceneDelegate.swift Example
|
||||
```swift
|
||||
import Siren // Line 1
|
||||
import UIKit
|
||||
|
||||
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
|
||||
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
|
||||
window?.makeKeyAndVisible()
|
||||
|
||||
Siren.shared.wail() // Line 2
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Siren also has plenty of customization options. All examples can be found in the Example Project's [**AppDelegate**](https://github.com/ArtSabintsev/Siren/blob/master/Example/Example/AppDelegate.swift) file. Uncomment the example you'd like to test.
|
||||
|
||||
---
|
||||
|
||||
# Device-Specific Checks
|
||||
|
||||
## Localization
|
||||
Siren is localized for the following languages:
|
||||
|
||||
Arabic, Armenian, Basque, Chinese (Simplified and Traditional), Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hebrew, Hungarian, Indonesian, Italian, Japanese, Korean, Latvian, Lithuanian, Malay, Norwegian (Bokmål), Persian (Afghanistan, Iran, Persian), Polish, Portuguese (Brazil and Portugal), Romanian, Russian, Serbian (Cyrillic and Latin), Slovenian, Spanish, Swedish, Thai, Turkish, Ukrainian, Urdu, Vietnamese
|
||||
|
||||
If your user's device is set to one of the supported locales, an update message will appear in that language. If a locale is not supported, than the message will appear in English.
|
||||
|
||||
You may want the update dialog to *always* appear in a certain language, ignoring the user's device-specific setting. You can enable it like so:
|
||||
|
||||
```swift
|
||||
// In this example, we force the `Russian` language.
|
||||
Siren.shared.presentationManager = PresentationManager(forceLanguageLocalization: .russian)
|
||||
```
|
||||
|
||||
## Device Compatibility
|
||||
If an app update is available, Siren checks to make sure that the version of iOS on the user's device is compatible with the one that is required by the app update. For example, if a user has iOS 11 installed on their device, but the app update requires iOS 12, an alert will not be shown. This takes care of the *false positive* case regarding app updating.
|
||||
|
||||
---
|
||||
|
||||
# Testing
|
||||
|
||||
## Testing Siren Locally
|
||||
Temporarily change the version string in Xcode (within the `.xcodeproj` file) to an older version than the one that's currently available in the App Store. Afterwards, build and run your app, and you should see the alert.
|
||||
|
||||
If you currently don't have an app in the store, change your bundleID to one that is already in the store. In the sample app packaged with this library, we use Facebook's Bundle ID: `com.facebook.Facebook`.
|
||||
|
||||
## Words of Caution
|
||||
Occasionally, the iTunes JSON will update faster than the App Store CDN, meaning the JSON may state that the new version of the app has been released, while no new binary is made available for download via the App Store. It is for this reason that Siren will, by default, wait 1 day (24 hours) after the JSON has been updated to prompt the user to update. To change the default setting, please modify the value of `showAlertAfterCurrentVersionHasBeenReleasedForDays`.
|
||||
|
||||
---
|
||||
|
||||
# App Submission
|
||||
|
||||
## App Store Review
|
||||
The App Store reviewer will **not** see the alert. The version in the App Store will always be older than the version being reviewed.
|
||||
|
||||
## Phased Releases
|
||||
In 2017, Apple announced the [ability to rollout app updates gradually (a.k.a. Phased Releases)](https://itunespartner.apple.com/en/apps/faq/Managing%20Your%20Apps_Submission%20Process). Siren will continue to work as it has in the past, presenting an update modal to _all_ users. If you opt-in to a phased rollout for a specific version, you have a few choices:
|
||||
|
||||
- You can leave Siren configured as normal. Phased rollout will continue to auto-update apps. Since all users can still manually update your app directly from the App Store, Siren will ignore the phased rollout and will prompt users to update.
|
||||
- You can set `showAlertAfterCurrentVersionHasBeenReleasedForDays` to `7`, and Siren will not prompt any users until the latest version is 7 days old, after the phased rollout is complete.
|
||||
- You can remotely disable Siren until the rollout is done using your own API / backend logic.
|
||||
|
||||
---
|
||||
|
||||
# Attribution
|
||||
|
||||
## Special Thanks
|
||||
A massive shout-out and thank you goes to the following folks:
|
||||
|
||||
@@ -171,5 +214,5 @@ A massive shout-out and thank you goes to the following folks:
|
||||
- All of [Harpy's Contributors](https://github.com/ArtSabintsev/Harpy/graphs/contributors) for helping building the feature set from 2012-2015 that was used as the basis for the first version of Siren.
|
||||
- All of [Siren's Contributors](https://github.com/ArtSabintsev/Siren/graphs/contributors) for helping make Siren as powerful and bug-free as it currently is today.
|
||||
|
||||
## Created and maintained by
|
||||
## Creator
|
||||
[Arthur Ariel Sabintsev](http://www.sabintsev.com/)
|
||||
|
||||
+8
-8
@@ -1,7 +1,7 @@
|
||||
Pod::Spec.new do |s|
|
||||
# Version
|
||||
s.version = "4.0.1"
|
||||
s.swift_version = '4.2'
|
||||
s.version = "6.1.3"
|
||||
s.swift_version = "5.5"
|
||||
|
||||
# Meta
|
||||
s.name = "Siren"
|
||||
@@ -14,10 +14,10 @@ Pod::Spec.new do |s|
|
||||
DESC
|
||||
|
||||
# Compatibility & Sources
|
||||
s.platform = :ios, "8.0"
|
||||
s.source = { :git => "https://github.com/ArtSabintsev/Siren.git", :tag => s.version.to_s }
|
||||
s.source_files = 'Sources/**/*.swift'
|
||||
s.resources = 'Sources/Siren.bundle'
|
||||
s.requires_arc = true
|
||||
|
||||
s.ios.deployment_target = '13.0'
|
||||
s.tvos.deployment_target = '13.0'
|
||||
s.source = { :git => "https://github.com/ArtSabintsev/Siren.git", :tag => s.version.to_s }
|
||||
s.source_files = 'Sources/**/*.swift'
|
||||
s.resources = 'Sources/Siren.bundle'
|
||||
s.requires_arc = true
|
||||
end
|
||||
|
||||
@@ -26,7 +26,7 @@ extension Bundle {
|
||||
static let table = "SirenLocalizable"
|
||||
}
|
||||
|
||||
/// Fetches the current verison of the app.
|
||||
/// Fetches the current version of the app.
|
||||
///
|
||||
/// - Returns: The current installed version of the app.
|
||||
final class func version() -> String? {
|
||||
@@ -82,7 +82,11 @@ private extension Bundle {
|
||||
///
|
||||
/// - Returns: The bundle's path or `nil`.
|
||||
final class func sirenBundlePath() -> String? {
|
||||
#if SWIFT_PACKAGE
|
||||
return Bundle.module.path(forResource: "\(Siren.self)", ofType: Constants.bundleExtension)
|
||||
#else
|
||||
return Bundle(for: Siren.self).path(forResource: "\(Siren.self)", ofType: Constants.bundleExtension)
|
||||
#endif
|
||||
}
|
||||
|
||||
/// The path for a particular language localizationin Siren's localization `Bundle`.
|
||||
|
||||
@@ -22,17 +22,19 @@ extension Date {
|
||||
|
||||
/// The amount of days passed from a specific source date string.
|
||||
///
|
||||
/// - Parameter dateString: The source date string.
|
||||
/// - Parameters:
|
||||
/// - dateString: The source date string.
|
||||
/// - Returns: The amount of days passed since the source date.
|
||||
static func days(since dateString: String) -> Int? {
|
||||
let dateformatter = DateFormatter()
|
||||
dateformatter.locale = Locale(identifier: "en_US_POSIX")
|
||||
dateformatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'"
|
||||
dateformatter.timeZone = TimeZone(secondsFromGMT: 0)
|
||||
|
||||
guard let releaseDate = dateformatter.date(from: dateString) else {
|
||||
guard let date = dateformatter.date(from: dateString) else {
|
||||
return nil
|
||||
}
|
||||
|
||||
return days(since: releaseDate)
|
||||
return days(since: date)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
// `UIAlertController` Extension for Siren.
|
||||
@@ -15,6 +14,7 @@ extension UIAlertController {
|
||||
///
|
||||
/// - Parameter window: The `UIWindow` that _should_ reference Siren's `UIAlertController`.
|
||||
func show(window: UIWindow) {
|
||||
guard !self.isBeingPresented else { return }
|
||||
window.makeKeyAndVisible()
|
||||
window.rootViewController?.present(self, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
@@ -23,15 +23,6 @@ extension UserDefaults {
|
||||
case StoredSkippedVersion
|
||||
}
|
||||
|
||||
/// Sets and Gets a `UserDefault` around performing a version check on a subsequent launch.
|
||||
static var shouldPerformVersionCheckOnSubsequentLaunch: Bool {
|
||||
get {
|
||||
return standard.bool(forKey: SirenKeys.PerformVersionCheckOnSubsequentLaunch.rawValue)
|
||||
} set {
|
||||
standard.set(newValue, forKey: SirenKeys.PerformVersionCheckOnSubsequentLaunch.rawValue)
|
||||
}
|
||||
}
|
||||
|
||||
/// Sets and Gets a `UserDefault` around storing a version that the user wants to skip updating.
|
||||
static var storedSkippedVersion: String? {
|
||||
get {
|
||||
|
||||
@@ -16,28 +16,36 @@ 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.
|
||||
static let tvSoftware = "tvSoftware"
|
||||
}
|
||||
|
||||
/// Return results or errors obtained from performing a version check with Siren.
|
||||
typealias CompletionHandler = (LookupModel?, KnownError?) -> Void
|
||||
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.
|
||||
/// By default, all version check requests are performed against the US App Store.
|
||||
/// If the app is not available in the US App Store, set it to the identifier of at least one App Store region within which it is available.
|
||||
///
|
||||
/// [List of country codes](https://help.apple.com/app-store-connect/#/dev997f9cf7c)
|
||||
///
|
||||
let countryCode: String?
|
||||
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.
|
||||
/// If the app is not available in the US App Store, set it to the identifier of at least one App Store region within which it is available.
|
||||
///
|
||||
/// [List of country codes](https://help.apple.com/app-store-connect/#/dev997f9cf7c)
|
||||
///
|
||||
/// - Parameter countryCode: The country code for the App Store in which the app is availabe. Defaults to nil (e.g., the US App Store)
|
||||
public init(countryCode: String? = nil) {
|
||||
self.countryCode = countryCode
|
||||
/// 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`.
|
||||
@@ -47,24 +55,29 @@ public struct APIManager {
|
||||
}
|
||||
|
||||
extension APIManager {
|
||||
/// Convenience initializer that initializes `APIManager` to the region or country of an App Store in which the app is available.
|
||||
/// If nil, version check requests are performed against the US App Store.
|
||||
///
|
||||
/// - Parameter countryCode: The raw country code for the App Store in which the app is available.
|
||||
public init(countryCode: String?) {
|
||||
self.init(country: .init(code: countryCode))
|
||||
}
|
||||
|
||||
/// 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?(nil, .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?(nil, .malformedURL)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,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?(nil, .appStoreDataRetrievalFailure(underlyingError: error))
|
||||
} else {
|
||||
guard let data = data else {
|
||||
handler?(nil, .appStoreDataRetrievalFailure(underlyingError: nil))
|
||||
return
|
||||
}
|
||||
do {
|
||||
let lookupModel = try JSONDecoder().decode(LookupModel.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 !lookupModel.results.isEmpty else {
|
||||
handler?(nil, .appStoreDataRetrievalEmptyResults)
|
||||
return
|
||||
}
|
||||
|
||||
DispatchQueue.main.async {
|
||||
handler?(lookupModel, nil)
|
||||
}
|
||||
} catch {
|
||||
handler?(nil, .appStoreJSONParsingFailure(underlyingError: error))
|
||||
guard !apiModel.results.isEmpty else {
|
||||
throw KnownError.appStoreDataRetrievalEmptyResults
|
||||
}
|
||||
|
||||
return apiModel
|
||||
} catch {
|
||||
throw KnownError.appStoreJSONParsingFailure(underlyingError: error)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,12 +113,22 @@ 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 let countryCode = countryCode {
|
||||
#if os(tvOS)
|
||||
let tvOSQueryItem = URLQueryItem(name: Constants.entity, value: Constants.tvSoftware)
|
||||
items.append(tvOSQueryItem)
|
||||
#endif
|
||||
|
||||
if let countryCode = country.code {
|
||||
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
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
/// PresentationManager for Siren
|
||||
public struct PresentationManager {
|
||||
public class PresentationManager {
|
||||
/// Return results or errors obtained from performing a version check with Siren.
|
||||
typealias CompletionHandler = (AlertAction) -> Void
|
||||
typealias CompletionHandler = (AlertAction, String?) -> Void
|
||||
|
||||
/// The localization data structure that will be used to construct localized strings for the update alert.
|
||||
let localization: Localization
|
||||
@@ -38,12 +38,7 @@ public struct PresentationManager {
|
||||
var alertController: UIAlertController?
|
||||
|
||||
/// The `UIWindow` instance that presents the `SirenViewController`.
|
||||
private var updaterWindow: UIWindow {
|
||||
let window = UIWindow(frame: UIScreen.main.bounds)
|
||||
window.rootViewController = SirenViewController()
|
||||
window.windowLevel = UIWindow.Level.alert + 1
|
||||
return window
|
||||
}
|
||||
private lazy var updaterWindow = createWindow()
|
||||
|
||||
/// `PresentationManager`'s public initializer.
|
||||
///
|
||||
@@ -82,6 +77,8 @@ public struct PresentationManager {
|
||||
public static let `default` = PresentationManager()
|
||||
}
|
||||
|
||||
// MARK: - Alert Lifecycle
|
||||
|
||||
extension PresentationManager {
|
||||
|
||||
/// Constructs the localized update alert `UIAlertController` object.
|
||||
@@ -90,9 +87,9 @@ extension PresentationManager {
|
||||
/// - rules: The rules that are used to define the type of alert that should be presented.
|
||||
/// - currentAppStoreVersion: The current version of the app in the App Store.
|
||||
/// - handler: The completion handler that returns the an `AlertAction` depending on the type of action the end-user took.
|
||||
mutating func presentAlert(withRules rules: Rules,
|
||||
forCurrentAppStoreVersion currentAppStoreVersion: String,
|
||||
completion handler: CompletionHandler?) {
|
||||
func presentAlert(withRules rules: Rules,
|
||||
forCurrentAppStoreVersion currentAppStoreVersion: String,
|
||||
completion handler: CompletionHandler?) {
|
||||
UserDefaults.alertPresentationDate = Date()
|
||||
|
||||
// Alert Title
|
||||
@@ -123,44 +120,56 @@ extension PresentationManager {
|
||||
case .force:
|
||||
alertController?.addAction(updateAlertAction(completion: handler))
|
||||
case .option:
|
||||
|
||||
alertController?.addAction(updateAlertAction(completion: handler))
|
||||
alertController?.addAction(nextTimeAlertAction(completion: handler))
|
||||
alertController?.addAction(updateAlertAction(completion: handler))
|
||||
case .skip:
|
||||
alertController?.addAction(updateAlertAction(completion: handler))
|
||||
alertController?.addAction(nextTimeAlertAction(completion: handler))
|
||||
alertController?.addAction(skipAlertAction(forCurrentAppStoreVersion: currentAppStoreVersion, completion: handler))
|
||||
case .none:
|
||||
handler?(.unknown)
|
||||
handler?(.unknown, nil)
|
||||
}
|
||||
|
||||
// If the alertType is .none, an alert will not be presented.
|
||||
// If the `updaterWindow` is not hidden, than an alert is already presented.
|
||||
// The latter prevents `UIAlertControllers` from appearing on top of each other.
|
||||
if rules.alertType != .none && updaterWindow.isHidden {
|
||||
// If the `updaterWindow` is not hidden, then an alert is already presented.
|
||||
// The latter prevents `UIAlertController`'s from appearing on top of each other.
|
||||
if rules.alertType != .none, let updaterWindow = updaterWindow, updaterWindow.isHidden {
|
||||
alertController?.show(window: updaterWindow)
|
||||
|
||||
} else {
|
||||
// This is a safety precaution to avoid multiple windows from presenting on top of each other.
|
||||
cleanUp()
|
||||
}
|
||||
}
|
||||
|
||||
/// Removes the `alertController` from memory.
|
||||
func cleanUp() {
|
||||
guard let updaterWindow = updaterWindow else { return }
|
||||
alertController?.hide(window: updaterWindow)
|
||||
alertController?.dismiss(animated: true, completion: nil)
|
||||
updaterWindow.resignKey()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Alert Actions
|
||||
|
||||
private extension PresentationManager {
|
||||
|
||||
/// The `UIAlertAction` that is executed when the `Update` option is selected.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - handler: The completion handler that returns the `.update` option.
|
||||
/// - Returns: The `Update` alert action.
|
||||
private func updateAlertAction(completion handler: CompletionHandler?) -> UIAlertAction {
|
||||
func updateAlertAction(completion handler: CompletionHandler?) -> UIAlertAction {
|
||||
let title: String
|
||||
if self.updateButtonTitle == AlertConstants.updateButtonTitle {
|
||||
if updateButtonTitle == AlertConstants.updateButtonTitle {
|
||||
title = localization.updateButtonTitle()
|
||||
} else {
|
||||
title = self.updateButtonTitle
|
||||
title = updateButtonTitle
|
||||
}
|
||||
|
||||
let action = UIAlertAction(title: title, style: .default) { _ in
|
||||
self.cleanUpAlertController()
|
||||
Siren.shared.launchAppStore()
|
||||
|
||||
handler?(.appStore)
|
||||
self.cleanUp()
|
||||
handler?(.appStore, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -172,19 +181,17 @@ extension PresentationManager {
|
||||
/// - Parameters:
|
||||
/// - handler: The completion handler that returns the `.nextTime` option.
|
||||
/// - Returns: The `Next time` alert action.
|
||||
private func nextTimeAlertAction(completion handler: CompletionHandler?) -> UIAlertAction {
|
||||
func nextTimeAlertAction(completion handler: CompletionHandler?) -> UIAlertAction {
|
||||
let title: String
|
||||
if self.nextTimeButtonTitle == AlertConstants.nextTimeButtonTitle {
|
||||
if nextTimeButtonTitle == AlertConstants.nextTimeButtonTitle {
|
||||
title = localization.nextTimeButtonTitle()
|
||||
} else {
|
||||
title = self.nextTimeButtonTitle
|
||||
title = nextTimeButtonTitle
|
||||
}
|
||||
|
||||
let action = UIAlertAction(title: title, style: .default) { _ in
|
||||
self.cleanUpAlertController()
|
||||
UserDefaults.shouldPerformVersionCheckOnSubsequentLaunch = true
|
||||
|
||||
handler?(.nextTime)
|
||||
self.cleanUp()
|
||||
handler?(.nextTime, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -197,30 +204,49 @@ extension PresentationManager {
|
||||
/// - currentAppStoreVersion: The current version of the app in the App Store.
|
||||
/// - handler: The completion handler that returns the `.skip` option.
|
||||
/// - Returns: The `Skip this version` alert action.
|
||||
private func skipAlertAction(forCurrentAppStoreVersion currentAppStoreVersion: String, completion handler: CompletionHandler?) -> UIAlertAction {
|
||||
func skipAlertAction(forCurrentAppStoreVersion currentAppStoreVersion: String, completion handler: CompletionHandler?) -> UIAlertAction {
|
||||
let title: String
|
||||
if self.skipButtonTitle == AlertConstants.skipButtonTitle {
|
||||
if skipButtonTitle == AlertConstants.skipButtonTitle {
|
||||
title = localization.skipButtonTitle()
|
||||
} else {
|
||||
title = self.skipButtonTitle
|
||||
title = skipButtonTitle
|
||||
}
|
||||
|
||||
let action = UIAlertAction(title: title, style: .default) { _ in
|
||||
UserDefaults.storedSkippedVersion = currentAppStoreVersion
|
||||
UserDefaults.standard.synchronize()
|
||||
|
||||
self.cleanUpAlertController()
|
||||
|
||||
handler?(.skip)
|
||||
self.cleanUp()
|
||||
handler?(.skip, currentAppStoreVersion)
|
||||
return
|
||||
}
|
||||
|
||||
return action
|
||||
}
|
||||
}
|
||||
|
||||
/// Removes the `alertController` from memory.
|
||||
private func cleanUpAlertController() {
|
||||
alertController?.hide(window: self.updaterWindow)
|
||||
alertController?.dismiss(animated: false, completion: nil)
|
||||
// MARK: - Helpers
|
||||
|
||||
private extension PresentationManager {
|
||||
private func createWindow() -> UIWindow? {
|
||||
guard let windowScene = getFirstForegroundScene() else { return nil }
|
||||
|
||||
let window = UIWindow(windowScene: windowScene)
|
||||
window.windowLevel = UIWindow.Level.alert + 1
|
||||
|
||||
let viewController = SirenViewController()
|
||||
viewController.retainedWindow = window
|
||||
window.rootViewController = viewController
|
||||
|
||||
return window
|
||||
}
|
||||
|
||||
@available(iOS 13.0, tvOS 13.0, *)
|
||||
private func getFirstForegroundScene() -> UIWindowScene? {
|
||||
let connectedScenes = UIApplication.shared.connectedScenes
|
||||
if let windowActiveScene = connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
|
||||
return windowActiveScene
|
||||
} else if let windowInactiveScene = connectedScenes.first(where: { $0.activationState == .foregroundInactive }) as? UIWindowScene {
|
||||
return windowInactiveScene
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,15 +81,16 @@ public struct RulesManager {
|
||||
|
||||
/// Returns the appropriate update rules based on the type of version that is returned from the API.
|
||||
///
|
||||
/// - Parameter type: The type of app update.
|
||||
/// - Parameters: type: The type of app update.
|
||||
/// - Throws: The `noUpdateAvailable` error since this is the only way a valie of `unknown` can occur.
|
||||
/// - Returns: The appropriate rule based on the type of app update that is returned by the API.
|
||||
func loadRulesForUpdateType(_ type: UpdateType) -> Rules {
|
||||
func loadRulesForUpdateType(_ type: UpdateType) throws -> Rules {
|
||||
switch type {
|
||||
case .major: return majorUpdateRules
|
||||
case .minor: return minorUpdateRules
|
||||
case .patch: return patchUpdateRules
|
||||
case .revision: return revisionUpdateRules
|
||||
case .unknown: return majorUpdateRules
|
||||
case .unknown: throw KnownError.noUpdateAvailable
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// LookupModel.swift
|
||||
// APIModel.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 8/6/17.
|
||||
@@ -9,7 +9,7 @@
|
||||
import Foundation
|
||||
|
||||
/// Model representing a selection of results from the iTunes Lookup API.
|
||||
public struct LookupModel: Decodable {
|
||||
struct APIModel: Decodable {
|
||||
/// Codable Coding Keys for the Top-Level iTunes Lookup API JSON response.
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
/// The results JSON key.
|
||||
@@ -17,10 +17,10 @@ public struct LookupModel: Decodable {
|
||||
}
|
||||
|
||||
/// The array of results objects from the iTunes Lookup API.
|
||||
public let results: [Results]
|
||||
let results: [Results]
|
||||
|
||||
/// The Results object from the the iTunes Lookup API.
|
||||
public struct Results: Decodable {
|
||||
struct Results: Decodable {
|
||||
/// Codable Coding Keys for the Results array in the iTunes Lookup API JSON response.
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
/// The appID JSON key.
|
||||
@@ -36,18 +36,18 @@ public struct LookupModel: Decodable {
|
||||
}
|
||||
|
||||
/// The app's App ID.
|
||||
public let appID: Int
|
||||
let appID: Int
|
||||
|
||||
/// The release date for the latest verison of the app.
|
||||
public let currentVersionReleaseDate: String
|
||||
/// The release date for the latest version of the app.
|
||||
let currentVersionReleaseDate: String
|
||||
|
||||
/// The minimum verison of iOS that the current verison of the app requires.
|
||||
public let minimumOSVersion: String
|
||||
/// The minimum version of iOS that the current version of the app requires.
|
||||
let minimumOSVersion: String
|
||||
|
||||
/// The releases notes from the latest version of the app.
|
||||
public let releaseNotes: String?
|
||||
let releaseNotes: String?
|
||||
|
||||
/// The latest version of the app.
|
||||
public let version: String
|
||||
let version: String
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ public struct AlertConstants {
|
||||
/// The button text that conveys the message that the user should be prompted to update next time the app launches.
|
||||
public static let nextTimeButtonTitle = "Next time"
|
||||
|
||||
/// The text that conveys the message that the the user wants to skip this verison update.
|
||||
/// The text that conveys the message that the the user wants to skip this version update.
|
||||
public static let skipButtonTitle = "Skip this version"
|
||||
|
||||
/// The button text that conveys the message that the user would like to update the app right away.
|
||||
|
||||
@@ -0,0 +1,213 @@
|
||||
//
|
||||
// AppStoreCountry.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Harlan Kellaway on 11/9/20.
|
||||
// Copyright © 2020 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// Region or country of an App Store in which an app can be available.
|
||||
///
|
||||
/// [List of country codes](https://help.apple.com/app-store-connect/#/dev997f9cf7c)
|
||||
public struct AppStoreCountry {
|
||||
/// Raw country code. ex. "US" for United States.
|
||||
public let code: String?
|
||||
}
|
||||
|
||||
extension AppStoreCountry {
|
||||
public static let afghanistan: AppStoreCountry = "AFG"
|
||||
public static let unitedArabEmirates: AppStoreCountry = "AE"
|
||||
public static let antiguaAndBarbuda: AppStoreCountry = "AG"
|
||||
public static let anguilla: AppStoreCountry = "AI"
|
||||
public static let albania: AppStoreCountry = "AL"
|
||||
public static let armenia: AppStoreCountry = "AM"
|
||||
public static let angola: AppStoreCountry = "AO"
|
||||
public static let argentina: AppStoreCountry = "AR"
|
||||
public static let austria: AppStoreCountry = "AT"
|
||||
public static let australia: AppStoreCountry = "AU"
|
||||
public static let azerbaijan: AppStoreCountry = "AZ"
|
||||
public static let barbados: AppStoreCountry = "BB"
|
||||
public static let belgium: AppStoreCountry = "BE"
|
||||
public static let bosniaAndHerzegovina: AppStoreCountry = "BIH"
|
||||
public static let burkinaFaso: AppStoreCountry = "BF"
|
||||
public static let bulgaria: AppStoreCountry = "BG"
|
||||
public static let bahrain: AppStoreCountry = "BH"
|
||||
public static let benin: AppStoreCountry = "BJ"
|
||||
public static let bermuda: AppStoreCountry = "BM"
|
||||
public static let brunei: AppStoreCountry = "BN"
|
||||
public static let bolivia: AppStoreCountry = "BO"
|
||||
public static let brazil: AppStoreCountry = "BR"
|
||||
public static let bahamas: AppStoreCountry = "BS"
|
||||
public static let bhutan: AppStoreCountry = "BT"
|
||||
public static let botswana: AppStoreCountry = "BW"
|
||||
public static let belarus: AppStoreCountry = "BY"
|
||||
public static let belize: AppStoreCountry = "BZ"
|
||||
public static let cameroon: AppStoreCountry = "CMR"
|
||||
public static let canada: AppStoreCountry = "CA"
|
||||
public static let congoRepublic: AppStoreCountry = "CG"
|
||||
public static let switzerland: AppStoreCountry = "CH"
|
||||
public static let coteDIvoire: AppStoreCountry = "CIV"
|
||||
public static let chile: AppStoreCountry = "CL"
|
||||
public static let china: AppStoreCountry = "CN"
|
||||
public static let colombia: AppStoreCountry = "CO"
|
||||
public static let congoDemocraticRepublic: AppStoreCountry = "COD"
|
||||
public static let costaRica: AppStoreCountry = "CR"
|
||||
public static let capeVerde: AppStoreCountry = "CV"
|
||||
public static let cyprus: AppStoreCountry = "CY"
|
||||
public static let czechRepublic: AppStoreCountry = "CZ"
|
||||
public static let germany: AppStoreCountry = "DE"
|
||||
public static let denmark: AppStoreCountry = "DK"
|
||||
public static let dominica: AppStoreCountry = "DM"
|
||||
public static let dominicanRepublic: AppStoreCountry = "DO"
|
||||
public static let algeria: AppStoreCountry = "DZ"
|
||||
public static let ecuador: AppStoreCountry = "EC"
|
||||
public static let estonia: AppStoreCountry = "EE"
|
||||
public static let egypt: AppStoreCountry = "EG"
|
||||
public static let spain: AppStoreCountry = "ES"
|
||||
public static let finland: AppStoreCountry = "FI"
|
||||
public static let fiji: AppStoreCountry = "FJ"
|
||||
public static let micronesia: AppStoreCountry = "FM"
|
||||
public static let france: AppStoreCountry = "FR"
|
||||
public static let gabon: AppStoreCountry = "GAB"
|
||||
public static let unitedKingdom: AppStoreCountry = "GB"
|
||||
public static let grenada: AppStoreCountry = "GD"
|
||||
public static let georgia: AppStoreCountry = "GEO"
|
||||
public static let ghana: AppStoreCountry = "GH"
|
||||
public static let gambia: AppStoreCountry = "GM"
|
||||
public static let greece: AppStoreCountry = "GR"
|
||||
public static let guatemala: AppStoreCountry = "GT"
|
||||
public static let guineaBissau: AppStoreCountry = "GW"
|
||||
public static let guyana: AppStoreCountry = "GY"
|
||||
public static let hongKong: AppStoreCountry = "HK"
|
||||
public static let honduras: AppStoreCountry = "HN"
|
||||
public static let croatia: AppStoreCountry = "HR"
|
||||
public static let hungary: AppStoreCountry = "HU"
|
||||
public static let indonesia: AppStoreCountry = "ID"
|
||||
public static let ireland: AppStoreCountry = "IE"
|
||||
public static let israel: AppStoreCountry = "IL"
|
||||
public static let india: AppStoreCountry = "IN"
|
||||
public static let iraq: AppStoreCountry = "IRQ"
|
||||
public static let iceland: AppStoreCountry = "IS"
|
||||
public static let italy: AppStoreCountry = "IT"
|
||||
public static let jamaica: AppStoreCountry = "JM"
|
||||
public static let jordan: AppStoreCountry = "JO"
|
||||
public static let japan: AppStoreCountry = "JP"
|
||||
public static let kenya: AppStoreCountry = "KE"
|
||||
public static let kyrgyzstan: AppStoreCountry = "KG"
|
||||
public static let cambodia: AppStoreCountry = "KH"
|
||||
public static let stKittsAndNevis: AppStoreCountry = "KN"
|
||||
public static let korea: AppStoreCountry = "KR"
|
||||
public static let kuwait: AppStoreCountry = "KW"
|
||||
public static let caymanIslands: AppStoreCountry = "KY"
|
||||
public static let kazakhstan: AppStoreCountry = "KZ"
|
||||
public static let laos: AppStoreCountry = "LA"
|
||||
public static let lebanon: AppStoreCountry = "LB"
|
||||
public static let libya: AppStoreCountry = "LBY"
|
||||
public static let stLucia: AppStoreCountry = "LC"
|
||||
public static let sriLanka: AppStoreCountry = "LK"
|
||||
public static let liberia: AppStoreCountry = "LR"
|
||||
public static let lithuania: AppStoreCountry = "LT"
|
||||
public static let luxembourg: AppStoreCountry = "LU"
|
||||
public static let latvia: AppStoreCountry = "LV"
|
||||
public static let morocco: AppStoreCountry = "MAR"
|
||||
public static let moldova: AppStoreCountry = "MD"
|
||||
public static let maldives: AppStoreCountry = "MDV"
|
||||
public static let madagascar: AppStoreCountry = "MG"
|
||||
public static let northMacedonia: AppStoreCountry = "MK"
|
||||
public static let mali: AppStoreCountry = "ML"
|
||||
public static let myanmar: AppStoreCountry = "MMR"
|
||||
public static let mongolia: AppStoreCountry = "MN"
|
||||
public static let montenegro: AppStoreCountry = "MNE"
|
||||
public static let macau: AppStoreCountry = "MO"
|
||||
public static let mauritania: AppStoreCountry = "MR"
|
||||
public static let montserrat: AppStoreCountry = "MS"
|
||||
public static let malta: AppStoreCountry = "MT"
|
||||
public static let mauritius: AppStoreCountry = "MU"
|
||||
public static let malawi: AppStoreCountry = "MW"
|
||||
public static let mexico: AppStoreCountry = "MX"
|
||||
public static let malaysia: AppStoreCountry = "MY"
|
||||
public static let mozambique: AppStoreCountry = "MZ"
|
||||
public static let namibia: AppStoreCountry = "NA"
|
||||
public static let niger: AppStoreCountry = "NE"
|
||||
public static let nigeria: AppStoreCountry = "NG"
|
||||
public static let nicaragua: AppStoreCountry = "NI"
|
||||
public static let netherlands: AppStoreCountry = "NL"
|
||||
public static let norway: AppStoreCountry = "NO"
|
||||
public static let nepal: AppStoreCountry = "NP"
|
||||
public static let nauru: AppStoreCountry = "NRU"
|
||||
public static let newZealand: AppStoreCountry = "NZ"
|
||||
public static let oman: AppStoreCountry = "OM"
|
||||
public static let panama: AppStoreCountry = "PA"
|
||||
public static let peru: AppStoreCountry = "PE"
|
||||
public static let papuaNewGuinea: AppStoreCountry = "PG"
|
||||
public static let philippines: AppStoreCountry = "PH"
|
||||
public static let pakistan: AppStoreCountry = "PK"
|
||||
public static let poland: AppStoreCountry = "PL"
|
||||
public static let portugal: AppStoreCountry = "PT"
|
||||
public static let palau: AppStoreCountry = "PW"
|
||||
public static let paraguay: AppStoreCountry = "PY"
|
||||
public static let qatar: AppStoreCountry = "QA"
|
||||
public static let romania: AppStoreCountry = "RO"
|
||||
public static let russia: AppStoreCountry = "RU"
|
||||
public static let rwanda: AppStoreCountry = "RWA"
|
||||
public static let saudiArabia: AppStoreCountry = "SA"
|
||||
public static let solomonIslands: AppStoreCountry = "SB"
|
||||
public static let seychelles: AppStoreCountry = "SC"
|
||||
public static let sweden: AppStoreCountry = "SE"
|
||||
public static let singapore: AppStoreCountry = "SG"
|
||||
public static let slovenia: AppStoreCountry = "SI"
|
||||
public static let slovakia: AppStoreCountry = "SK"
|
||||
public static let sierraLeone: AppStoreCountry = "SL"
|
||||
public static let senegal: AppStoreCountry = "SN"
|
||||
public static let suriname: AppStoreCountry = "SR"
|
||||
public static let serbia: AppStoreCountry = "SRB"
|
||||
public static let saoTomeAndPrincipe: AppStoreCountry = "ST"
|
||||
public static let elSalvador: AppStoreCountry = "SV"
|
||||
public static let swaziland: AppStoreCountry = "SZ"
|
||||
public static let turksAndCaicosIslands: AppStoreCountry = "TC"
|
||||
public static let chad: AppStoreCountry = "TD"
|
||||
public static let thailand: AppStoreCountry = "TH"
|
||||
public static let tajikistan: AppStoreCountry = "TJ"
|
||||
public static let turkmenistan: AppStoreCountry = "TM"
|
||||
public static let tunisia: AppStoreCountry = "TN"
|
||||
public static let tonga: AppStoreCountry = "TON"
|
||||
public static let turkey: AppStoreCountry = "TR"
|
||||
public static let trinidadAndTobago: AppStoreCountry = "TT"
|
||||
public static let taiwan: AppStoreCountry = "TW"
|
||||
public static let tanzania: AppStoreCountry = "TZ"
|
||||
public static let ukraine: AppStoreCountry = "UA"
|
||||
public static let uganda: AppStoreCountry = "UG"
|
||||
public static let unitedStates: AppStoreCountry = "US"
|
||||
public static let uruguay: AppStoreCountry = "UY"
|
||||
public static let uzbekistan: AppStoreCountry = "UZ"
|
||||
public static let stVincentAndTheGrenadines: AppStoreCountry = "VC"
|
||||
public static let venezuela: AppStoreCountry = "VE"
|
||||
public static let britishVirginIslands: AppStoreCountry = "VG"
|
||||
public static let vietnam: AppStoreCountry = "VN"
|
||||
public static let vanuatu: AppStoreCountry = "VUT"
|
||||
public static let kosovo: AppStoreCountry = "XKS"
|
||||
public static let yemen: AppStoreCountry = "YE"
|
||||
public static let southAfrica: AppStoreCountry = "ZA"
|
||||
public static let zambia: AppStoreCountry = "ZMB"
|
||||
public static let zimbabwe: AppStoreCountry = "ZW"
|
||||
}
|
||||
|
||||
extension AppStoreCountry: Equatable { }
|
||||
/// Adds ability to equate instances of `AppStoreCountry` to each other.
|
||||
/// - Parameters:
|
||||
/// - lhs: First instance of`AppStoreCountry`
|
||||
/// - rhs: Second instance of`AppStoreCountry`
|
||||
/// - Returns: `true` if instances are equal. Otherwise, `false`.
|
||||
public func == (lhs: AppStoreCountry, rhs: AppStoreCountry) -> Bool {
|
||||
return lhs.code?.uppercased() == rhs.code?.uppercased()
|
||||
}
|
||||
|
||||
extension AppStoreCountry: ExpressibleByStringLiteral {
|
||||
/// Allows for `AppStoreCountry` to be initialized by a string literal.
|
||||
/// - Parameter value: An instance of `AppStoreCountry` that can be represented as a `String`.
|
||||
public init(stringLiteral value: StringLiteralType) {
|
||||
self.init(code: value)
|
||||
}
|
||||
}
|
||||
@@ -77,6 +77,8 @@ public struct Localization {
|
||||
case portugueseBrazil = "pt"
|
||||
/// Portugal's Portuguese Language Localization
|
||||
case portuguesePortugal = "pt-PT"
|
||||
/// Romanian Language Localization
|
||||
case romanian = "ro"
|
||||
/// Russian Language Localization
|
||||
case russian = "ru"
|
||||
/// Serbian (Cyrillic) Language Localization
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
//
|
||||
// Model.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 3/27/19.
|
||||
// Copyright © 2019 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// The validated and unwrapped `APIModel`.
|
||||
/// This model is presented to the end user in Siren's completion handler.
|
||||
public struct Model {
|
||||
/// The app's App ID.
|
||||
public let appID: Int
|
||||
|
||||
/// The release date for the latest version of the app.
|
||||
public let currentVersionReleaseDate: String
|
||||
|
||||
/// The minimum version of iOS that the current version of the app requires.
|
||||
public let minimumOSVersion: String
|
||||
|
||||
/// The releases notes from the latest version of the app.
|
||||
public let releaseNotes: String?
|
||||
|
||||
/// The latest version of the app.
|
||||
public let version: String
|
||||
|
||||
/// The initializer for the `public` facing Model type.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - appID: The app's App ID.
|
||||
/// - currentVersionReleaseDate: The release date for the latest version of the app.
|
||||
/// - minimumOSVersion: The minimum version of iOS that the current version of the app requires.
|
||||
/// - releaseNotes: The releases notes from the latest version of the app.
|
||||
/// - version: The latest version of the app.
|
||||
init(appID: Int,
|
||||
currentVersionReleaseDate: String,
|
||||
minimumOSVersion: String,
|
||||
releaseNotes: String?,
|
||||
version: String) {
|
||||
self.appID = appID
|
||||
self.currentVersionReleaseDate = currentVersionReleaseDate
|
||||
self.minimumOSVersion = minimumOSVersion
|
||||
self.releaseNotes = releaseNotes
|
||||
self.version = version
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// PerformCheck.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 2/1/19.
|
||||
// Copyright © 2019 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// The type of check to perform when Siren's `wail` method is performed.
|
||||
///
|
||||
/// - Note: Alert presentation will still respct the settings that are set
|
||||
/// for `UpdatePromptFrequency` and `showAlertAfterCurrentVersionHasBeenReleasedForDays`
|
||||
public enum PerformCheck {
|
||||
/// Performs a version check only when Siren's `wail` method is called,
|
||||
/// as the `UIApplication.didBecomeActiveNotification` is ignored.
|
||||
case onDemand
|
||||
|
||||
/// (DEFAULT) Perform a version check whenever the app enters the foreground.
|
||||
/// This value must be set when Siren's `wail` method is called to enable the
|
||||
/// `UIApplication.didBecomeActiveNotification` observer.
|
||||
case onForeground
|
||||
}
|
||||
@@ -46,6 +46,11 @@ public struct Rules {
|
||||
return Rules(promptFrequency: .daily, forAlertType: .skip)
|
||||
}
|
||||
|
||||
/// Performs a version check weekly, but allows the user to skip updating the app until the next time the app becomes active.
|
||||
public static var hinting: Rules {
|
||||
return Rules(promptFrequency: .weekly, forAlertType: .option)
|
||||
}
|
||||
|
||||
/// Performs a version check daily, but allows the user to skip updating the app until the next time the app becomes active.
|
||||
public static var persistent: Rules {
|
||||
return Rules(promptFrequency: .daily, forAlertType: .option)
|
||||
@@ -61,7 +66,7 @@ public struct Rules {
|
||||
// Rules-related Constants
|
||||
public extension Rules {
|
||||
/// Determines the type of alert to present after a successful version check has been performed.
|
||||
public enum AlertType {
|
||||
enum AlertType {
|
||||
/// Forces the user to update your app (1 button alert).
|
||||
case force
|
||||
/// Presents the user with option to update app now or at next launch (2 button alert).
|
||||
@@ -75,7 +80,7 @@ public extension Rules {
|
||||
|
||||
/// Determines the frequency in which the user is prompted to update the app
|
||||
/// once a new version is available in the App Store and if they have not updated yet.
|
||||
public enum UpdatePromptFrequency: UInt {
|
||||
enum UpdatePromptFrequency: UInt {
|
||||
/// Version check performed every time the app is launched.
|
||||
case immediately = 0
|
||||
/// Version check performed once a day.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// Results.swift
|
||||
// UpdateResults.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 12/1/18.
|
||||
@@ -9,16 +9,16 @@
|
||||
import Foundation
|
||||
|
||||
/// The relevant metadata returned from Siren upon completing a successful version check.
|
||||
public struct Results {
|
||||
public struct UpdateResults {
|
||||
/// The `UIAlertAction` the user chose upon being presented with the update alert.
|
||||
/// Defaults to `unknown` until an alert is actually presented.
|
||||
public var alertAction: AlertAction = .unknown
|
||||
|
||||
/// The Siren-supported locale that was used for the string in the update alert.
|
||||
public var localization: Localization
|
||||
public let localization: Localization
|
||||
|
||||
/// The Swift-mapped API model, if a successful version check was performed.
|
||||
public var lookupModel: LookupModel
|
||||
/// The Swift-mapped and unwrapped API model, if a successful version check was performed.
|
||||
public let model: Model
|
||||
|
||||
/// The type of update that was returned for the API.
|
||||
public var updateType: RulesManager.UpdateType = .unknown
|
||||
@@ -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";
|
||||
|
||||
BIN
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
/* 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." = "%@' nın yeni bir sürümü mevcut. Lütfen %@ sürümüne güncelleyin.";
|
||||
"A new version of %@ is available. Please update to version %@ now." = "%@ uygulamasının yeni bir sürümü mevcut. Lütfen %@ sürümüne güncelleyin.";
|
||||
|
||||
/* Update alert title */
|
||||
"Update Available" = "Güncelleme Mevcut";
|
||||
|
||||
+186
-91
@@ -11,7 +11,7 @@ import UIKit
|
||||
/// The Siren Class.
|
||||
public final class Siren: NSObject {
|
||||
/// Return results or errors obtained from performing a version check with Siren.
|
||||
public typealias ResultsHandler = (Results?, KnownError?) -> Void
|
||||
public typealias ResultsHandler = (Result<UpdateResults, KnownError>) -> Void
|
||||
|
||||
/// The Siren singleton. The main point of entry to the Siren library.
|
||||
public static let shared = Siren()
|
||||
@@ -41,23 +41,38 @@ public final class Siren: NSObject {
|
||||
lazy var currentInstalledVersion: String? = Bundle.version()
|
||||
|
||||
/// The retained `NotificationCenter` observer that listens for `UIApplication.didBecomeActiveNotification` notifications.
|
||||
var didBecomeActiveObserver: NSObjectProtocol?
|
||||
var applicationDidBecomeActiveObserver: NSObjectProtocol?
|
||||
|
||||
/// The retained `NotificationCenter` observer that listens for `UIApplication.willResignActiveNotification` notifications.
|
||||
var applicationWillResignActiveObserver: NSObjectProtocol?
|
||||
|
||||
/// The retained `NotificationCenter` observer that listens for `UIApplication.didEnterBackgroundNotification` notifications.
|
||||
var didEnterBackgroundObserver: NSObjectProtocol?
|
||||
var applicationDidEnterBackgroundObserver: NSObjectProtocol?
|
||||
|
||||
/// The last date that an alert was presented to the user.
|
||||
private var alertPresentationDate: Date?
|
||||
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 initialization method.
|
||||
private override init() {
|
||||
alertPresentationDate = UserDefaults.alertPresentationDate
|
||||
|
||||
/// The deinitialization method that clears out all observers,
|
||||
deinit {
|
||||
presentationManager.cleanUp()
|
||||
removeForegroundObservers()
|
||||
removeBackgroundObservers()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,10 +81,23 @@ public final class Siren: NSObject {
|
||||
public extension Siren {
|
||||
/// This method executes the Siren version checking and alert presentation flow.
|
||||
///
|
||||
/// - Parameter handler: Returns the metadata around a successful version check and interaction with the update modal or it returns nil.
|
||||
func wail(completion handler: ResultsHandler? = nil) {
|
||||
/// - Parameters:
|
||||
/// - performCheck: Defines how the version check flow is entered. Defaults to `.onForeground`.
|
||||
/// - handler: Returns the metadata around a successful version check and interaction with the update modal or it returns nil.
|
||||
func wail(performCheck: PerformCheck = .onForeground,
|
||||
completion handler: ResultsHandler? = nil) {
|
||||
resultsHandler = handler
|
||||
addObservers()
|
||||
|
||||
switch performCheck {
|
||||
case .onDemand:
|
||||
removeForegroundObservers()
|
||||
startVersionCheckFlow()
|
||||
case .onForeground:
|
||||
addForegroundObservers()
|
||||
}
|
||||
|
||||
// Add background app state change observers.
|
||||
addBackgroundObservers()
|
||||
}
|
||||
|
||||
/// Launches the AppStore in two situations when the user clicked the `Update` button in the UIAlertController modal.
|
||||
@@ -79,16 +107,12 @@ public extension Siren {
|
||||
func launchAppStore() {
|
||||
guard let appID = appID,
|
||||
let url = URL(string: "https://itunes.apple.com/app/id\(appID)") else {
|
||||
resultsHandler?(nil, .malformedURL)
|
||||
resultsHandler?(.failure(.malformedURL))
|
||||
return
|
||||
}
|
||||
|
||||
DispatchQueue.main.async {
|
||||
if #available(iOS 10.0, *) {
|
||||
UIApplication.shared.open(url, options: [:], completionHandler: nil)
|
||||
} else {
|
||||
UIApplication.shared.openURL(url)
|
||||
}
|
||||
UIApplication.shared.open(url, options: [:], completionHandler: nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -96,17 +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 { [weak self] (lookupModel, error) in
|
||||
guard let self = self else { return }
|
||||
guard let lookupModel = lookupModel, error == nil else {
|
||||
self.resultsHandler?(nil, error)
|
||||
return
|
||||
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)
|
||||
}
|
||||
|
||||
self.validate(model: lookupModel)
|
||||
} catch (let error as KnownError) {
|
||||
self.resultsHandler?(.failure(error))
|
||||
} catch {
|
||||
// Do nothing. Silences exhaustive error.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,49 +146,56 @@ private extension Siren {
|
||||
/// to guarantee all the relevant data was returned before
|
||||
/// attempting to present an alert.
|
||||
///
|
||||
/// - Parameter model: The iTunes Lookup Model.
|
||||
func validate(model: LookupModel) {
|
||||
/// - Parameter apiModel: The iTunes Lookup Model.
|
||||
func validate(apiModel: APIModel) {
|
||||
// Check if the latest version is compatible with current device's version of iOS.
|
||||
guard DataParser.isUpdateCompatibleWithDeviceOS(for: model) else {
|
||||
resultsHandler?(nil, .appStoreOSVersionUnsupported)
|
||||
guard DataParser.isUpdateCompatibleWithDeviceOS(for: apiModel) else {
|
||||
resultsHandler?(.failure(.appStoreOSVersionUnsupported))
|
||||
return
|
||||
}
|
||||
|
||||
// Check and store the App ID .
|
||||
guard let appID = model.results.first?.appID else {
|
||||
resultsHandler?(nil, .appStoreAppIDFailure)
|
||||
guard let results = apiModel.results.first,
|
||||
let appID = apiModel.results.first?.appID else {
|
||||
resultsHandler?(.failure(.appStoreAppIDFailure))
|
||||
return
|
||||
}
|
||||
self.appID = appID
|
||||
|
||||
// Check and store the current App Store version.
|
||||
guard let currentAppStoreVersion = model.results.first?.version else {
|
||||
resultsHandler?(nil, .appStoreVersionArrayFailure)
|
||||
guard let currentAppStoreVersion = apiModel.results.first?.version else {
|
||||
resultsHandler?(.failure(.appStoreVersionArrayFailure))
|
||||
return
|
||||
}
|
||||
|
||||
// Check if the App Store version is newer than the currently installed version.
|
||||
guard DataParser.isAppStoreVersionNewer(installedVersion: currentInstalledVersion,
|
||||
appStoreVersion: currentAppStoreVersion) else {
|
||||
resultsHandler?(nil, .noUpdateAvailable)
|
||||
resultsHandler?(.failure(.noUpdateAvailable))
|
||||
return
|
||||
}
|
||||
|
||||
// Check the release date of the current version.
|
||||
guard let currentVersionReleaseDate = model.results.first?.currentVersionReleaseDate,
|
||||
guard let currentVersionReleaseDate = apiModel.results.first?.currentVersionReleaseDate,
|
||||
let daysSinceRelease = Date.days(since: currentVersionReleaseDate) else {
|
||||
resultsHandler?(nil, .currentVersionReleaseDate)
|
||||
resultsHandler?(.failure(.currentVersionReleaseDate))
|
||||
return
|
||||
}
|
||||
|
||||
// Check if applicaiton has been released for the amount of days defined by the app consuming Siren.
|
||||
guard daysSinceRelease >= rulesManager.releasedForDays else {
|
||||
resultsHandler?(nil, .releasedTooSoon(daysSinceRelease: daysSinceRelease,
|
||||
releasedForDays: rulesManager.releasedForDays))
|
||||
resultsHandler?(.failure(.releasedTooSoon(daysSinceRelease: daysSinceRelease,
|
||||
releasedForDays: rulesManager.releasedForDays)))
|
||||
return
|
||||
}
|
||||
|
||||
determineIfAlertPresentationRulesAreSatisfied(forCurrentAppStoreVersion: currentAppStoreVersion, andLookupModel: model)
|
||||
let model = Model(appID: appID,
|
||||
currentVersionReleaseDate: currentVersionReleaseDate,
|
||||
minimumOSVersion: results.minimumOSVersion,
|
||||
releaseNotes: results.releaseNotes,
|
||||
version: results.version)
|
||||
|
||||
determineIfAlertPresentationRulesAreSatisfied(forCurrentAppStoreVersion: currentAppStoreVersion, andModel: model)
|
||||
}
|
||||
|
||||
/// Determines if the update alert can be presented based on the
|
||||
@@ -165,37 +204,43 @@ private extension Siren {
|
||||
/// - Parameters:
|
||||
/// - currentAppStoreVersion: The curren version of the app in the App Store.
|
||||
/// - model: The iTunes Lookup Model.
|
||||
func determineIfAlertPresentationRulesAreSatisfied(forCurrentAppStoreVersion currentAppStoreVersion: String, andLookupModel model: LookupModel) {
|
||||
// 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?(nil, .skipVersionUpdate(installedVersion: currentInstalledVersion, appStoreVersion: currentAppStoreVersion))
|
||||
return
|
||||
}
|
||||
|
||||
func determineIfAlertPresentationRulesAreSatisfied(forCurrentAppStoreVersion currentAppStoreVersion: String, andModel model: Model) {
|
||||
let updateType = DataParser.parseForUpdate(forInstalledVersion: currentInstalledVersion,
|
||||
andAppStoreVersion: currentAppStoreVersion)
|
||||
let rules = rulesManager.loadRulesForUpdateType(updateType)
|
||||
do {
|
||||
let rules = try rulesManager.loadRulesForUpdateType(updateType)
|
||||
|
||||
if rules.frequency == .immediately {
|
||||
presentAlert(withRules: rules, forCurrentAppStoreVersion: currentAppStoreVersion, model: model, andUpdateType: updateType)
|
||||
} else if UserDefaults.shouldPerformVersionCheckOnSubsequentLaunch {
|
||||
UserDefaults.shouldPerformVersionCheckOnSubsequentLaunch = false
|
||||
presentAlert(withRules: rules, forCurrentAppStoreVersion: currentAppStoreVersion, model: model, andUpdateType: updateType)
|
||||
} else {
|
||||
guard let alertPresentationDate = alertPresentationDate else {
|
||||
presentAlert(withRules: rules, forCurrentAppStoreVersion: currentAppStoreVersion, model: model, andUpdateType: updateType)
|
||||
return
|
||||
// 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 Date.days(since: alertPresentationDate) >= rules.frequency.rawValue {
|
||||
|
||||
if rules.frequency == .immediately {
|
||||
presentAlert(withRules: rules, forCurrentAppStoreVersion: currentAppStoreVersion, model: model, andUpdateType: updateType)
|
||||
} else {
|
||||
resultsHandler?(nil, .recentlyPrompted)
|
||||
guard let alertPresentationDate = alertPresentationDate else {
|
||||
presentAlert(withRules: rules, forCurrentAppStoreVersion: currentAppStoreVersion, model: model, andUpdateType: updateType)
|
||||
return
|
||||
}
|
||||
if Date.days(since: alertPresentationDate) >= rules.frequency.rawValue {
|
||||
presentAlert(withRules: rules, forCurrentAppStoreVersion: currentAppStoreVersion, model: model, andUpdateType: updateType)
|
||||
} else {
|
||||
resultsHandler?(.failure(.recentlyPrompted))
|
||||
}
|
||||
}
|
||||
} catch let error as KnownError {
|
||||
resultsHandler?(.failure(error))
|
||||
} catch { // This path should never be entered, but this silences an error.
|
||||
resultsHandler?(.failure(.noUpdateAvailable))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -209,51 +254,101 @@ private extension Siren {
|
||||
/// - updateType: The type of update that is available based on the version found in the App Store.
|
||||
func presentAlert(withRules rules: Rules,
|
||||
forCurrentAppStoreVersion currentAppStoreVersion: String,
|
||||
model: LookupModel,
|
||||
model: Model,
|
||||
andUpdateType updateType: RulesManager.UpdateType) {
|
||||
presentationManager.presentAlert(withRules: rules, forCurrentAppStoreVersion: currentAppStoreVersion) { [weak self] alertAction in
|
||||
presentationManager.presentAlert(withRules: rules, forCurrentAppStoreVersion: currentAppStoreVersion) { [weak self] alertAction, currentAppStoreVersion in
|
||||
guard let self = self else { return }
|
||||
let results = Results(alertAction: alertAction,
|
||||
self.processAlertAction(alertAction: alertAction, currentAppStoreVersion: currentAppStoreVersion)
|
||||
|
||||
let results = UpdateResults(alertAction: alertAction,
|
||||
localization: self.presentationManager.localization,
|
||||
lookupModel: model,
|
||||
model: model,
|
||||
updateType: updateType)
|
||||
self.resultsHandler?(results, nil)
|
||||
self.resultsHandler?(.success(results))
|
||||
}
|
||||
}
|
||||
|
||||
func processAlertAction(alertAction: AlertAction, currentAppStoreVersion: String?) {
|
||||
switch alertAction {
|
||||
case .appStore:
|
||||
launchAppStore()
|
||||
case .skip:
|
||||
guard let currentAppStoreVersion = currentAppStoreVersion else { return }
|
||||
UserDefaults.storedSkippedVersion = currentAppStoreVersion
|
||||
UserDefaults.standard.synchronize()
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Observers
|
||||
// MARK: - Add Observers
|
||||
|
||||
private extension Siren {
|
||||
/// Add app state observers
|
||||
func addObservers() {
|
||||
addForegroundObserver()
|
||||
addBackgroundObserver()
|
||||
}
|
||||
|
||||
/// Adds an observer that listens for app launching/relaunching.
|
||||
func addForegroundObserver() {
|
||||
guard didBecomeActiveObserver == nil else { return }
|
||||
didBecomeActiveObserver = NotificationCenter
|
||||
func addForegroundObservers() {
|
||||
guard applicationDidBecomeActiveObserver == nil else { return }
|
||||
applicationDidBecomeActiveObserver = NotificationCenter
|
||||
.default
|
||||
.addObserver(forName: UIApplication.didBecomeActiveNotification,
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Adds an observer that listens for when the app is sent to the background.
|
||||
func addBackgroundObserver() {
|
||||
guard didEnterBackgroundObserver == nil else { return }
|
||||
didEnterBackgroundObserver = NotificationCenter
|
||||
.default
|
||||
.addObserver(forName: UIApplication.didEnterBackgroundNotification,
|
||||
object: nil,
|
||||
queue: nil) { [weak self] _ in
|
||||
guard let self = self else { return }
|
||||
self.presentationManager.alertController?.dismiss(animated: true, completion: nil)
|
||||
/// Adds an observer that listens for when the user enters the app switcher
|
||||
/// and when the app is sent to the background.
|
||||
func addBackgroundObservers() {
|
||||
if applicationWillResignActiveObserver == nil {
|
||||
applicationWillResignActiveObserver = NotificationCenter
|
||||
.default
|
||||
.addObserver(forName: UIApplication.willResignActiveNotification,
|
||||
object: nil,
|
||||
queue: nil) { [weak self] _ in
|
||||
guard let self = self else { return }
|
||||
self.appDidBecomeActiveWorkItem?.cancel()
|
||||
self.appDidBecomeActiveWorkItem = nil
|
||||
self.presentationManager.cleanUp()
|
||||
}
|
||||
}
|
||||
|
||||
if applicationDidEnterBackgroundObserver == nil {
|
||||
applicationDidEnterBackgroundObserver = NotificationCenter
|
||||
.default
|
||||
.addObserver(forName: UIApplication.didEnterBackgroundNotification,
|
||||
object: nil,
|
||||
queue: nil) { [weak self] _ in
|
||||
guard let self = self else { return }
|
||||
self.presentationManager.cleanUp()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Remove Observers
|
||||
|
||||
private extension Siren {
|
||||
/// Removes the observer that listens for app launching/relaunching.
|
||||
func removeForegroundObservers() {
|
||||
NotificationCenter.default.removeObserver(applicationDidBecomeActiveObserver as Any)
|
||||
applicationDidBecomeActiveObserver = nil
|
||||
}
|
||||
|
||||
/// Remove the observers that list to app resignation and app backgrounding.
|
||||
func removeBackgroundObservers() {
|
||||
NotificationCenter.default.removeObserver(applicationWillResignActiveObserver as Any)
|
||||
applicationWillResignActiveObserver = nil
|
||||
|
||||
NotificationCenter.default.removeObserver(applicationDidEnterBackgroundObserver as Any)
|
||||
applicationDidEnterBackgroundObserver = nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
/// Version parsing functions for Siren.
|
||||
struct DataParser {
|
||||
@@ -30,7 +30,7 @@ struct DataParser {
|
||||
///
|
||||
/// - Parameter model: The iTunes Lookup Model.
|
||||
/// - Returns: `true` if the latest version is compatible with the device's current version of iOS. Otherwise, `false`.
|
||||
static func isUpdateCompatibleWithDeviceOS(for model: LookupModel) -> Bool {
|
||||
static func isUpdateCompatibleWithDeviceOS(for model: APIModel) -> Bool {
|
||||
guard let requiredOSVersion = model.results.first?.minimumOSVersion else {
|
||||
return false
|
||||
}
|
||||
@@ -45,12 +45,12 @@ struct DataParser {
|
||||
return true
|
||||
}
|
||||
|
||||
/// The type of update that is returned from the API in relation to the verison of the app that is installed.
|
||||
/// The type of update that is returned from the API in relation to the version of the app that is installed.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - installedVersion: The installed version of the app.
|
||||
/// - appStoreVersion: The App Store version of the app.
|
||||
/// - Returns: The type of update in relation to the verison of the app that is installed.
|
||||
/// - Returns: The type of update in relation to the version of the app that is installed.
|
||||
static func parseForUpdate(forInstalledVersion installedVersion: String?,
|
||||
andAppStoreVersion appStoreVersion: String?) -> RulesManager.UpdateType {
|
||||
guard let installedVersion = installedVersion,
|
||||
|
||||
@@ -18,7 +18,7 @@ public enum KnownError: LocalizedError {
|
||||
case appStoreDataRetrievalFailure(underlyingError: Error?)
|
||||
/// Error parsing App Store JSON data.
|
||||
case appStoreJSONParsingFailure(underlyingError: Error)
|
||||
/// The version of iOS on the device is lower than that of the one required by the app verison update.
|
||||
/// The version of iOS on the device is lower than that of the one required by the app version update.
|
||||
case appStoreOSVersionUnsupported
|
||||
/// Error retrieving App Store verson number as the JSON does not contain a `version` key.
|
||||
case appStoreVersionArrayFailure
|
||||
@@ -30,7 +30,7 @@ public enum KnownError: LocalizedError {
|
||||
case missingBundleID
|
||||
/// No new update available.
|
||||
case noUpdateAvailable
|
||||
/// Siren will not present an update alert if it performed one too recently. If you would like to present an alert every time Siren is called, please consider setting the `UpdatePromptFrequency.immediately` rule in `RulesManager`
|
||||
/// Siren will not present an update alert if it performed one too recently. If you would like to present an alert every time Siren is called, please consider setting the `UpdatePromptFrequency.immediately` rule in `RulesManager`
|
||||
case recentlyPrompted
|
||||
/// The app has been released for X days, but Siren cannot prompt the user until Y (where Y > X) days have passed.
|
||||
case releasedTooSoon(daysSinceRelease: Int, releasedForDays: Int)
|
||||
@@ -51,7 +51,7 @@ public enum KnownError: LocalizedError {
|
||||
case .appStoreJSONParsingFailure(let error):
|
||||
return "\(KnownError.sirenError) Error parsing App Store JSON data.\nAlso, the following system level error was returned: \(error)"
|
||||
case .appStoreOSVersionUnsupported:
|
||||
return "\(KnownError.sirenError) The version of iOS on the device is lower than that of the one required by the app verison update."
|
||||
return "\(KnownError.sirenError) The version of iOS on the device is lower than that of the one required by the app version update."
|
||||
case .appStoreVersionArrayFailure:
|
||||
return "\(KnownError.sirenError) Error retrieving App Store verson number as the JSON does not contain a `version` key."
|
||||
case .currentVersionReleaseDate:
|
||||
@@ -63,7 +63,7 @@ public enum KnownError: LocalizedError {
|
||||
case .noUpdateAvailable:
|
||||
return "\(KnownError.sirenError) No new update available."
|
||||
case .recentlyPrompted:
|
||||
return "\(KnownError.sirenError) Siren will not present an update alert if it performed one too recently. If you would like to present an alert every time Siren is called, please consider setting the `\(Rules.UpdatePromptFrequency.self).immediately` rule in `\(RulesManager.self)`"
|
||||
return "\(KnownError.sirenError) Siren will not present an update alert if it performed one too recently. If you would like to present an alert every time Siren is called, please consider setting the `\(Rules.UpdatePromptFrequency.self).immediately` rule in `\(RulesManager.self)`"
|
||||
case .releasedTooSoon(let daysSinceRelease, let releasedForDays):
|
||||
return "\(KnownError.sirenError) The app has been released for \(daysSinceRelease) days, but Siren cannot prompt the user until \(releasedForDays) days have passed."
|
||||
case .skipVersionUpdate(let installedVersion, let appStoreVersion):
|
||||
|
||||
@@ -6,13 +6,15 @@
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
/// `UIViewController` Extension for Siren
|
||||
final class SirenViewController: UIViewController {
|
||||
/// `UIStatusBarStyle` override.
|
||||
override var preferredStatusBarStyle: UIStatusBarStyle {
|
||||
return UIApplication.shared.statusBarStyle
|
||||
/// This creates a retain cycle.
|
||||
/// This is needed to retain the UIAlertController in iOS 13.0+
|
||||
var retainedWindow: UIWindow?
|
||||
|
||||
deinit {
|
||||
retainedWindow = nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,212 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Classes Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="js/jquery.min.js" defer></script>
|
||||
<script src="js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Section/Classes" class="dashAnchor"></a>
|
||||
<a title="Classes Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="index.html">Siren Reference</a>
|
||||
<img id="carat" src="img/carat.png" />
|
||||
Classes Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Classes</h1>
|
||||
<p>The following classes are available globally.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/c:@M@Siren@objc(cs)Siren"></a>
|
||||
<a name="//apple_ref/swift/Class/Siren" class="dashAnchor"></a>
|
||||
<a class="token" href="#/c:@M@Siren@objc(cs)Siren">Siren</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The Siren Class.</p>
|
||||
|
||||
<a href="Classes/Siren.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">Siren</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/c:@M@Siren@objc(cs)SirenViewController"></a>
|
||||
<a name="//apple_ref/swift/Class/SirenViewController" class="dashAnchor"></a>
|
||||
<a class="token" href="#/c:@M@Siren@objc(cs)SirenViewController">SirenViewController</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p><code>UIViewController</code> Extension for Siren</p>
|
||||
|
||||
<a href="Classes/SirenViewController.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SirenViewController</span> <span class="p">:</span> <span class="kt">UIViewController</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,904 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Siren Class Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Class/Siren" class="dashAnchor"></a>
|
||||
<a title="Siren Class Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
Siren Class Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Siren</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">Siren</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>The Siren Class.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC14ResultsHandlera"></a>
|
||||
<a name="//apple_ref/swift/Alias/ResultsHandler" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC14ResultsHandlera">ResultsHandler</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Return results or errors obtained from performing a version check with Siren.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">typealias</span> <span class="kt">ResultsHandler</span> <span class="o">=</span> <span class="p">(</span><span class="kt"><a href="../Structs/Results.html">Results</a></span><span class="p">?,</span> <span class="kt"><a href="../Enums/KnownError.html">KnownError</a></span><span class="p">?)</span> <span class="o">-></span> <span class="kt">Void</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC6sharedABvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/shared" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC6sharedABvpZ">shared</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The Siren singleton. The main point of entry to the Siren library.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">shared</span><span class="p">:</span> <span class="kt">Siren</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC10apiManagerAA10APIManagerVvp"></a>
|
||||
<a name="//apple_ref/swift/Property/apiManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC10apiManagerAA10APIManagerVvp">apiManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The manager that controls the App Store API that is
|
||||
used to fetch the latest version of the app.</p>
|
||||
|
||||
<p>Defaults to the US App Store.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">apiManager</span><span class="p">:</span> <span class="kt"><a href="../Structs/APIManager.html">APIManager</a></span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC19presentationManagerAA012PresentationC0Vvp"></a>
|
||||
<a name="//apple_ref/swift/Property/presentationManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC19presentationManagerAA012PresentationC0Vvp">presentationManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The manager that controls the update alert’s string localization and tint color.</p>
|
||||
|
||||
<p>Defaults the string’s lange localization to the user’s device localization.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">presentationManager</span><span class="p">:</span> <span class="kt"><a href="../Structs/PresentationManager.html">PresentationManager</a></span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC12rulesManagerAA05RulesC0Vvp"></a>
|
||||
<a name="//apple_ref/swift/Property/rulesManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC12rulesManagerAA05RulesC0Vvp">rulesManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The manager that controls the type of alert that should be displayed
|
||||
and how often an alert should be displayed dpeneding on the type
|
||||
of update that is available relative to the installed version of the app
|
||||
(e.g., different rules for major, minor, patch and revision updated can be used).</p>
|
||||
|
||||
<p>Defaults to performing a version check once a day with an alert that allows
|
||||
the user to skip updating the app until the next time the app becomes active or
|
||||
skipping the update all together until another version is released.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">rulesManager</span><span class="p">:</span> <span class="kt"><a href="../Structs/RulesManager.html">RulesManager</a></span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC23currentInstalledVersionSSSgvp"></a>
|
||||
<a name="//apple_ref/swift/Property/currentInstalledVersion" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC23currentInstalledVersionSSSgvp">currentInstalledVersion</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The current installed version of your app.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">lazy</span> <span class="k">var</span> <span class="nv">currentInstalledVersion</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC23didBecomeActiveObserverSo8NSObject_pSgvp"></a>
|
||||
<a name="//apple_ref/swift/Property/didBecomeActiveObserver" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC23didBecomeActiveObserverSo8NSObject_pSgvp">didBecomeActiveObserver</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The retained <code>NotificationCenter</code> observer that listens for <code>UIApplication.didBecomeActiveNotification</code> notifications.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">var</span> <span class="nv">didBecomeActiveObserver</span><span class="p">:</span> <span class="kt">NSObjectProtocol</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC26didEnterBackgroundObserverSo8NSObject_pSgvp"></a>
|
||||
<a name="//apple_ref/swift/Property/didEnterBackgroundObserver" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC26didEnterBackgroundObserverSo8NSObject_pSgvp">didEnterBackgroundObserver</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The retained <code>NotificationCenter</code> observer that listens for <code>UIApplication.didEnterBackgroundNotification</code> notifications.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">var</span> <span class="nv">didEnterBackgroundObserver</span><span class="p">:</span> <span class="kt">NSObjectProtocol</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC21alertPresentationDate33_7DFB1BC200A6C64FBED860A3A8153B65LL10Foundation0D0VSgvp"></a>
|
||||
<a name="//apple_ref/swift/Property/alertPresentationDate" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC21alertPresentationDate33_7DFB1BC200A6C64FBED860A3A8153B65LL10Foundation0D0VSgvp">alertPresentationDate</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The last date that an alert was presented to the user.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">alertPresentationDate</span><span class="p">:</span> <span class="kt">Date</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC5appID33_7DFB1BC200A6C64FBED860A3A8153B65LLSiSgvp"></a>
|
||||
<a name="//apple_ref/swift/Property/appID" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC5appID33_7DFB1BC200A6C64FBED860A3A8153B65LLSiSgvp">appID</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The App Store’s unique identifier for an app.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">appID</span><span class="p">:</span> <span class="kt">Int</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC14resultsHandler33_7DFB1BC200A6C64FBED860A3A8153B65LLyAA7ResultsVSg_AA10KnownErrorOSgtcSgvp"></a>
|
||||
<a name="//apple_ref/swift/Property/resultsHandler" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC14resultsHandler33_7DFB1BC200A6C64FBED860A3A8153B65LLyAA7ResultsVSg_AA10KnownErrorOSgtcSgvp">resultsHandler</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The completion handler used to return the results or errors returned by Siren.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">resultsHandler</span><span class="p">:</span> <span class="kt">Siren</span><span class="o">.</span><span class="kt"><a href="../Classes/Siren.html#/s:5SirenAAC14ResultsHandlera">ResultsHandler</a></span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/c:@M@Siren@objc(cs)Siren(im)init"></a>
|
||||
<a name="//apple_ref/swift/Method/init()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/c:@M@Siren@objc(cs)Siren(im)init">init()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The initialization method.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="k">override</span> <span class="nf">init</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<div class="task-name-container">
|
||||
<a name="/Public%20API%20Interface"></a>
|
||||
<a name="//apple_ref/swift/Section/Public API Interface" class="dashAnchor"></a>
|
||||
<a href="#/Public%20API%20Interface">
|
||||
<h3 class="section-name">Public API Interface</h3>
|
||||
</a>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC4wail10completionyyAA7ResultsVSg_AA10KnownErrorOSgtcSg_tF"></a>
|
||||
<a name="//apple_ref/swift/Method/wail(completion:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC4wail10completionyyAA7ResultsVSg_AA10KnownErrorOSgtcSg_tF">wail(completion:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>This method executes the Siren version checking and alert presentation flow.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">wail</span><span class="p">(</span><span class="n">completion</span> <span class="nv">handler</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren.html#/s:5SirenAAC14ResultsHandlera">ResultsHandler</a></span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>handler</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>Returns the metadata around a successful version check and interaction with the update modal or it returns nil.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC14launchAppStoreyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/launchAppStore()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC14launchAppStoreyyF">launchAppStore()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Launches the AppStore in two situations when the user clicked the <code>Update</code> button in the UIAlertController modal.</p>
|
||||
|
||||
<p>This function is marked <code>public</code> as a convenience for those developers who decide to build a custom alert modal
|
||||
instead of using Siren’s prebuilt update alert.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">launchAppStore</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<div class="task-name-container">
|
||||
<a name="/Version%20Check%20and%20Alert%20Presentation%20Flow"></a>
|
||||
<a name="//apple_ref/swift/Section/Version Check and Alert Presentation Flow" class="dashAnchor"></a>
|
||||
<a href="#/Version%20Check%20and%20Alert%20Presentation%20Flow">
|
||||
<h3 class="section-name">Version Check and Alert Presentation Flow</h3>
|
||||
</a>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC19performVersionCheck33_7DFB1BC200A6C64FBED860A3A8153B65LLyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/performVersionCheck()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC19performVersionCheck33_7DFB1BC200A6C64FBED860A3A8153B65LLyyF">performVersionCheck()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Initiates the unidirectional version checking flow.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">performVersionCheck</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC8validate33_7DFB1BC200A6C64FBED860A3A8153B65LL5modelyAA11LookupModelV_tF"></a>
|
||||
<a name="//apple_ref/swift/Method/validate(model:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC8validate33_7DFB1BC200A6C64FBED860A3A8153B65LL5modelyAA11LookupModelV_tF">validate(model:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Validates the parsed and mapped iTunes Lookup Model
|
||||
to guarantee all the relevant data was returned before
|
||||
attempting to present an alert.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">validate</span><span class="p">(</span><span class="nv">model</span><span class="p">:</span> <span class="kt"><a href="../Structs/LookupModel.html">LookupModel</a></span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>model</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The iTunes Lookup Model.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC45determineIfAlertPresentationRulesAreSatisfied33_7DFB1BC200A6C64FBED860A3A8153B65LL25forCurrentAppStoreVersion14andLookupModelySS_AA0wX0VtF"></a>
|
||||
<a name="//apple_ref/swift/Method/determineIfAlertPresentationRulesAreSatisfied(forCurrentAppStoreVersion:andLookupModel:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC45determineIfAlertPresentationRulesAreSatisfied33_7DFB1BC200A6C64FBED860A3A8153B65LL25forCurrentAppStoreVersion14andLookupModelySS_AA0wX0VtF">determineIfAlertPresentationRulesAreSatisfied(forCurrentAppStoreVersion:andLookupModel:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Determines if the update alert can be presented based on the
|
||||
rules set in the <code><a href="../Structs/RulesManager.html">RulesManager</a></code> and the the skip version settings.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">determineIfAlertPresentationRulesAreSatisfied</span><span class="p">(</span><span class="n">forCurrentAppStoreVersion</span> <span class="nv">currentAppStoreVersion</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="n">andLookupModel</span> <span class="nv">model</span><span class="p">:</span> <span class="kt"><a href="../Structs/LookupModel.html">LookupModel</a></span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>currentAppStoreVersion</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The curren version of the app in the App Store.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>model</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The iTunes Lookup Model.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC12presentAlert33_7DFB1BC200A6C64FBED860A3A8153B65LL9withRules25forCurrentAppStoreVersion5model13andUpdateTypeyAA0M0V_SSAA11LookupModelVAA0M7ManagerV0uV0OtF"></a>
|
||||
<a name="//apple_ref/swift/Method/presentAlert(withRules:forCurrentAppStoreVersion:model:andUpdateType:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC12presentAlert33_7DFB1BC200A6C64FBED860A3A8153B65LL9withRules25forCurrentAppStoreVersion5model13andUpdateTypeyAA0M0V_SSAA11LookupModelVAA0M7ManagerV0uV0OtF">presentAlert(withRules:forCurrentAppStoreVersion:model:andUpdateType:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Presents the update alert to the end user.
|
||||
Upon tapping a value on the alert view, a completion handler will return all relevant metadata to the app.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">presentAlert</span><span class="p">(</span><span class="n">withRules</span> <span class="nv">rules</span><span class="p">:</span> <span class="kt"><a href="../Structs/Rules.html">Rules</a></span><span class="p">,</span>
|
||||
<span class="n">forCurrentAppStoreVersion</span> <span class="nv">currentAppStoreVersion</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span>
|
||||
<span class="nv">model</span><span class="p">:</span> <span class="kt"><a href="../Structs/LookupModel.html">LookupModel</a></span><span class="p">,</span>
|
||||
<span class="n">andUpdateType</span> <span class="nv">updateType</span><span class="p">:</span> <span class="kt"><a href="../Structs/RulesManager.html">RulesManager</a></span><span class="o">.</span><span class="kt">UpdateType</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>rules</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The rules for how to present the alert.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>currentAppStoreVersion</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The current version of the app in the App Store.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>model</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The iTunes Lookup Model.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>updateType</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The type of update that is available based on the version found in the App Store.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<div class="task-name-container">
|
||||
<a name="/Observers"></a>
|
||||
<a name="//apple_ref/swift/Section/Observers" class="dashAnchor"></a>
|
||||
<a href="#/Observers">
|
||||
<h3 class="section-name">Observers</h3>
|
||||
</a>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC12addObservers33_7DFB1BC200A6C64FBED860A3A8153B65LLyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/addObservers()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC12addObservers33_7DFB1BC200A6C64FBED860A3A8153B65LLyyF">addObservers()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Add app state observers</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">addObservers</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC21addForegroundObserver33_7DFB1BC200A6C64FBED860A3A8153B65LLyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/addForegroundObserver()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC21addForegroundObserver33_7DFB1BC200A6C64FBED860A3A8153B65LLyyF">addForegroundObserver()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Adds an observer that listens for app launching/relaunching.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">addForegroundObserver</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC21addBackgroundObserver33_7DFB1BC200A6C64FBED860A3A8153B65LLyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/addBackgroundObserver()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC21addBackgroundObserver33_7DFB1BC200A6C64FBED860A3A8153B65LLyyF">addBackgroundObserver()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Adds an observer that listens for when the app is sent to the background.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">addBackgroundObserver</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,225 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>AlertType Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../../js/jquery.min.js" defer></script>
|
||||
<script src="../../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/AlertType" class="dashAnchor"></a>
|
||||
<a title="AlertType Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
AlertType Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren/VersionCheckType.html">– VersionCheckType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren/LanguageType.html">– LanguageType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/UpdateType.html">UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>AlertType</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">enum</span> <span class="kt">AlertType</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Determines the type of alert to present after a successful version check has been performed.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC9AlertTypeO5forceA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/force" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC9AlertTypeO5forceA2DmF">force</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Forces user to update your app (1 button alert).</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">force</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC9AlertTypeO6optionA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/option" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC9AlertTypeO6optionA2DmF">option</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>(DEFAULT) Presents user with option to update app now or at next launch (2 button alert).</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">option</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC9AlertTypeO4skipA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/skip" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC9AlertTypeO4skipA2DmF">skip</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Presents user with option to update the app now, at next launch, or to skip this version all together (3 button alert).</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">skip</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC9AlertTypeO4noneA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/none" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC9AlertTypeO4noneA2DmF">none</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Doesn’t show the alert, but instead returns a localized message
|
||||
for use in a custom UI within the sirenDidDetectNewVersionWithoutAlert() delegate method.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="k">none</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-17)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,197 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>VersionCheckType Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../../js/jquery.min.js" defer></script>
|
||||
<script src="../../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/VersionCheckType" class="dashAnchor"></a>
|
||||
<a title="VersionCheckType Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
VersionCheckType Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren/VersionCheckType.html">– VersionCheckType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren/LanguageType.html">– LanguageType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/UpdateType.html">UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>VersionCheckType</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">enum</span> <span class="kt">VersionCheckType</span> <span class="p">:</span> <span class="kt">Int</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Determines the frequency in which the the version check is performed and the user is prompted to update the app.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC16VersionCheckTypeO11immediatelyA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/immediately" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO11immediatelyA2DmF">immediately</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Version check performed every time the app is launched.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">immediately</span> <span class="o">=</span> <span class="mi">0</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC16VersionCheckTypeO5dailyA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/daily" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO5dailyA2DmF">daily</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Version check performed once a day.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">daily</span> <span class="o">=</span> <span class="mi">1</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC16VersionCheckTypeO6weeklyA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/weekly" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO6weeklyA2DmF">weekly</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Version check performed once a week.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">weekly</span> <span class="o">=</span> <span class="mi">7</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-17)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,185 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>SirenViewController Class Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Class/SirenViewController" class="dashAnchor"></a>
|
||||
<a title="SirenViewController Class Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
SirenViewController Class Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>SirenViewController</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SirenViewController</span> <span class="p">:</span> <span class="kt">UIViewController</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p><code>UIViewController</code> Extension for Siren</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/c:@M@Siren@objc(cs)SirenViewController(py)preferredStatusBarStyle"></a>
|
||||
<a name="//apple_ref/swift/Property/preferredStatusBarStyle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/c:@M@Siren@objc(cs)SirenViewController(py)preferredStatusBarStyle">preferredStatusBarStyle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p><code>UIStatusBarStyle</code> override.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">override</span> <span class="k">var</span> <span class="nv">preferredStatusBarStyle</span><span class="p">:</span> <span class="kt">UIStatusBarStyle</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
-212
@@ -1,212 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Enumerations Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="js/jquery.min.js" defer></script>
|
||||
<script src="js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Section/Enumerations" class="dashAnchor"></a>
|
||||
<a title="Enumerations Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="index.html">Siren Reference</a>
|
||||
<img id="carat" src="img/carat.png" />
|
||||
Enumerations Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Enumerations</h1>
|
||||
<p>The following enumerations are available globally.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren11AlertActionO"></a>
|
||||
<a name="//apple_ref/swift/Enum/AlertAction" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren11AlertActionO">AlertAction</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The <code>UIAlertController</code> button that was pressed upon being presented an update alert.</p>
|
||||
|
||||
<a href="Enums/AlertAction.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">AlertAction</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO"></a>
|
||||
<a name="//apple_ref/swift/Enum/KnownError" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO">KnownError</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Enumerates all potentials errors that Siren can handle.</p>
|
||||
|
||||
<a href="Enums/KnownError.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">KnownError</span> <span class="p">:</span> <span class="kt">LocalizedError</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,266 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>AlertAction Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/AlertAction" class="dashAnchor"></a>
|
||||
<a title="AlertAction Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
AlertAction Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>AlertAction</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">AlertAction</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>The <code>UIAlertController</code> button that was pressed upon being presented an update alert.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren11AlertActionO8appStoreyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStore" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren11AlertActionO8appStoreyA2CmF">appStore</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The user clicked on the <code>Update</code> option, which took them to the app’s App Store page.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">appStore</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren11AlertActionO8nextTimeyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/nextTime" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren11AlertActionO8nextTimeyA2CmF">nextTime</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The user clicked on the <code>Next Time</code> option, which dismissed the alert.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">nextTime</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren11AlertActionO4skipyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/skip" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren11AlertActionO4skipyA2CmF">skip</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The user clicked on the <code>Skip this version</code> option, which dismissed the alert.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">skip</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren11AlertActionO7unknownyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/unknown" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren11AlertActionO7unknownyA2CmF">unknown</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>(Default) The user never chose an option. This is returned when an error is thrown by Siren.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">unknown</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,563 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>KnownError Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/KnownError" class="dashAnchor"></a>
|
||||
<a title="KnownError Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
KnownError Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>KnownError</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">KnownError</span> <span class="p">:</span> <span class="kt">LocalizedError</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Enumerates all potentials errors that Siren can handle.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO20appStoreAppIDFailureyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreAppIDFailure" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO20appStoreAppIDFailureyA2CmF">appStoreAppIDFailure</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Error retrieving trackId as the JSON does not contain a ‘trackId’ key.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">appStoreAppIDFailure</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO33appStoreDataRetrievalEmptyResultsyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreDataRetrievalEmptyResults" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO33appStoreDataRetrievalEmptyResultsyA2CmF">appStoreDataRetrievalEmptyResults</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Error retrieving App Store data as JSON results were empty. Is your app available in the US? If not, change the <code>countryCode</code> variable to fix this error.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">appStoreDataRetrievalEmptyResults</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO28appStoreDataRetrievalFailureyACs0C0_pSg_tcACmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreDataRetrievalFailure(underlyingError:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO28appStoreDataRetrievalFailureyACs0C0_pSg_tcACmF">appStoreDataRetrievalFailure(underlyingError:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Error retrieving App Store data as an error was returned.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="nf">appStoreDataRetrievalFailure</span><span class="p">(</span><span class="nv">underlyingError</span><span class="p">:</span> <span class="kt">Error</span><span class="p">?)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO26appStoreJSONParsingFailureyACs0C0_p_tcACmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreJSONParsingFailure(underlyingError:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO26appStoreJSONParsingFailureyACs0C0_p_tcACmF">appStoreJSONParsingFailure(underlyingError:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Error parsing App Store JSON data.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="nf">appStoreJSONParsingFailure</span><span class="p">(</span><span class="nv">underlyingError</span><span class="p">:</span> <span class="kt">Error</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO28appStoreOSVersionUnsupportedyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreOSVersionUnsupported" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO28appStoreOSVersionUnsupportedyA2CmF">appStoreOSVersionUnsupported</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The version of iOS on the device is lower than that of the one required by the app verison update.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">appStoreOSVersionUnsupported</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO27appStoreVersionArrayFailureyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreVersionArrayFailure" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO27appStoreVersionArrayFailureyA2CmF">appStoreVersionArrayFailure</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Error retrieving App Store verson number as the JSON does not contain a <code>version</code> key.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">appStoreVersionArrayFailure</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO25currentVersionReleaseDateyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/currentVersionReleaseDate" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO25currentVersionReleaseDateyA2CmF">currentVersionReleaseDate</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The <code>currentVersionReleaseDate</code> key is missing in the JSON payload. Please leave an issue on <a href="https://github.com/ArtSabintsev/Siren">https://github.com/ArtSabintsev/Siren</a> with as many details as possible.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">currentVersionReleaseDate</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO12malformedURLyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/malformedURL" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO12malformedURLyA2CmF">malformedURL</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>One of the iTunes URLs used in Siren is malformed. Please leave an issue on <a href="https://github.com/ArtSabintsev/Siren">https://github.com/ArtSabintsev/Siren</a> with as many details as possible.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">malformedURL</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO15missingBundleIDyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/missingBundleID" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO15missingBundleIDyA2CmF">missingBundleID</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Please make sure that you have set a <code>Bundle Identifier</code> in your project.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">missingBundleID</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO17noUpdateAvailableyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/noUpdateAvailable" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO17noUpdateAvailableyA2CmF">noUpdateAvailable</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>No new update available.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">noUpdateAvailable</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO16recentlyPromptedyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/recentlyPrompted" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO16recentlyPromptedyA2CmF">recentlyPrompted</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Siren will not present an update alert if it performed one too recently. If you would like to present an alert every time Siren is called, please consider setting the <code>UpdatePromptFrequency.immediately</code> rule in <code><a href="../Structs/RulesManager.html">RulesManager</a></code></p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">recentlyPrompted</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO15releasedTooSoonyACSi_SitcACmF"></a>
|
||||
<a name="//apple_ref/swift/Element/releasedTooSoon(daysSinceRelease:releasedForDays:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO15releasedTooSoonyACSi_SitcACmF">releasedTooSoon(daysSinceRelease:releasedForDays:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The app has been released for X days, but Siren cannot prompt the user until Y (where Y > X) days have passed.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="nf">releasedTooSoon</span><span class="p">(</span><span class="nv">daysSinceRelease</span><span class="p">:</span> <span class="kt">Int</span><span class="p">,</span> <span class="nv">releasedForDays</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO17skipVersionUpdateyACSS_SStcACmF"></a>
|
||||
<a name="//apple_ref/swift/Element/skipVersionUpdate(installedVersion:appStoreVersion:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO17skipVersionUpdateyACSS_SStcACmF">skipVersionUpdate(installedVersion:appStoreVersion:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The user has opted to skip updating their current version of the app to the current App Store version.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="nf">skipVersionUpdate</span><span class="p">(</span><span class="nv">installedVersion</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">appStoreVersion</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO20localizedDescriptionSSvp"></a>
|
||||
<a name="//apple_ref/swift/Property/localizedDescription" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO20localizedDescriptionSSvp">localizedDescription</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The localized description for each error handled by Siren.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">localizedDescription</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO05sirenC033_B3C911EAD28C83CC211C07566B0F499ALLSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/sirenError" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO05sirenC033_B3C911EAD28C83CC211C07566B0F499ALLSSvpZ">sirenError</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>An easily identifiable prefix for all errors thrown by Siren.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">var</span> <span class="nv">sirenError</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,262 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>UpdateType Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/UpdateType" class="dashAnchor"></a>
|
||||
<a title="UpdateType Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
UpdateType Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren/VersionCheckType.html">– VersionCheckType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren/LanguageType.html">– LanguageType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/UpdateType.html">UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>UpdateType</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">UpdateType</span> <span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>MARK - Siren UpdateType
|
||||
<code>UpdateType</code> defines what kind of update is available.
|
||||
It is used as parameter if user wants to use
|
||||
custom alert to inform the user about an update.</p>
|
||||
|
||||
<ul>
|
||||
<li>major: Major release available: A.b.c.d</li>
|
||||
<li>minor: Minor release available: a.B.c.d</li>
|
||||
<li>patch: Patch release available: a.b.C.d</li>
|
||||
<li>revision: Revision release available: a.b.c.D</li>
|
||||
<li>unknown: No information available about the update.</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10UpdateTypeO5majorA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/major" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10UpdateTypeO5majorA2CmF">major</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Major release available: A.b.c.d</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">major</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10UpdateTypeO5minorA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/minor" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10UpdateTypeO5minorA2CmF">minor</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Minor release available: a.B.c.d</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">minor</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10UpdateTypeO5patchA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/patch" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10UpdateTypeO5patchA2CmF">patch</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Patch release available: a.b.C.d</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">patch</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10UpdateTypeO8revisionA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/revision" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10UpdateTypeO8revisionA2CmF">revision</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Revision release available: a.b.c.D</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">revision</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10UpdateTypeO7unknownA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/unknown" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10UpdateTypeO7unknownA2CmF">unknown</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>No information available about the update.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">unknown</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-17)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,272 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Extensions Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="js/jquery.min.js" defer></script>
|
||||
<script src="js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Section/Extensions" class="dashAnchor"></a>
|
||||
<a title="Extensions Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="index.html">Siren Reference</a>
|
||||
<img id="carat" src="img/carat.png" />
|
||||
Extensions Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Extensions</h1>
|
||||
<p>The following extensions are available globally.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/c:objc(cs)NSBundle"></a>
|
||||
<a name="//apple_ref/swift/Extension/Bundle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/c:objc(cs)NSBundle">Bundle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
|
||||
<a href="Extensions/Bundle.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">Bundle</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:10Foundation4DateV"></a>
|
||||
<a name="//apple_ref/swift/Extension/Date" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:10Foundation4DateV">Date</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
|
||||
<a href="Extensions/Date.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Date</span> <span class="p">:</span> <span class="kt">ReferenceConvertible</span><span class="p">,</span> <span class="kt">Comparable</span><span class="p">,</span> <span class="kt">Equatable</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/c:objc(cs)UIAlertController"></a>
|
||||
<a name="//apple_ref/swift/Extension/UIAlertController" class="dashAnchor"></a>
|
||||
<a class="token" href="#/c:objc(cs)UIAlertController">UIAlertController</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
|
||||
<a href="Extensions/UIAlertController.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">UIAlertController</span> <span class="p">:</span> <span class="kt">UIViewController</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/c:objc(cs)NSUserDefaults"></a>
|
||||
<a name="//apple_ref/swift/Extension/UserDefaults" class="dashAnchor"></a>
|
||||
<a class="token" href="#/c:objc(cs)NSUserDefaults">UserDefaults</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
|
||||
<a href="Extensions/UserDefaults.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">UserDefaults</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,433 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Bundle Extension Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Extension/Bundle" class="dashAnchor"></a>
|
||||
<a title="Bundle Extension Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
Bundle Extension Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Bundle</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">Bundle</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV"></a>
|
||||
<a name="//apple_ref/swift/Struct/Constants" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV">Constants</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constants used in the <code>Bundle</code> extension.</p>
|
||||
|
||||
<a href="../Extensions/Bundle/Constants.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Constants</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE7versionSSSgyFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/version()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE7versionSSSgyFZ">version()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Fetches the current verison of the app.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">version</span><span class="p">()</span> <span class="o">-></span> <span class="kt">String</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The current installed version of the app.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE15localizedString6forKey20andForceLocalizationS2S_AC0I0V8LanguageOSgtFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/localizedString(forKey:andForceLocalization:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE15localizedString6forKey20andForceLocalizationS2S_AC0I0V8LanguageOSgtFZ">localizedString(forKey:andForceLocalization:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Returns the localized string for a given default string.</p>
|
||||
|
||||
<p>By default, the English language localization is used.
|
||||
If the device’s localization is set to another locale, that local’s language is used if it’s supported by Siren.
|
||||
If <code>forcedLanguage</code> is set to <code>true</code>, the chosen language is shown for all devices, irrespective of their device’s localization.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">localizedString</span><span class="p">(</span><span class="n">forKey</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="n">andForceLocalization</span> <span class="nv">forcedLanguage</span><span class="p">:</span> <span class="kt"><a href="../Structs/Localization.html">Localization</a></span><span class="o">.</span><span class="kt">Language</span><span class="p">?)</span> <span class="o">-></span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>key</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The default string used to search the localization table for a specific translation.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>forcedLanguage</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>Returns</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The localized string for a given key.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE19bestMatchingAppNameSSyFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/bestMatchingAppName()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE19bestMatchingAppNameSSyFZ">bestMatchingAppName()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The appropriate name for the app to be displayed in the update alert.</p>
|
||||
|
||||
<p>Siren checks <code>CFBundleDisplayName</code> first. It then falls back to
|
||||
to <code>kCFBundleNameKey</code> and ultimately to an empty string
|
||||
if the aforementioned values are nil.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">bestMatchingAppName</span><span class="p">()</span> <span class="o">-></span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The name of the app.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE15sirenBundlePath33_9C775CF4CEC7A5F21E625F58C71BDF22LLSSSgyFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenBundlePath()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE15sirenBundlePath33_9C775CF4CEC7A5F21E625F58C71BDF22LLSSSgyFZ">sirenBundlePath()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The path to Siren’s localization <code>Bundle</code>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">sirenBundlePath</span><span class="p">()</span> <span class="o">-></span> <span class="kt">String</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The bundle’s path or <code>nil</code>.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE21sirenForcedBundlePath33_9C775CF4CEC7A5F21E625F58C71BDF22LL25forceLanguageLocalizationSSSgAC0R0V0Q0O_tFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenForcedBundlePath(forceLanguageLocalization:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE21sirenForcedBundlePath33_9C775CF4CEC7A5F21E625F58C71BDF22LL25forceLanguageLocalizationSSSgAC0R0V0Q0O_tFZ">sirenForcedBundlePath(forceLanguageLocalization:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The path for a particular language localizationin Siren’s localization <code>Bundle</code>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">sirenForcedBundlePath</span><span class="p">(</span><span class="nv">forceLanguageLocalization</span><span class="p">:</span> <span class="kt"><a href="../Structs/Localization.html">Localization</a></span><span class="o">.</span><span class="kt">Language</span><span class="p">)</span> <span class="o">-></span> <span class="kt">String</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>forceLanguageLocalization</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The language localization that should be searched for in Siren’s localization <code>bundle</code>.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The path to the forced language localization.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE14deviceLanguage33_9C775CF4CEC7A5F21E625F58C71BDF22LLAC12LocalizationV0D0OSgyFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/deviceLanguage()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE14deviceLanguage33_9C775CF4CEC7A5F21E625F58C71BDF22LLAC12LocalizationV0D0OSgyFZ">deviceLanguage()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The user’s preferred language based on their device’s localization.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">deviceLanguage</span><span class="p">()</span> <span class="o">-></span> <span class="kt"><a href="../Structs/Localization.html">Localization</a></span><span class="o">.</span><span class="kt">Language</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The user’s preferred language.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,320 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Constants Structure Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../../js/jquery.min.js" defer></script>
|
||||
<script src="../../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Struct/Constants" class="dashAnchor"></a>
|
||||
<a title="Constants Structure Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
Constants Structure Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Constants</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Constants</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Constants used in the <code>Bundle</code> extension.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV15bundleExtensionSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/bundleExtension" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV15bundleExtensionSSvpZ">bundleExtension</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for the <code>.bundle</code> file extension.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">bundleExtension</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV11displayNameSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/displayName" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV11displayNameSSvpZ">displayName</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for <code>CFBundleDisplayName</code>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">displayName</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV19englishLocalizationSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/englishLocalization" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV19englishLocalizationSSvpZ">englishLocalization</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for the default US English localization.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">englishLocalization</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV16projectExtensionSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/projectExtension" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV16projectExtensionSSvpZ">projectExtension</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for the project file extension.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">projectExtension</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV18shortVersionStringSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/shortVersionString" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV18shortVersionStringSSvpZ">shortVersionString</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for <code>CFBundleShortVersionString</code>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">shortVersionString</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV5tableSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/table" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV5tableSSvpZ">table</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for the localization table.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">table</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,257 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Date Extension Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Extension/Date" class="dashAnchor"></a>
|
||||
<a title="Date Extension Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
Date Extension Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Date</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Date</span> <span class="p">:</span> <span class="kt">ReferenceConvertible</span><span class="p">,</span> <span class="kt">Comparable</span><span class="p">,</span> <span class="kt">Equatable</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:10Foundation4DateV5SirenE4days5sinceSiAC_tFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/days(since:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:10Foundation4DateV5SirenE4days5sinceSiAC_tFZ">days(since:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The amount of days passed from a specific source date.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">days</span><span class="p">(</span><span class="n">since</span> <span class="nv">date</span><span class="p">:</span> <span class="kt">Date</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Int</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>date</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The source date.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The amount of days passed since the source date.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:10Foundation4DateV5SirenE4days5sinceSiSgSS_tFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/days(since:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:10Foundation4DateV5SirenE4days5sinceSiSgSS_tFZ">days(since:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The amount of days passed from a specific source date string.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">days</span><span class="p">(</span><span class="n">since</span> <span class="nv">dateString</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Int</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>dateString</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The source date string.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The amount of days passed since the source date.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,249 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>UIAlertController Extension Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Extension/UIAlertController" class="dashAnchor"></a>
|
||||
<a title="UIAlertController Extension Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
UIAlertController Extension Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>UIAlertController</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">UIAlertController</span> <span class="p">:</span> <span class="kt">UIViewController</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So17UIAlertControllerC5SirenE4show6windowySo8UIWindowC_tF"></a>
|
||||
<a name="//apple_ref/swift/Method/show(window:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So17UIAlertControllerC5SirenE4show6windowySo8UIWindowC_tF">show(window:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Presents Siren’s <code>UIAlertController</code> in a new <code>UIWindow</code>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">show</span><span class="p">(</span><span class="nv">window</span><span class="p">:</span> <span class="kt">UIWindow</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>window</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The <code>UIWindow</code> that <em>should</em> reference Siren’s <code>UIAlertController</code>.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So17UIAlertControllerC5SirenE4hide6windowySo8UIWindowC_tF"></a>
|
||||
<a name="//apple_ref/swift/Method/hide(window:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So17UIAlertControllerC5SirenE4hide6windowySo8UIWindowC_tF">hide(window:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Hides Siren’s <code>UIAlertController</code> within a given window.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">hide</span><span class="p">(</span><span class="nv">window</span><span class="p">:</span> <span class="kt">UIWindow</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>window</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The <code>UIWindow</code> that references Siren’s <code>UIAlertController</code>.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,266 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>UserDefaults Extension Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Extension/UserDefaults" class="dashAnchor"></a>
|
||||
<a title="UserDefaults Extension Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
UserDefaults Extension Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>UserDefaults</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">UserDefaults</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO"></a>
|
||||
<a name="//apple_ref/swift/Enum/SirenKeys" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO">SirenKeys</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Siren-specific <code>UserDefaults</code> Keys</p>
|
||||
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">enum</span> <span class="kt">SirenKeys</span> <span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE43shouldPerformVersionCheckOnSubsequentLaunchSbvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/shouldPerformVersionCheckOnSubsequentLaunch" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE43shouldPerformVersionCheckOnSubsequentLaunchSbvpZ">shouldPerformVersionCheckOnSubsequentLaunch</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Sets and Gets a <code>UserDefault</code> around performing a version check on a subsequent launch.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">var</span> <span class="nv">shouldPerformVersionCheckOnSubsequentLaunch</span><span class="p">:</span> <span class="kt">Bool</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE20storedSkippedVersionSSSgvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/storedSkippedVersion" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE20storedSkippedVersionSSSgvpZ">storedSkippedVersion</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Sets and Gets a <code>UserDefault</code> around storing a version that the user wants to skip updating.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">var</span> <span class="nv">storedSkippedVersion</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE21alertPresentationDate10Foundation0F0VSgvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/alertPresentationDate" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE21alertPresentationDate10Foundation0F0VSgvpZ">alertPresentationDate</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Sets and Gets a <code>UserDefault</code> around the last time the user was presented a version update alert.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">var</span> <span class="nv">alertPresentationDate</span><span class="p">:</span> <span class="kt">Date</span><span class="p">?</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,240 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>SirenKeys Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../../js/jquery.min.js" defer></script>
|
||||
<script src="../../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/SirenKeys" class="dashAnchor"></a>
|
||||
<a title="SirenKeys Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
SirenKeys Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>SirenKeys</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">enum</span> <span class="kt">SirenKeys</span> <span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Siren-specific <code>UserDefaults</code> Keys</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO37PerformVersionCheckOnSubsequentLaunchyA2FmF"></a>
|
||||
<a name="//apple_ref/swift/Element/PerformVersionCheckOnSubsequentLaunch" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO37PerformVersionCheckOnSubsequentLaunchyA2FmF">PerformVersionCheckOnSubsequentLaunch</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Key that notifies Siren to perform a version check and present
|
||||
the Siren alert the next time the user launches the app.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="kt">PerformVersionCheckOnSubsequentLaunch</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO22StoredVersionCheckDateyA2FmF"></a>
|
||||
<a name="//apple_ref/swift/Element/StoredVersionCheckDate" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO22StoredVersionCheckDateyA2FmF">StoredVersionCheckDate</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Key that stores the timestamp of the last version check.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="kt">StoredVersionCheckDate</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO20StoredSkippedVersionyA2FmF"></a>
|
||||
<a name="//apple_ref/swift/Element/StoredSkippedVersion" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO20StoredSkippedVersionyA2FmF">StoredSkippedVersion</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Key that stores the version that a user decided to skip.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="kt">StoredSkippedVersion</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,146 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Protocols Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="js/jquery.min.js" defer></script>
|
||||
<script src="js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Section/Protocols" class="dashAnchor"></a>
|
||||
<a title="Protocols Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="index.html">Siren Reference</a>
|
||||
<img id="carat" src="img/carat.png" />
|
||||
Protocols Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Constants.html">Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Constants/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Constants/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Constants/VersionCheckFrequency.html">– VersionCheckFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Protocols</h1>
|
||||
<p>The following protocols are available globally.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<div class="task-name-container">
|
||||
<a name="/SirenDelegate%20Protocol"></a>
|
||||
<a name="//apple_ref/swift/Section/SirenDelegate Protocol" class="dashAnchor"></a>
|
||||
<a href="#/SirenDelegate%20Protocol">
|
||||
<h3 class="section-name">SirenDelegate Protocol</h3>
|
||||
</a>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP"></a>
|
||||
<a name="//apple_ref/swift/Protocol/SirenDelegate" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP">SirenDelegate</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Delegate that handles all codepaths for Siren upon version check completion.</p>
|
||||
|
||||
<a href="Protocols/SirenDelegate.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SirenDelegate</span> <span class="p">:</span> <span class="kt">NSObjectProtocol</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-18)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,433 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>SirenDelegate Protocol Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Protocol/SirenDelegate" class="dashAnchor"></a>
|
||||
<a title="SirenDelegate Protocol Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
SirenDelegate Protocol Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants.html">Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants/VersionCheckFrequency.html">– VersionCheckFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>SirenDelegate</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SirenDelegate</span> <span class="p">:</span> <span class="kt">NSObjectProtocol</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Delegate that handles all codepaths for Siren upon version check completion.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP36sirenDidDetectNewVersionWithoutAlertySS5title_SS7messageAA9ConstantsV10UpdateTypeO06updateN0tF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenDidDetectNewVersionWithoutAlert(title:message:updateType:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP36sirenDidDetectNewVersionWithoutAlertySS5title_SS7messageAA9ConstantsV10UpdateTypeO06updateN0tF">sirenDidDetectNewVersionWithoutAlert(title:message:updateType:)</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Siren performed a version check and did not display an alert.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenDidDetectNewVersionWithoutAlert</span><span class="p">(</span><span class="nv">title</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">updateType</span><span class="p">:</span> <span class="kt"><a href="../Structs/Constants.html">Constants</a></span><span class="o">.</span><span class="kt">UpdateType</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP24sirenDidFailVersionCheckys5Error_p5error_tF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenDidFailVersionCheck(error:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP24sirenDidFailVersionCheckys5Error_p5error_tF">sirenDidFailVersionCheck(error:)</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Siren failed to perform version check.</p>
|
||||
<div class="aside aside-note">
|
||||
<p class="aside-title">Note</p>
|
||||
Depending on the reason for failure,
|
||||
a system-level error may be returned.
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenDidFailVersionCheck</span><span class="p">(</span><span class="nv">error</span><span class="p">:</span> <span class="kt">Error</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP24sirenDidShowUpdateDialogyAA9ConstantsV9AlertTypeO05alertJ0_tF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenDidShowUpdateDialog(alertType:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP24sirenDidShowUpdateDialogyAA9ConstantsV9AlertTypeO05alertJ0_tF">sirenDidShowUpdateDialog(alertType:)</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>User presented with an update dialog.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenDidShowUpdateDialog</span><span class="p">(</span><span class="nv">alertType</span><span class="p">:</span> <span class="kt"><a href="../Structs/Constants.html">Constants</a></span><span class="o">.</span><span class="kt">AlertType</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>alertType</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The type of alert that was presented.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP27sirenLatestVersionInstalledyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenLatestVersionInstalled()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP27sirenLatestVersionInstalledyyF">sirenLatestVersionInstalled()</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Siren performed a version check and the latest version was already installed.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenLatestVersionInstalled</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP50sirenNetworkCallDidReturnWithNewVersionInformationyAA11LookupModelV06lookupM0_tF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenNetworkCallDidReturnWithNewVersionInformation(lookupModel:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP50sirenNetworkCallDidReturnWithNewVersionInformationyAA11LookupModelV06lookupM0_tF">sirenNetworkCallDidReturnWithNewVersionInformation(lookupModel:)</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Provides the decoded JSON information from a successful version check call.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenNetworkCallDidReturnWithNewVersionInformation</span><span class="p">(</span><span class="nv">lookupModel</span><span class="p">:</span> <span class="kt"><a href="../Structs/LookupModel.html">LookupModel</a></span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>lookupModel</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The <code>Decodable</code> model representing the JSON results from the iTunes Lookup API.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP18sirenUserDidCancelyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenUserDidCancel()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP18sirenUserDidCancelyyF">sirenUserDidCancel()</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>User did click on button that cancels update dialog.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidCancel</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP26sirenUserDidLaunchAppStoreyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenUserDidLaunchAppStore()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP26sirenUserDidLaunchAppStoreyyF">sirenUserDidLaunchAppStore()</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>User did click on button that launched <q>App Store.app</q>.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidLaunchAppStore</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP23sirenUserDidSkipVersionyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenUserDidSkipVersion()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP23sirenUserDidSkipVersionyyF">sirenUserDidSkipVersion()</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>User did click on button that skips version update.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidSkipVersion</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-18)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -1,436 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Structures Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="js/jquery.min.js" defer></script>
|
||||
<script src="js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Section/Structures" class="dashAnchor"></a>
|
||||
<a title="Structures Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="index.html">Siren Reference</a>
|
||||
<img id="carat" src="img/carat.png" />
|
||||
Structures Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Results.html">Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Structures</h1>
|
||||
<p>The following structures are available globally.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10APIManagerV"></a>
|
||||
<a name="//apple_ref/swift/Struct/APIManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10APIManagerV">APIManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>APIManager for Siren</p>
|
||||
|
||||
<a href="Structs/APIManager.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">APIManager</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren19PresentationManagerV"></a>
|
||||
<a name="//apple_ref/swift/Struct/PresentationManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren19PresentationManagerV">PresentationManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>PresentationManager for Siren</p>
|
||||
|
||||
<a href="Structs/PresentationManager.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PresentationManager</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren12RulesManagerV"></a>
|
||||
<a name="//apple_ref/swift/Struct/RulesManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren12RulesManagerV">RulesManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>RulesManager for Siren</p>
|
||||
|
||||
<a href="Structs/RulesManager.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">RulesManager</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren14AlertConstantsV"></a>
|
||||
<a name="//apple_ref/swift/Struct/AlertConstants" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertConstantsV">AlertConstants</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The default constants used for the update alert’s messaging.</p>
|
||||
|
||||
<a href="Structs/AlertConstants.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">AlertConstants</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren12LocalizationV"></a>
|
||||
<a name="//apple_ref/swift/Struct/Localization" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren12LocalizationV">Localization</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Localization information and strings for Siren.</p>
|
||||
|
||||
<a href="Structs/Localization.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Localization</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren11LookupModelV"></a>
|
||||
<a name="//apple_ref/swift/Struct/LookupModel" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren11LookupModelV">LookupModel</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Model representing a selection of results from the iTunes Lookup API.</p>
|
||||
|
||||
<a href="Structs/LookupModel.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">LookupModel</span> <span class="p">:</span> <span class="kt">Decodable</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren7ResultsV"></a>
|
||||
<a name="//apple_ref/swift/Struct/Results" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren7ResultsV">Results</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The relevant metadata returned from Siren upon completing a successful version check.</p>
|
||||
|
||||
<a href="Structs/Results.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Results</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren5RulesV"></a>
|
||||
<a name="//apple_ref/swift/Struct/Rules" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren5RulesV">Rules</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Alert Presentation Rules for Siren.</p>
|
||||
|
||||
<a href="Structs/Rules.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Rules</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10DataParserV"></a>
|
||||
<a name="//apple_ref/swift/Struct/DataParser" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10DataParserV">DataParser</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Version parsing functions for Siren.</p>
|
||||
|
||||
<a href="Structs/DataParser.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DataParser</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-01-05)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user