Compare commits

...

93 Commits

Author SHA1 Message Date
Arthur Ariel Sabintsev 1febce77dd Updated podspec 2018-09-27 22:22:23 -04:00
Arthur Ariel Sabintsev 2197494481 Removed force unwrapped localization methods 2018-09-27 22:21:42 -04:00
Arthur Ariel Sabintsev 74284809e3 Cleaned up constants file 2018-09-27 21:51:47 -04:00
Arthur Ariel Sabintsev 841d04dafd Removed dead file 2018-09-27 21:47:09 -04:00
Arthur Ariel Sabintsev d4c7baf247 project updates 2018-09-27 21:41:46 -04:00
Arthur Ariel Sabintsev 6f0b8f733c Minor changes 2018-09-27 21:39:09 -04:00
Arthur Ariel Sabintsev f217d5cd73 Further refactoring for Swift 4.2 (#231)
* Began moving code around to clean Siren.swift

* further cleanup of siren.swift

* Removed superfluous test helping function

* More code cleanup

* Added code that potentially fixes old bug about users not being reprompted after NEXT TIME is tapped

* Continued work on UserDefaults changes

* Improved UserDefaults handling

* Fixed UserDefaults comments
2018-09-27 21:37:01 -04:00
Arthur Ariel Sabintsev 7cfd6e788f Update README.md 2018-09-22 15:46:29 -04:00
Arthur Ariel Sabintsev 1a215cc608 Converted SirenAlertMessaging strings to type of NSAttributedString (#228)
* Converted SirenAlertMessaging strings to type of NSAttributedString

* Updated documentation

* Removed whitespace

* Removed more whitespace

* Updated sample code and README

* Updated sample code and README

* Updated sample code and README

* Added some docs

* Updated Gems

* Updated podspec
2018-09-22 15:41:32 -04:00
Arthur Ariel Sabintsev 7e30501d1c Update ISSUE_TEMPLATE.md 2018-09-21 07:53:02 -04:00
Arthur Ariel Sabintsev 6df36c9c8c Update .travis.yml 2018-09-20 08:23:10 -04:00
Arthur Ariel Sabintsev d7bbe9e8a6 Update README.md 2018-09-18 22:14:19 -04:00
Arthur Ariel Sabintsev 62b51d52a5 Removed .build folder 2018-09-18 21:43:19 -04:00
Arthur Ariel Sabintsev 6aa91d26c4 Minor changes 2018-09-18 21:07:44 -04:00
Arthur Ariel Sabintsev beb19f19c0 Updated osx_image to xcode10 2018-09-16 22:16:31 -04:00
Arthur Ariel Sabintsev 6e504a84a0 Updated example project and framework swift_version to 4.2 2018-09-16 21:58:19 -04:00
Arthur Ariel Sabintsev 129bffe9d8 Update README.md 2018-09-16 21:52:35 -04:00
Arthur Ariel Sabintsev cd4328feee Merged with swift4.2 branch 2018-09-16 21:46:26 -04:00
Arthur Ariel Sabintsev 1ac84cafc8 Updated podspec and other files 2018-09-16 21:45:58 -04:00
Arthur Ariel Sabintsev 36bff434f6 Merge branch 'master' into swift4.2 2018-09-16 21:40:38 -04:00
Arthur Ariel Sabintsev 94b319573e Update README.md 2018-08-07 14:17:50 -04:00
Arthur Ariel Sabintsev 43abfabe15 Update README.md 2018-08-04 21:10:50 -04:00
Arthur Ariel Sabintsev 9ac0dea011 Update README.md 2018-08-03 09:25:13 -04:00
Arthur Ariel Sabintsev 9721263f90 Updated project and framework to Swift 4.2. Updated UIWindowLevelAlert reference 2018-08-03 09:23:58 -04:00
Arthur Ariel Sabintsev 124fd715ef Xcode 10b5 fixes. 2018-08-03 08:59:16 -04:00
Arthur Ariel Sabintsev 1c3aee01fd Updated travis.yml 2018-07-28 01:13:26 -04:00
Arthur Ariel Sabintsev fe3b0acb6d Updated travis.yml 2018-07-28 00:54:08 -04:00
Arthur Ariel Sabintsev 509b5c9ca3 Updated travis.yml 2018-07-28 00:47:29 -04:00
Arthur Ariel Sabintsev 9c00d90424 Updated travis.yml 2018-07-28 00:40:01 -04:00
Arthur Ariel Sabintsev b4bba84753 Updated travis.yml 2018-07-27 22:39:40 -04:00
Arthur Ariel Sabintsev 47b95c97e0 Update README.md 2018-07-27 22:31:09 -04:00
Arthur Ariel Sabintsev fedee61c34 Update .travis.yml 2018-07-27 22:30:27 -04:00
Arthur Ariel Sabintsev 0c5c0fd1bf Update README.md 2018-07-25 22:02:40 -04:00
Arthur Ariel Sabintsev f2929ef72b Reverted docs location 2018-07-25 22:02:18 -04:00
Arthur Ariel Sabintsev f19075e6b4 Updated docs. Made certain sequences lazy 2018-07-25 22:00:38 -04:00
Arthur Ariel Sabintsev 4063d7e061 Updated docs and gems 2018-07-25 11:46:42 -04:00
Arthur Ariel Sabintsev 75bf43da3c Merged with downstream 2018-07-24 10:01:39 -04:00
Arthur Ariel Sabintsev 556382e38e Updatdd metadata 2018-07-24 09:59:59 -04:00
Titouan Van Belle de480f9cb8 Update German localisation (#218)
The current translation is not grammatically ideal.
2018-07-24 09:56:48 -04:00
Arthur Ariel Sabintsev 0643cd318c Update README.md 2018-07-04 12:34:34 -04:00
Arthur Ariel Sabintsev c7ffac16a1 Update README.md 2018-07-04 12:34:20 -04:00
Arthur Ariel Sabintsev 0f85e4087a Updated CONTRIBUTORS.md file 2018-07-01 22:33:08 -04:00
Arthur Ariel Sabintsev 1bdffa86fc Updated podspec 2018-07-01 22:29:50 -04:00
Arthur Ariel Sabintsev 8ffc87556c Updated gems 2018-07-01 22:29:19 -04:00
Arthur Ariel Sabintsev 43a5d734c1 Minor changes 2018-07-01 22:28:34 -04:00
Ryan 4fad697cd5 Use method introduced in iOS 10 for opening URLs with UIApplication, when appropriate. (#216) 2018-07-01 22:15:34 -04:00
Arthur Ariel Sabintsev 7ab708edf6 Minor changes after path renames 2018-07-01 21:59:48 -04:00
Arthur Ariel Sabintsev 094b218c1d Renamed example project and tests project 2018-07-01 21:57:26 -04:00
Arthur Ariel Sabintsev 3117731c00 Removed jazzy.yml 2018-06-07 22:52:10 -04:00
Arthur Ariel Sabintsev 3d7ebea02f Merge branch 'master' of https://github.com/ArtSabintsev/Siren 2018-06-07 22:51:35 -04:00
Arthur Ariel Sabintsev 53f32cd3d5 Updated docs 2018-06-07 22:51:33 -04:00
Arthur Ariel Sabintsev af6a9825e1 Update .gitattributes 2018-06-07 22:50:02 -04:00
Arthur Ariel Sabintsev bc570b028e Updated README 2018-06-07 22:48:42 -04:00
Arthur Ariel Sabintsev c37cd6968f Update .gitattributes 2018-06-07 22:47:23 -04:00
Arthur Ariel Sabintsev ef8498a8e6 Updated metadata 2018-06-06 20:51:41 -04:00
Arthur Ariel Sabintsev 10ddcab12c Updated logic slightly. Updated sample bundleId 2018-06-06 20:49:35 -04:00
Arthur Ariel Sabintsev 8344ed8cb3 Merge branch 'master' of https://github.com/ArtSabintsev/Siren 2018-06-06 20:07:38 -04:00
Gabriel Martelo d3668c8943 Localized title (#214)
* Expose localized title

* Update sirenDidDetectNewVersionWithoutAlert delegate method
2018-06-06 20:06:04 -04:00
Arthur Ariel Sabintsev 4def0e9441 Merge branch 'master' of https://github.com/ArtSabintsev/Siren 2018-05-08 19:48:47 -04:00
Arthur Ariel Sabintsev fa692a3912 Update README.md 2018-04-27 23:09:17 -04:00
Arthur Ariel Sabintsev 80a449975b Updated gitattributes 2018-04-27 23:09:02 -04:00
Arthur Ariel Sabintsev 3fd2f93d21 Update README.md 2018-04-27 23:08:41 -04:00
Arthur Ariel Sabintsev 13ad9ba3da Updated gitattributes 2018-04-27 23:04:37 -04:00
Arthur Ariel Sabintsev 31a59a4b3c Added .gitattributes 2018-04-27 23:00:45 -04:00
Arthur Ariel Sabintsev 19f303535c Updated podspec 2018-04-27 22:50:39 -04:00
Arthur Ariel Sabintsev cdfae11e70 SirenDelegate Enhancements (#210)
* SirenDelegate now returns SirenLookupModel

* Updated README and documentation

* Updated README

* Updated .travis.yml file
2018-04-27 22:50:11 -04:00
Arthur Ariel Sabintsev 676b125666 Updated podspec 2018-04-27 22:19:59 -04:00
Arthur Ariel Sabintsev 3032aed434 Updated jazzy and docs 2018-04-27 22:19:35 -04:00
Arthur Ariel Sabintsev a9a5be48e6 Minor enhancements to documentation and SirenLookupModel 2018-04-27 22:10:18 -04:00
Antoine Cœur 6999fefad4 HTTPS when supported (#209) 2018-04-27 12:56:47 -04:00
Arthur Ariel Sabintsev 7ef6584c14 Update README.md 2018-04-27 11:00:05 -04:00
Arthur Ariel Sabintsev ecf41d965c Merge branch 'master' of https://github.com/ArtSabintsev/Siren 2018-04-23 19:59:53 -04:00
Arthur Ariel Sabintsev 4338a2dae2 Updated model to be alphabetical 2018-04-23 19:59:52 -04:00
Arthur Ariel Sabintsev e80a073fe9 Update README.md 2018-04-23 19:57:35 -04:00
Arthur Ariel Sabintsev a1404096bf Updated Siren 2018-04-23 10:23:14 -04:00
Arthur Ariel Sabintsev cef1a7f560 Update README.md 2018-04-23 10:19:26 -04:00
Arthur Ariel Sabintsev 7ef618d402 Update README.md 2018-04-23 10:15:59 -04:00
Arthur Ariel Sabintsev 4b32315ad1 Modified travis.yml file 2018-04-23 10:06:33 -04:00
Arthur Ariel Sabintsev 2504f5efc0 Modified travis.yml file 2018-04-23 09:58:12 -04:00
Arthur Ariel Sabintsev 2acc8ee0c0 Added travis.yml file 2018-04-23 09:53:47 -04:00
Arthur Ariel Sabintsev 2c833b84ee Updated docs and metadata 2018-04-23 09:50:35 -04:00
Arthur Ariel Sabintsev fd5aaabb99 Minor doc change 2018-04-23 09:44:23 -04:00
Arthur Ariel Sabintsev 4eb31510d0 Fixed unowned to weak 2018-04-23 09:40:12 -04:00
Arthur Ariel Sabintsev 8bb784a16b SirenLookupModel now parses releaseNotes. Closes #206. 2018-04-23 09:35:01 -04:00
Arthur Ariel Sabintsev c98b124f73 Update README.md 2018-03-29 16:42:16 -04:00
Arthur Ariel Sabintsev 5e12e74e9c Update README.md 2018-03-29 16:16:09 -04:00
Arthur Ariel Sabintsev 04ad0f1682 Update gemfile 2018-03-29 16:02:46 -04:00
Arthur Ariel Sabintsev 87a58c65de Updated podspec 2018-03-29 16:01:38 -04:00
Arthur Ariel Sabintsev c2e278df55 Updated syntax for 4.1 2018-03-29 15:58:42 -04:00
Arthur Ariel Sabintsev dee7bc8e5e Updated synatx for 4.1. 2018-03-29 15:58:04 -04:00
Arthur Ariel Sabintsev e7fc566b10 Updated docs 2018-03-22 00:30:58 -04:00
Arthur Ariel Sabintsev a4ab45f772 Update README.md 2018-03-14 22:30:06 -04:00
Arthur Ariel Sabintsev c72eaf234c Improved ccoapods compatibility by modernizing podspec 2018-03-14 21:32:52 -04:00
134 changed files with 2306 additions and 12226 deletions
+1
View File
@@ -0,0 +1 @@
docs/* linguist-vendored
+4 -4
View File
@@ -1,16 +1,16 @@
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.
+1 -1
View File
@@ -22,6 +22,6 @@ DerivedData
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
#
# Pods/
-10
View File
@@ -1,10 +0,0 @@
module: Siren
author: Arthur Ariel Sabintsev
author_url: http://www.sabintsev.com
github_url: https://github.com/artsabintsev/siren
copyright: "© 2015-2017 [Arthur Ariel Sabintsev](http://www.sabintsev.com)"
theme: apple
output: docs
documentation: docs/*.md
clean: true
podspec: Siren.podspec
+1
View File
@@ -0,0 +1 @@
ruby-2.5.0
-1
View File
@@ -1 +0,0 @@
4.0
+15
View File
@@ -0,0 +1,15 @@
language: objective-c
osx_image: xcode10
notifications:
email: false
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
+8 -6
View File
@@ -1,11 +1,11 @@
### Creators
[Arthur Ariel Sabintsev](http://www.sabintsev.com/) and [Aaron Brager](http://twitter.com/GetAaron)
[Arthur Ariel Sabintsev](http://www.sabintsev.com/) and [Aaron Brager](https://twitter.com/GetAaron)
### Siren Project Contributors
- [Dmitry Bespalov](https://github.com/diamondsky) for [Pull Request #7](https://github.com/ArtSabintsev/Siren/pull/7)
- [Daniel Bauke](https://github.com/bonkey) for [Pull Request #8](https://github.com/ArtSabintsev/Siren/pull/8)
- [ipedro](https://github.com/ipedro) for [Pull Request #76 (Harpy)](https://github.com/ArtSabintsev/Harpy/pull/76)
- [Michael Graff](http://github.com/skandragon) for [Pull Request #15](https://github.com/ArtSabintsev/Siren/pull/15)
- [Michael Graff](https://github.com/skandragon) for [Pull Request #15](https://github.com/ArtSabintsev/Siren/pull/15)
- [Jaroslav_](https://github.com/jaroslavas) for [Pull Request #83 (Harpy)](https://github.com/ArtSabintsev/Harpy/pull/83)
- [Dylan Bettermann](https://github.com/dbettermann) for [Pull Request #18](https://github.com/ArtSabintsev/Siren/pull/18)
- [Daniel](https://github.com/Daniel) for [Pull Request #21](https://github.com/ArtSabintsev/Siren/pull/21)
@@ -50,10 +50,12 @@
- [wbison](https://github.com/wbison) for [Pull Request #185 (Harpy)](https://github.com/ArtSabintsev/Harpy/pull/185)
- [Balázs Vincze](https://github.com/vinczebalazs) for [Pull Request #200](https://github.com/ArtSabintsev/siren/pull/200)
- [Txai Wieser](https://github.com/txaiwieser) for [Pull Request #201](https://github.com/ArtSabintsev/siren/pull/200)
- [Gabriel Martelo](https://github.com/gabmarfer) for [Pull Request #214](https://github.com/ArtSabintsev/Siren/pull/214)
- [Ryan](ryanthon) for [Pull Request #216](https://github.com/ArtSabintsev/Siren/pull/216)
- [Titouan Van Belle](TitouanVanBelle) for [Pull Request #218](https://github.com/ArtSabintsev/Siren/pull/218)
### Harpy Project Contributors
This repo is a Swift language port of [Harpy](http://github.com/ArtSabintsev/Harpy). We couldn't have built this port without acknowledging the following developers who were instrumental in getting Harpy to v3.2.1, the version of Harpy that Siren was based on.
This repo is a Swift language port of [Harpy](https://github.com/ArtSabintsev/Harpy). We couldn't have built this port without acknowledging the following developers who were instrumental in getting Harpy to v3.2.1, the version of Harpy that Siren was based on.
A huge **Thank You** to the following developers:
@@ -65,7 +67,7 @@ A huge **Thank You** to the following developers:
- [David Keegan](https://github.com/kgn)
- [Erick](https://github.com/dexcell0)
- [Ercillagorka](https://github.com/ercillagorka)
- [Jamie Ly](http://github,com/jamiely)
- [Jamie Ly](https://github,com/jamiely)
- [Jon Andersen](https://github.com/jonandersen)
- [Josh T. Brown](https://github.com/joshuatbrown)
- [Mark Rickert](https://github.com/markrickert)
@@ -77,4 +79,4 @@ A huge **Thank You** to the following developers:
- [TrentW](https://github.com/trentw)
### Special Thanks
Finally, a massive **Thank You** to [Aaron Brager](http://twitter.com/GetAaron) for the dev-work and issue-moderation he's done on Harpy since 2012. A Swift port could not have happened without him.
Finally, a massive **Thank You** to [Aaron Brager](https://twitter.com/GetAaron) for the dev-work and issue-moderation he's done on Harpy since 2012. A Swift port could not have happened without him.
@@ -8,36 +8,31 @@
/* Begin PBXBuildFile section */
55EC364B1E6BB98A00726F13 /* Siren.h in Headers */ = {isa = PBXBuildFile; fileRef = 55EC36491E6BB98A00726F13 /* Siren.h */; settings = {ATTRIBUTES = (Public, ); }; };
55EC364E1E6BB98A00726F13 /* Siren.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55EC36471E6BB98A00726F13 /* Siren.framework */; };
55EC364F1E6BB98A00726F13 /* Siren.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 55EC36471E6BB98A00726F13 /* Siren.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
55EC36601E6BB99B00726F13 /* Siren.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 55EC365E1E6BB99B00726F13 /* Siren.bundle */; };
55EC36611E6BB99B00726F13 /* Siren.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55EC365F1E6BB99B00726F13 /* Siren.swift */; };
8E1635A91E6A0B9C0060CE27 /* SirenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EE6C74C1E6A0AE100DBE454 /* SirenTests.swift */; };
8E2499BF1FD83DDF00F384BA /* SirenAlertMessaging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E2499BE1FD83DDF00F384BA /* SirenAlertMessaging.swift */; };
8E43D6231E8223EE00ECFFC8 /* SirenDateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E43D6221E8223EE00ECFFC8 /* SirenDateExtension.swift */; };
8E528A301E989A7A00B643C4 /* SirenDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E528A2F1E989A7A00B643C4 /* SirenDelegate.swift */; };
8E528A321E989E0A00B643C4 /* SirenTestHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E528A311E989E0A00B643C4 /* SirenTestHelper.swift */; };
8E5D15B11F3632D7001C0960 /* SirenLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E5D15B01F3632D7001C0960 /* SirenLog.swift */; };
8E9C238B1E7CDB42000ED3DA /* SirenBundleExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E9C238A1E7CDB42000ED3DA /* SirenBundleExtension.swift */; };
8E9C238D1E7CDD31000ED3DA /* SirenUIAlertControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E9C238C1E7CDD31000ED3DA /* SirenUIAlertControllerExtension.swift */; };
8E9C238F1E7CDDE7000ED3DA /* SirenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E9C238E1E7CDDE7000ED3DA /* SirenViewController.swift */; };
8EACA9701F37F327003134CA /* SirenLookupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EACA96F1F37F327003134CA /* SirenLookupModel.swift */; };
8E171DDE215B26B4006FBBCC /* SirenBundleExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DD1215B26B4006FBBCC /* SirenBundleExtension.swift */; };
8E171DDF215B26B4006FBBCC /* SirenDateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DD2215B26B4006FBBCC /* SirenDateExtension.swift */; };
8E171DE1215B26B4006FBBCC /* SirenAlertMessaging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DD6215B26B4006FBBCC /* SirenAlertMessaging.swift */; };
8E171DE2215B26B4006FBBCC /* SirenLookupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DD7215B26B4006FBBCC /* SirenLookupModel.swift */; };
8E171DE3215B26B4006FBBCC /* SirenUIAlertControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DD8215B26B4006FBBCC /* SirenUIAlertControllerExtension.swift */; };
8E171DE4215B26B4006FBBCC /* SirenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DDA215B26B4006FBBCC /* SirenViewController.swift */; };
8E171DE6215B2701006FBBCC /* SirenLocalizationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DE5215B2701006FBBCC /* SirenLocalizationExtension.swift */; };
8E171DEE215B2D09006FBBCC /* SirenUserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DED215B2D09006FBBCC /* SirenUserDefaultsExtension.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 */; };
8EACA9771F38113E003134CA /* SirenError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EACA9761F38113D003134CA /* SirenError.swift */; };
8ED733FC215DBE4900447E3B /* SirenDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DD4215B26B4006FBBCC /* SirenDelegate.swift */; };
8ED733FD215DBE4900447E3B /* SirenConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DE7215B27C2006FBBCC /* SirenConstants.swift */; };
8ED733FE215DBE4900447E3B /* SirenError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DCD215B26B4006FBBCC /* SirenError.swift */; };
8ED733FF215DBE4900447E3B /* SirenLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DCE215B26B4006FBBCC /* SirenLog.swift */; };
8ED73400215DBE4900447E3B /* SirenHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E171DEB215B28EC006FBBCC /* SirenHelpers.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
55EC364C1E6BB98A00726F13 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 8EC391791A58B465001C121E /* Project object */;
proxyType = 1;
remoteGlobalIDString = 55EC36461E6BB98A00726F13;
remoteInfo = Siren;
};
8E3A6C091D07CB6F00A8B7CF /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 8EC391791A58B465001C121E /* Project object */;
@@ -47,44 +42,33 @@
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
558455D81C6690B4004BE492 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
55EC364F1E6BB98A00726F13 /* Siren.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
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; path = Info.plist; 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>"; };
8E2499BE1FD83DDF00F384BA /* SirenAlertMessaging.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SirenAlertMessaging.swift; path = ../../Sources/SirenAlertMessaging.swift; sourceTree = "<group>"; };
8E3A6C041D07CB6F00A8B7CF /* SirenExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SirenExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
8E43D6221E8223EE00ECFFC8 /* SirenDateExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SirenDateExtension.swift; path = ../../Sources/SirenDateExtension.swift; sourceTree = "<group>"; };
8E528A2F1E989A7A00B643C4 /* SirenDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SirenDelegate.swift; path = ../../Sources/SirenDelegate.swift; sourceTree = "<group>"; };
8E528A311E989E0A00B643C4 /* SirenTestHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SirenTestHelper.swift; path = ../../Sources/SirenTestHelper.swift; sourceTree = "<group>"; };
8E5D15B01F3632D7001C0960 /* SirenLog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SirenLog.swift; path = ../../Sources/SirenLog.swift; sourceTree = "<group>"; };
8E9C238A1E7CDB42000ED3DA /* SirenBundleExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SirenBundleExtension.swift; path = ../../Sources/SirenBundleExtension.swift; sourceTree = "<group>"; };
8E9C238C1E7CDD31000ED3DA /* SirenUIAlertControllerExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SirenUIAlertControllerExtension.swift; path = ../../Sources/SirenUIAlertControllerExtension.swift; sourceTree = "<group>"; };
8E9C238E1E7CDDE7000ED3DA /* SirenViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SirenViewController.swift; path = ../../Sources/SirenViewController.swift; sourceTree = "<group>"; };
8E171DCD215B26B4006FBBCC /* SirenError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenError.swift; sourceTree = "<group>"; };
8E171DCE215B26B4006FBBCC /* SirenLog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenLog.swift; sourceTree = "<group>"; };
8E171DD1215B26B4006FBBCC /* SirenBundleExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenBundleExtension.swift; sourceTree = "<group>"; };
8E171DD2215B26B4006FBBCC /* SirenDateExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenDateExtension.swift; sourceTree = "<group>"; };
8E171DD4215B26B4006FBBCC /* SirenDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenDelegate.swift; sourceTree = "<group>"; };
8E171DD6215B26B4006FBBCC /* SirenAlertMessaging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenAlertMessaging.swift; sourceTree = "<group>"; };
8E171DD7215B26B4006FBBCC /* SirenLookupModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenLookupModel.swift; sourceTree = "<group>"; };
8E171DD8215B26B4006FBBCC /* SirenUIAlertControllerExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenUIAlertControllerExtension.swift; sourceTree = "<group>"; };
8E171DDA215B26B4006FBBCC /* SirenViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenViewController.swift; sourceTree = "<group>"; };
8E171DE5215B2701006FBBCC /* SirenLocalizationExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SirenLocalizationExtension.swift; sourceTree = "<group>"; };
8E171DE7215B27C2006FBBCC /* SirenConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SirenConstants.swift; sourceTree = "<group>"; };
8E171DEB215B28EC006FBBCC /* SirenHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SirenHelpers.swift; sourceTree = "<group>"; };
8E171DED215B2D09006FBBCC /* SirenUserDefaultsExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SirenUserDefaultsExtension.swift; sourceTree = "<group>"; };
8E3A6C041D07CB6F00A8B7CF /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
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>"; };
8EACA96B1F37F2D3003134CA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
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>"; };
8EACA96F1F37F327003134CA /* SirenLookupModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SirenLookupModel.swift; path = ../../Sources/SirenLookupModel.swift; sourceTree = "<group>"; };
8EACA9761F38113D003134CA /* SirenError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SirenError.swift; path = ../../Sources/SirenError.swift; sourceTree = "<group>"; };
8EC391811A58B465001C121E /* SirenExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SirenExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
8EC391811A58B465001C121E /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
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>"; };
/* End PBXFileReference section */
@@ -108,7 +92,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
55EC364E1E6BB98A00726F13 /* Siren.framework in Frameworks */,
8E641D2520C8B44B00908555 /* Siren.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -118,31 +102,85 @@
55EC36481E6BB98A00726F13 /* Siren */ = {
isa = PBXGroup;
children = (
55EC365E1E6BB99B00726F13 /* Siren.bundle */,
55EC365F1E6BB99B00726F13 /* Siren.swift */,
8E2499BE1FD83DDF00F384BA /* SirenAlertMessaging.swift */,
8E9C238A1E7CDB42000ED3DA /* SirenBundleExtension.swift */,
8E43D6221E8223EE00ECFFC8 /* SirenDateExtension.swift */,
8E528A2F1E989A7A00B643C4 /* SirenDelegate.swift */,
8EACA9761F38113D003134CA /* SirenError.swift */,
8E5D15B01F3632D7001C0960 /* SirenLog.swift */,
8EACA96F1F37F327003134CA /* SirenLookupModel.swift */,
8E528A311E989E0A00B643C4 /* SirenTestHelper.swift */,
8E9C238C1E7CDD31000ED3DA /* SirenUIAlertControllerExtension.swift */,
8E9C238E1E7CDDE7000ED3DA /* SirenViewController.swift */,
55EC36491E6BB98A00726F13 /* Siren.h */,
55EC364A1E6BB98A00726F13 /* Info.plist */,
55EC365F1E6BB99B00726F13 /* Siren.swift */,
55EC365E1E6BB99B00726F13 /* Siren.bundle */,
8E171DD0215B26B4006FBBCC /* Extensions */,
8E171DD5215B26B4006FBBCC /* Models */,
8E171DD3215B26B4006FBBCC /* Protocols */,
8E171DCC215B26B4006FBBCC /* Utilities */,
8E171DD9215B26B4006FBBCC /* View Controllers */,
);
path = Siren;
sourceTree = "<group>";
};
8EACA9651F37F2D3003134CA /* SirenExample */ = {
8E171DCC215B26B4006FBBCC /* Utilities */ = {
isa = PBXGroup;
children = (
8E171DE7215B27C2006FBBCC /* SirenConstants.swift */,
8E171DCD215B26B4006FBBCC /* SirenError.swift */,
8E171DCE215B26B4006FBBCC /* SirenLog.swift */,
8E171DEB215B28EC006FBBCC /* SirenHelpers.swift */,
);
name = Utilities;
path = ../../Sources/Utilities;
sourceTree = "<group>";
};
8E171DD0215B26B4006FBBCC /* Extensions */ = {
isa = PBXGroup;
children = (
8E171DD1215B26B4006FBBCC /* SirenBundleExtension.swift */,
8E171DD2215B26B4006FBBCC /* SirenDateExtension.swift */,
8E171DE5215B2701006FBBCC /* SirenLocalizationExtension.swift */,
8E171DD8215B26B4006FBBCC /* SirenUIAlertControllerExtension.swift */,
8E171DED215B2D09006FBBCC /* SirenUserDefaultsExtension.swift */,
);
name = Extensions;
path = ../../Sources/Extensions;
sourceTree = "<group>";
};
8E171DD3215B26B4006FBBCC /* Protocols */ = {
isa = PBXGroup;
children = (
8E171DD4215B26B4006FBBCC /* SirenDelegate.swift */,
);
name = Protocols;
path = ../../Sources/Protocols;
sourceTree = "<group>";
};
8E171DD5215B26B4006FBBCC /* Models */ = {
isa = PBXGroup;
children = (
8E171DD6215B26B4006FBBCC /* SirenAlertMessaging.swift */,
8E171DD7215B26B4006FBBCC /* SirenLookupModel.swift */,
);
name = Models;
path = ../../Sources/Models;
sourceTree = "<group>";
};
8E171DD9215B26B4006FBBCC /* View Controllers */ = {
isa = PBXGroup;
children = (
8E171DDA215B26B4006FBBCC /* SirenViewController.swift */,
);
name = "View Controllers";
path = "../../Sources/View Controllers";
sourceTree = "<group>";
};
8E641D2420C8B44B00908555 /* Frameworks */ = {
isa = PBXGroup;
children = (
);
name = Frameworks;
sourceTree = "<group>";
};
8EACA9651F37F2D3003134CA /* Example */ = {
isa = PBXGroup;
children = (
8EACA9661F37F2D3003134CA /* AppDelegate.swift */,
8EACA96E1F37F2DD003134CA /* Supporting Files */,
);
path = SirenExample;
path = Example;
sourceTree = "<group>";
};
8EACA96E1F37F2DD003134CA /* Supporting Files */ = {
@@ -153,6 +191,7 @@
8EACA96B1F37F2D3003134CA /* Images.xcassets */,
8EACA96C1F37F2D3003134CA /* Info.plist */,
8EACA96D1F37F2D3003134CA /* ViewController.swift */,
55EC364A1E6BB98A00726F13 /* Info.plist */,
);
path = "Supporting Files";
sourceTree = "<group>";
@@ -161,29 +200,30 @@
isa = PBXGroup;
children = (
55EC36481E6BB98A00726F13 /* Siren */,
8EACA9651F37F2D3003134CA /* SirenExample */,
8EE6C74A1E6A0AE100DBE454 /* SirenExampleTests */,
8EACA9651F37F2D3003134CA /* Example */,
8EE6C74A1E6A0AE100DBE454 /* Tests */,
8EC391821A58B465001C121E /* Products */,
8E641D2420C8B44B00908555 /* Frameworks */,
);
sourceTree = "<group>";
};
8EC391821A58B465001C121E /* Products */ = {
isa = PBXGroup;
children = (
8EC391811A58B465001C121E /* SirenExample.app */,
8E3A6C041D07CB6F00A8B7CF /* SirenExampleTests.xctest */,
8EC391811A58B465001C121E /* Example.app */,
8E3A6C041D07CB6F00A8B7CF /* Tests.xctest */,
55EC36471E6BB98A00726F13 /* Siren.framework */,
);
name = Products;
sourceTree = "<group>";
};
8EE6C74A1E6A0AE100DBE454 /* SirenExampleTests */ = {
8EE6C74A1E6A0AE100DBE454 /* Tests */ = {
isa = PBXGroup;
children = (
8EE6C74B1E6A0AE100DBE454 /* Info.plist */,
8EE6C74C1E6A0AE100DBE454 /* SirenTests.swift */,
);
path = SirenExampleTests;
path = Tests;
sourceTree = "<group>";
};
/* End PBXGroup section */
@@ -218,9 +258,9 @@
productReference = 55EC36471E6BB98A00726F13 /* Siren.framework */;
productType = "com.apple.product-type.framework";
};
8E3A6C031D07CB6F00A8B7CF /* SirenExampleTests */ = {
8E3A6C031D07CB6F00A8B7CF /* Tests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 8E3A6C0D1D07CB6F00A8B7CF /* Build configuration list for PBXNativeTarget "SirenExampleTests" */;
buildConfigurationList = 8E3A6C0D1D07CB6F00A8B7CF /* Build configuration list for PBXNativeTarget "Tests" */;
buildPhases = (
8E3A6C001D07CB6F00A8B7CF /* Sources */,
8E3A6C011D07CB6F00A8B7CF /* Frameworks */,
@@ -231,29 +271,27 @@
dependencies = (
8E3A6C0A1D07CB6F00A8B7CF /* PBXTargetDependency */,
);
name = SirenExampleTests;
name = Tests;
productName = SirenTests;
productReference = 8E3A6C041D07CB6F00A8B7CF /* SirenExampleTests.xctest */;
productReference = 8E3A6C041D07CB6F00A8B7CF /* Tests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
8EC391801A58B465001C121E /* SirenExample */ = {
8EC391801A58B465001C121E /* Example */ = {
isa = PBXNativeTarget;
buildConfigurationList = 8EC391A01A58B466001C121E /* Build configuration list for PBXNativeTarget "SirenExample" */;
buildConfigurationList = 8EC391A01A58B466001C121E /* Build configuration list for PBXNativeTarget "Example" */;
buildPhases = (
8EC3917D1A58B465001C121E /* Sources */,
8EC3917E1A58B465001C121E /* Frameworks */,
8EE3A3F81E6A0E470010BDCE /* SwiftLint */,
8EC3917F1A58B465001C121E /* Resources */,
558455D81C6690B4004BE492 /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
55EC364D1E6BB98A00726F13 /* PBXTargetDependency */,
);
name = SirenExample;
name = Example;
productName = Siren;
productReference = 8EC391811A58B465001C121E /* SirenExample.app */;
productReference = 8EC391811A58B465001C121E /* Example.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
@@ -264,7 +302,7 @@
attributes = {
LastSwiftMigration = 0700;
LastSwiftUpdateCheck = 0730;
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Sabintsev iOS Projects";
TargetAttributes = {
55EC36461E6BB98A00726F13 = {
@@ -279,13 +317,24 @@
};
8EC391801A58B465001C121E = {
CreatedOnToolsVersion = 6.1.1;
DevelopmentTeam = HT94948NDD;
DevelopmentTeam = UHP8ST8F8D;
DevelopmentTeamName = "Arthur Sabintsev";
LastSwiftMigration = 0900;
SystemCapabilities = {
com.apple.BackgroundModes = {
enabled = 0;
};
com.apple.InAppPurchase = {
enabled = 0;
};
com.apple.Push = {
enabled = 0;
};
};
};
};
};
buildConfigurationList = 8EC3917C1A58B465001C121E /* Build configuration list for PBXProject "SirenExample" */;
buildConfigurationList = 8EC3917C1A58B465001C121E /* Build configuration list for PBXProject "Example" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
@@ -298,8 +347,8 @@
projectDirPath = "";
projectRoot = "";
targets = (
8EC391801A58B465001C121E /* SirenExample */,
8E3A6C031D07CB6F00A8B7CF /* SirenExampleTests */,
8EC391801A58B465001C121E /* Example */,
8E3A6C031D07CB6F00A8B7CF /* Tests */,
55EC36461E6BB98A00726F13 /* Siren */,
);
};
@@ -355,17 +404,20 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8E528A321E989E0A00B643C4 /* SirenTestHelper.swift in Sources */,
8E9C238F1E7CDDE7000ED3DA /* SirenViewController.swift in Sources */,
8EACA9771F38113E003134CA /* SirenError.swift in Sources */,
8E171DE1215B26B4006FBBCC /* SirenAlertMessaging.swift in Sources */,
8E171DEE215B2D09006FBBCC /* SirenUserDefaultsExtension.swift in Sources */,
8E171DE2215B26B4006FBBCC /* SirenLookupModel.swift in Sources */,
8ED73400215DBE4900447E3B /* SirenHelpers.swift in Sources */,
55EC36611E6BB99B00726F13 /* Siren.swift in Sources */,
8E43D6231E8223EE00ECFFC8 /* SirenDateExtension.swift in Sources */,
8E5D15B11F3632D7001C0960 /* SirenLog.swift in Sources */,
8E9C238B1E7CDB42000ED3DA /* SirenBundleExtension.swift in Sources */,
8E528A301E989A7A00B643C4 /* SirenDelegate.swift in Sources */,
8E2499BF1FD83DDF00F384BA /* SirenAlertMessaging.swift in Sources */,
8EACA9701F37F327003134CA /* SirenLookupModel.swift in Sources */,
8E9C238D1E7CDD31000ED3DA /* SirenUIAlertControllerExtension.swift in Sources */,
8ED733FC215DBE4900447E3B /* SirenDelegate.swift in Sources */,
8ED733FF215DBE4900447E3B /* SirenLog.swift in Sources */,
8E171DE4215B26B4006FBBCC /* SirenViewController.swift in Sources */,
8E171DE6215B2701006FBBCC /* SirenLocalizationExtension.swift in Sources */,
8E171DDE215B26B4006FBBCC /* SirenBundleExtension.swift in Sources */,
8ED733FD215DBE4900447E3B /* SirenConstants.swift in Sources */,
8E171DE3215B26B4006FBBCC /* SirenUIAlertControllerExtension.swift in Sources */,
8ED733FE215DBE4900447E3B /* SirenError.swift in Sources */,
8E171DDF215B26B4006FBBCC /* SirenDateExtension.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -389,14 +441,9 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
55EC364D1E6BB98A00726F13 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 55EC36461E6BB98A00726F13 /* Siren */;
targetProxy = 55EC364C1E6BB98A00726F13 /* PBXContainerItemProxy */;
};
8E3A6C0A1D07CB6F00A8B7CF /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 8EC391801A58B465001C121E /* SirenExample */;
target = 8EC391801A58B465001C121E /* Example */;
targetProxy = 8E3A6C091D07CB6F00A8B7CF /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
@@ -438,13 +485,13 @@
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.itunesconnect.mobile.tests;
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.0;
SWIFT_VERSION = 4.2;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@@ -469,12 +516,12 @@
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.itunesconnect.mobile.tests;
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.0;
SWIFT_VERSION = 4.2;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@@ -489,14 +536,14 @@
CLANG_ANALYZER_NONNULL = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = SirenExampleTests/Info.plist;
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
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.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SirenExample.app/SirenExample";
SWIFT_VERSION = 4.2;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
};
name = Debug;
};
@@ -509,15 +556,15 @@
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = SirenExampleTests/Info.plist;
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
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.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SirenExample.app/SirenExample";
SWIFT_VERSION = 4.2;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
};
name = Release;
};
@@ -533,12 +580,14 @@
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_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_RANGE_LOOP_ANALYSIS = YES;
@@ -570,6 +619,7 @@
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 4.2;
};
name = Debug;
};
@@ -585,12 +635,14 @@
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_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_RANGE_LOOP_ANALYSIS = YES;
@@ -613,6 +665,7 @@
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_VERSION = 4.2;
VALIDATE_PRODUCT = YES;
};
name = Release;
@@ -620,31 +673,31 @@
8EC391A11A58B466001C121E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
INFOPLIST_FILE = "$(SRCROOT)/SirenExample/Supporting Files/Info.plist";
DEVELOPMENT_TEAM = UHP8ST8F8D;
INFOPLIST_FILE = "$(SRCROOT)/Siren/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.apple.itunesconnect.mobile;
PRODUCT_NAME = SirenExample;
PRODUCT_BUNDLE_IDENTIFIER = com.apple.AppStoreConnect;
PRODUCT_NAME = Example;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 4.2;
};
name = Debug;
};
8EC391A21A58B466001C121E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
INFOPLIST_FILE = "$(SRCROOT)/SirenExample/Supporting Files/Info.plist";
DEVELOPMENT_TEAM = UHP8ST8F8D;
INFOPLIST_FILE = "$(SRCROOT)/Siren/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.apple.itunesconnect.mobile;
PRODUCT_NAME = SirenExample;
PRODUCT_BUNDLE_IDENTIFIER = com.apple.AppStoreConnect;
PRODUCT_NAME = Example;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 4.2;
};
name = Release;
};
@@ -660,7 +713,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
8E3A6C0D1D07CB6F00A8B7CF /* Build configuration list for PBXNativeTarget "SirenExampleTests" */ = {
8E3A6C0D1D07CB6F00A8B7CF /* Build configuration list for PBXNativeTarget "Tests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
8E3A6C0B1D07CB6F00A8B7CF /* Debug */,
@@ -669,7 +722,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
8EC3917C1A58B465001C121E /* Build configuration list for PBXProject "SirenExample" */ = {
8EC3917C1A58B465001C121E /* Build configuration list for PBXProject "Example" */ = {
isa = XCConfigurationList;
buildConfigurations = (
8EC3919E1A58B466001C121E /* Debug */,
@@ -678,7 +731,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
8EC391A01A58B466001C121E /* Build configuration list for PBXNativeTarget "SirenExample" */ = {
8EC391A01A58B466001C121E /* Build configuration list for PBXNativeTarget "Example" */ = {
isa = XCConfigurationList;
buildConfigurations = (
8EC391A11A58B466001C121E /* Debug */,
@@ -2,6 +2,6 @@
<Workspace
version = "1.0">
<FileRef
location = "self:/Users/Arthur/Documents/oss/siren/Sample App/SirenExample.xcodeproj">
location = "self:/Users/Arthur/Documents/oss/siren/SirenExample/Example.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>
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
LastUpgradeVersion = "0940"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -15,9 +15,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8EC391801A58B465001C121E"
BuildableName = "SirenExample.app"
BlueprintName = "SirenExample"
ReferencedContainer = "container:SirenExample.xcodeproj">
BuildableName = "Example.app"
BlueprintName = "Example"
ReferencedContainer = "container:Example.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
@@ -33,9 +33,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8E3A6C031D07CB6F00A8B7CF"
BuildableName = "SirenExampleTests.xctest"
BlueprintName = "SirenExampleTests"
ReferencedContainer = "container:SirenExample.xcodeproj">
BuildableName = "Tests.xctest"
BlueprintName = "Tests"
ReferencedContainer = "container:Example.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
@@ -43,9 +43,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8EC391801A58B465001C121E"
BuildableName = "SirenExample.app"
BlueprintName = "SirenExample"
ReferencedContainer = "container:SirenExample.xcodeproj">
BuildableName = "Example.app"
BlueprintName = "Example"
ReferencedContainer = "container:Example.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
@@ -66,9 +66,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8EC391801A58B465001C121E"
BuildableName = "SirenExample.app"
BlueprintName = "SirenExample"
ReferencedContainer = "container:SirenExample.xcodeproj">
BuildableName = "Example.app"
BlueprintName = "Example"
ReferencedContainer = "container:Example.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
@@ -85,9 +85,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8EC391801A58B465001C121E"
BuildableName = "SirenExample.app"
BlueprintName = "SirenExample"
ReferencedContainer = "container:SirenExample.xcodeproj">
BuildableName = "Example.app"
BlueprintName = "Example"
ReferencedContainer = "container:Example.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
LastUpgradeVersion = "0930"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -17,7 +17,7 @@
BlueprintIdentifier = "55EC36461E6BB98A00726F13"
BuildableName = "Siren.framework"
BlueprintName = "Siren"
ReferencedContainer = "container:SirenExample.xcodeproj">
ReferencedContainer = "container:Example.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
@@ -48,7 +48,7 @@
BlueprintIdentifier = "55EC36461E6BB98A00726F13"
BuildableName = "Siren.framework"
BlueprintName = "Siren"
ReferencedContainer = "container:SirenExample.xcodeproj">
ReferencedContainer = "container:Example.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
@@ -66,7 +66,7 @@
BlueprintIdentifier = "55EC36461E6BB98A00726F13"
BuildableName = "Siren.framework"
BlueprintName = "Siren"
ReferencedContainer = "container:SirenExample.xcodeproj">
ReferencedContainer = "container:Example.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
@@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
window?.makeKeyAndVisible()
setupSiren()
@@ -35,12 +35,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// siren.appName = "Test App Name"
// Optional - Change the various UIAlertController and UIAlertAction messaging. One or more values can be changes. If only a subset of values are changed, the defaults with which Siren comes with will be used.
// siren.alertMessaging = SirenAlertMessaging(updateTitle: "New Fancy Title",
// updateMessage: "New message goes here!",
// updateButtonMessage: "Update Now, Plz!?",
// nextTimeButtonMessage: "OK, next time it is!",
// skipVersionButtonMessage: "Please don't push skip, please don't!")
// siren.alertMessaging = SirenAlertMessaging(updateTitle: NSAttributedString(string: "New Fancy Title"),
// updateMessage: NSAttributedString(string: "New message goes here!"),
// updateButtonMessage: NSAttributedString(string: "Update Now, Plz!?"),
// nextTimeButtonMessage: NSAttributedString(string: "OK, next time it is!"),
// skipVersionButtonMessage: NSAttributedString(string: "Please don't push skip, please don't!"))
// Optional - Defaults to .Option
// siren.alertType = .option // or .force, .skip, .none
@@ -49,7 +49,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
siren.minorUpdateAlertType = .option
siren.patchUpdateAlertType = .option
siren.revisionUpdateAlertType = .option
// Optional - Sets all messages to appear in Russian. Siren supports many other languages, not just English and Russian.
// siren.forceLanguageLocalization = .russian
@@ -67,7 +67,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
Siren.shared.checkVersion(checkType: .immediately)
Siren.shared.checkVersion(checkType: .daily)
}
func applicationDidBecomeActive(_ application: UIApplication) {
@@ -102,8 +102,12 @@ extension AppDelegate: SirenDelegate
print(#function, "Latest version of app is installed")
}
func sirenNetworkCallDidReturnWithNewVersionInformation(lookupModel: SirenLookupModel) {
print(#function, "\(lookupModel)")
}
// This delegate method is only hit when alertType is initialized to .none
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType) {
print(#function, "\(message).\nRelease type: \(updateType.rawValue.capitalized)")
func sirenDidDetectNewVersionWithoutAlert(title: String, message: String, updateType: UpdateType) {
print(#function, "\n\(title)\n\(message).\nRelease type: \(updateType.rawValue.capitalized)")
}
}
@@ -1,21 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="vXZ-lx-hvc">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="vXZ-lx-hvc">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="ufC-wZ-h7g">
<objects>
<viewController id="vXZ-lx-hvc" customClass="ViewController" customModule="Sample_App" customModuleProvider="target" sceneMemberID="viewController">
<viewController id="vXZ-lx-hvc" customClass="ViewController" customModule="Example" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>
<viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
@@ -1,5 +1,15 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
@@ -29,6 +39,11 @@
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
}
],
"info" : {
@@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<string>0.0.9</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
@@ -15,10 +15,14 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<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>
@@ -15,5 +15,3 @@ FOUNDATION_EXPORT double SirenVersionNumber;
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>
@@ -23,112 +23,112 @@ extension SirenTests {
siren.testSetCurrentInstalledVersion(version: "1")
siren.testSetAppStoreVersion(version: "2")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0.0.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.0.0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
}
func testDoubleDigitVersionUpdate() {
siren.testSetCurrentInstalledVersion(version: "1.0")
siren.testSetAppStoreVersion(version: "2")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0.0.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.0.0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
}
func testTripleDigitVersionUpdate() {
siren.testSetCurrentInstalledVersion(version: "1.0.0")
siren.testSetAppStoreVersion(version: "2")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0.0.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.0.0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
}
func testQuadrupleDigitVersionUpdate() {
siren.testSetCurrentInstalledVersion(version: "1.0.0")
siren.testSetAppStoreVersion(version: "2")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "2.0.0.0")
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
XCTAssertTrue(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
siren.testSetAppStoreVersion(version: "0.0.0.9")
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
XCTAssertFalse(siren.isAppStoreVersionNewer())
}
}
+1
View File
@@ -3,3 +3,4 @@ source "https://rubygems.org"
gem "cocoapods"
gem "jazzy"
gem "rubygems-bundler"
+28 -22
View File
@@ -1,20 +1,21 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (2.3.6)
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.2)
atomos (0.1.3)
bundler-unload (1.0.2)
claide (1.0.2)
cocoapods (1.4.0)
cocoapods (1.5.3)
activesupport (>= 4.0.2, < 5)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.4.0)
cocoapods-core (= 1.5.3)
cocoapods-deintegrate (>= 1.0.2, < 2.0)
cocoapods-downloader (>= 1.1.3, < 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)
@@ -24,34 +25,35 @@ GEM
escape (~> 0.0.4)
fourflusher (~> 2.0.1)
gh_inspector (~> 1.0)
molinillo (~> 0.6.4)
molinillo (~> 0.6.5)
nap (~> 1.0)
ruby-macho (~> 1.1)
xcodeproj (>= 1.5.4, < 2.0)
cocoapods-core (1.4.0)
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.1.3)
cocoapods-downloader (1.2.1)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.0)
cocoapods-stats (1.0.0)
cocoapods-trunk (1.3.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)
ffi (1.9.23)
executable-hooks (1.5.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)
jazzy (0.9.1)
jazzy (0.9.3)
cocoapods (~> 1.0)
mustache (~> 0.99)
open4
@@ -62,9 +64,9 @@ GEM
xcinvoke (~> 0.3.0)
liferaft (0.0.6)
minitest (5.11.3)
molinillo (0.6.4)
molinillo (0.6.6)
mustache (0.99.8)
nanaimo (0.2.3)
nanaimo (0.2.6)
nap (1.1.0)
netrc (0.11.0)
open4 (1.3.4)
@@ -72,9 +74,12 @@ GEM
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
redcarpet (3.4.0)
rouge (3.1.1)
ruby-macho (1.1.0)
sass (3.5.5)
rouge (3.2.1)
ruby-macho (1.2.0)
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)
@@ -85,12 +90,12 @@ GEM
thread_safe (~> 0.1)
xcinvoke (0.3.0)
liferaft (~> 0.0.6)
xcodeproj (1.5.6)
CFPropertyList (~> 2.3.3)
atomos (~> 0.1.2)
xcodeproj (1.6.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.2.3)
nanaimo (~> 0.2.6)
PLATFORMS
ruby
@@ -98,6 +103,7 @@ PLATFORMS
DEPENDENCIES
cocoapods
jazzy
rubygems-bundler
BUNDLED WITH
1.16.1
1.16.5
+79 -85
View File
@@ -2,9 +2,12 @@
### Notify users when a new version of your app is available and prompt them to upgrade.
![Swift Support](https://img.shields.io/badge/Swift-2.3%2C%203.1%2C%203.2%2C%204.0-orange.svg)
[![Travis CI Status](https://travis-ci.org/ArtSabintsev/Siren.svg?branch=master)](https://travis-ci.org/ArtSabintsev/Siren)
![Swift Support](https://img.shields.io/badge/Swift-4.2%2C%204.1%2C%203.2%2C%203.1%202.3-orange.svg) ![Documentation](https://github.com/ArtSabintsev/Siren/blob/master/docs/badge.svg)
[![CocoaPods](https://img.shields.io/cocoapods/v/Siren.svg)](https://cocoapods.org/pods/Siren) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![SwiftPM Compatible](https://img.shields.io/badge/SwiftPM-Compatible-brightgreen.svg)](https://swift.org/package-manager/)
[![BuddyBuild](https://dashboard.buddybuild.com/api/statusImage?appID=58c4d0d85601d40100c5c51d&branch=master&build=latest)](https://dashboard.buddybuild.com/apps/58c4d0d85601d40100c5c51d/build/latest?branch=master) [![CocoaPods](https://img.shields.io/cocoapods/v/Siren.svg)](https://cocoapods.org/pods/Siren) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![SwiftPM Compatible](https://img.shields.io/badge/SwiftPM-Compatible-brightgreen.svg)](https://swift.org/package-manager/) [![CocoaPods](https://img.shields.io/cocoapods/dt/Siren.svg)](https://cocoapods.org/pods/Siren) [![CocoaPods](https://img.shields.io/cocoapods/dm/Siren.svg)](https://cocoapods.org/pods/Siren)
---
## Table of Contents
@@ -30,13 +33,13 @@
If a new version is available, an alert can be presented to the user informing them of the newer version, and giving them the option to update the application. Alternatively, Siren can notify your app programmatically, enabling you to inform the user through alternative means, such as a custom interface.
- Siren is built to work with the [**Semantic Versioning**](http://semver.org/) system.
- Siren is built to work with the [**Semantic Versioning**](https://semver.org/) system.
- Semantic Versioning is a three number versioning system (e.g., 1.0.0)
- Siren also supports two-number versioning (e.g., 1.0) and four-number versioning (e.g., 1.0.0.0)
- Siren is actively maintained by [**Arthur Sabintsev**](http://github.com/ArtSabintsev) and [**Aaron Brager**](http://twitter.com/getaaron)
- Siren is actively maintained by [**Arthur Sabintsev**](https://github.com/ArtSabintsev) and [**Aaron Brager**](https://twitter.com/getaaron)
### README Translations
- [**简体中文**](README.zh_CN.md) (by [**Daniel Hu**](http://www.jianshu.com/u/d8bbc4831623))
- [**简体中文**](README.zh_CN.md) (by [**Daniel Hu**](https://www.jianshu.com/u/d8bbc4831623))
## Features
- [x] CocoaPods Support
@@ -62,54 +65,28 @@ If a new version is available, an alert can be presented to the user informing t
| Swift Version | Branch Name | Will Continue to Receive Updates?
| ------------- | ------------- | -------------
| 4.0 | master | **Yes**
| 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
For Swift 4 support:
```ruby
pod 'Siren'
```
For Swift 3.2 support:
```ruby
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.2'
```
For Swift 3.1 support:
```ruby
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.1'
```
For Swift 2.3 support:
```ruby
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift2.3'
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
For Swift 4 support:
```swift
github "ArtSabintsev/Siren"
```
For Swift 3.2 support:
```swift
github "ArtSabintsev/Siren", "swift3.2"
```
For Swift 3.1 support:
```swift
github "ArtSabintsev/Siren", "swift3.1"
```
For Swift 2.3 support:
```ruby
github "ArtSabintsev/Siren", "swift2.3"
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
@@ -121,33 +98,34 @@ github "ArtSabintsev/Siren", "swift2.3"
Below is some commented sample code. Adapt this to meet your app's needs.
For a full list of optional settings/preferences, please refer to https://github.com/ArtSabintsev/Siren/blob/master/SirenExample/SirenExample/AppDelegate.swift in the Sample Project.
For a full list of optional settings/preferences, please refer to https://github.com/ArtSabintsev/Siren/blob/master/Example/Example/AppDelegate.swift in the Sample Project.
```Swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
/* Siren code should go below window?.makeKeyAndVisible() */
// Siren is a singleton
let siren = Siren.shared
// Siren is a singleton
let siren = Siren.shared
// Optional: Defaults to .option
siren.alertType = <#Siren.AlertType_Enum_Value#>
// Optional: Defaults to .option
siren.alertType = <#Siren.AlertType_Enum_Value#>
// Optional: Change the various UIAlertController and UIAlertAction messaging. One or more values can be changes. If only a subset of values are changed, the defaults with which Siren comes with will be used.
siren.alertMessaging = SirenAlertMessaging(updateTitle: "New Fancy Title",
updateMessage: "New message goes here!",
updateButtonMessage: "Update Now, Plz!?",
nextTimeButtonMessage: "OK, next time it is!",
skipVersionButtonMessage: "Please don't push skip, please don't!")
// Optional: Change the various UIAlertController and UIAlertAction messaging. One or more values can be changes. If only a subset of values are changed, the defaults with which Siren comes with will be used.
siren.alertMessaging = SirenAlertMessaging(updateTitle: NSAttributedString(string: "New Fancy Title"),
updateMessage: NSAttributedString(string: "New message goes here!"),
updateButtonMessage: NSAttributedString(string: "Update Now, Plz!?"),
nextTimeButtonMessage: NSAttributedString(string: "OK, next time it is!"),
skipVersionButtonMessage: NSAttributedString(string: "Please don't push skip, please don't!"))
// Optional: Set this variable if you would only like to show an alert if your app has been available on the store for a few days.
// This default value is set to 1 to avoid this issue: https://github.com/ArtSabintsev/Siren#words-of-caution
// To show the update immediately after Apple has updated their JSON, set this value to 0. Not recommended due to aforementioned reason in https://github.com/ArtSabintsev/Siren#words-of-caution.
siren.showAlertAfterCurrentVersionHasBeenReleasedForDays = 3
// Replace .immediately with .daily or .weekly to specify a maximum daily or weekly frequency for version checks.
// DO NOT CALL THIS METHOD IN didFinishLaunchingWithOptions IF YOU ALSO PLAN TO CALL IT IN applicationDidBecomeActive.
siren.checkVersion(checkType: .immediately)
// Optional: Set this variable if you would only like to show an alert if your app has been available on the store for a few days.
// This default value is set to 1 to avoid this issue: https://github.com/ArtSabintsev/Siren#words-of-caution
// To show the update immediately after Apple has updated their JSON, set this value to 0. Not recommended due to aforementioned reason in https://github.com/ArtSabintsev/Siren#words-of-caution.
siren.showAlertAfterCurrentVersionHasBeenReleasedForDays = 3
// Replace .immediately with .daily or .weekly to specify a maximum daily or weekly frequency for version checks.
// DO NOT CALL THIS METHOD IN didFinishLaunchingWithOptions IF YOU ALSO PLAN TO CALL IT IN applicationDidBecomeActive.
siren.checkVersion(checkType: .immediately)
return true
}
@@ -156,7 +134,8 @@ func applicationDidBecomeActive(application: UIApplication) {
/*
Perform daily (.daily) or weekly (.weekly) checks for new version of your app.
Useful if user returns to your app from the background after extended period of time.
Place in applicationDidBecomeActive(_:). */
Place in applicationDidBecomeActive(_:).
*/
Siren.shared.checkVersion(checkType: .daily)
}
@@ -189,9 +168,9 @@ func application(application: UIApplication, didFinishLaunchingWithOptions launc
extension AppDelegate: SirenDelegate {
// Returns a localized message to this delegate method upon performing a successful version check
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType) {
print("\(message)")
}
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType) {
print("\(message)")
}
}
```
@@ -212,24 +191,39 @@ If you would like to set a different type of alert for revision, patch, minor, a
Six delegate methods allow you to handle or track the user's behavior. Each method has a default, empty implementation, effectively making each of these methods optional.
``` swift
public protocol SirenDelegate: class {
// User presented with update dialog
func sirenDidShowUpdateDialog(alertType: Siren.AlertType)
public protocol SirenDelegate: NSObjectProtocol {
/// Siren performed version check and did not display alert.
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType)
// User did click on button that launched App Store.app
func sirenUserDidLaunchAppStore()
/// Siren failed to perform version check.
///
/// - Note:
/// Depending on the reason for failure,
/// a system-level error may be returned.
func sirenDidFailVersionCheck(error: Error)
// User did click on button that skips version update
func sirenUserDidSkipVersion()
/// User presented with update dialog.
func sirenDidShowUpdateDialog(alertType: Siren.AlertType)
// User did click on button that cancels update dialog
func sirenUserDidCancel()
// Siren failed to perform version check (may return system-level error)
func sirenDidFailVersionCheck(error: Error)
/// Siren performed a version check and latest version is installed.
func sirenLatestVersionInstalled()
// Siren performed version check and did not display alert
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType)
/// Provides the decoded JSON information from a successful version check call.
///
/// - SeeAlso:
/// SirenLookupModel.swift
///
/// - Parameter lookupModel: The `Decodable` model representing the JSON results from the iTunes Lookup API.
func sirenNetworkCallDidReturnWithNewVersionInformation(lookupModel: SirenLookupModel)
/// User did click on button that cancels update dialog.
func sirenUserDidCancel()
/// User did click on button that launched "App Store.app".
func sirenUserDidLaunchAppStore()
/// User did click on button that skips version update.
func sirenUserDidSkipVersion()
}
```
@@ -281,12 +275,12 @@ You can enable it like so:
Siren.shared.forceLanguageLocalization = Siren.LanguageType.<#Siren.LanguageType_Enum_Value#>
```
## 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 9 installed on their device, but the app update requires iOS 10, an alert will not be shown. This takes care of the *false positive* case regarding app updating.
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 10 installed on their device, but the app update requires iOS 11, 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`) 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 [iTunes Connect Mobile](https://itunes.apple.com/us/app/itunes-connect/id376771144?mt=8) app's bundleID: `com.apple.itunesconnect.mobile`.
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`.
For your convenience, you may turn on debugging statements by setting `self.debugEnabled = true` before calling the `checkVersion()` method.
@@ -296,16 +290,16 @@ The App Store reviewer will **not** see the alert. The version in the App Store
## 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, Siren will ignore the phase rollout and will prompt users to update.
- 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 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 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`.
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**](http://github.com/ArtSabintsev/Harpy)
- [**Harpy**](https://github.com/ArtSabintsev/Harpy)
- Siren was ported _from_ Harpy, as Siren and Harpy are maintained by the same developer.
- **Java (Android)**
- [**Egghead Games' Siren library**](https://github.com/eggheadgames/Siren)
@@ -315,4 +309,4 @@ Occasionally, the iTunes JSON will update faster than the App Store CDN, meaning
- The Siren Swift library inspired the React Native library.
## Created and maintained by
[Arthur Ariel Sabintsev](http://www.sabintsev.com/) & [Aaron Brager](http://twitter.com/getaaron)
[Arthur Ariel Sabintsev](http://www.sabintsev.com/) & [Aaron Brager](https://twitter.com/getaaron)
+5 -5
View File
@@ -10,15 +10,15 @@
当 app 有更新时,Siren 会弹出提示框,用户可根据提示框提供的选项进行更新。或者您也可以根据 Siren 发出的消息来自定义通知用户的方式,比如您可以提供一个自定义的提示框。
- Siren 可配合 [**Semantic Versioning**](http://semver.org/) 系统使用
- Siren 可配合 [**Semantic Versioning**](https://semver.org/) 系统使用
- Semantic 版本系统由三位数字标识 (比如,1.0.0)
- Siren 同时支持两位数字标识 (比如,1.0)
- Siren 同时支持四位数字标识 (比如,1.0.0.0)
- Siren 当前处于活跃维护状态,由[**Arthur Sabintsev**](http://github.com/ArtSabintsev) 和 [**Aaron Brager**](http://twitter.com/getaaron) 进行维护。
- Siren 当前处于活跃维护状态,由[**Arthur Sabintsev**](https://github.com/ArtSabintsev) 和 [**Aaron Brager**](https://twitter.com/getaaron) 进行维护。
## Ports
- [**Harpy**](http://github.com/ArtSabintsev/Harpy) 是 Objective-C 实现的版本更新检查库,Siren 是 Harpy 的 swift 版本。
- [**Harpy**](https://github.com/ArtSabintsev/Harpy) 是 Objective-C 实现的版本更新检查库,Siren 是 Harpy 的 swift 版本。
- Siren 和 Harpy 是由相同的开发者维护。
- 安卓平台 Play Store 上的 [**Egghead Games' Siren library**](https://github.com/eggheadgames/Siren) 库使用了和 Siren 相同的原理实现了版本更新检测。
- 针对 React Native 项目 (iOS/Android) 的 [**Gant Laborde's Siren library**](https://github.com/GantMan/react-native-siren) 库使用了和 Siren 相同的原理实现了版本更新检测。
@@ -226,7 +226,7 @@ Siren.sharedInstance.forceLanguageLocalization = SirenLanguageType.<#SirenLangua
因为商店里的可用版本总是比提交审核的版本老,所以苹果商店审核人员在审核时是**不会**弹出提示框的。
##创建维护人员
[Arthur Ariel Sabintsev](http://www.sabintsev.com/) & [Aaron Brager](http://twitter.com/getaaron)
[Arthur Ariel Sabintsev](http://www.sabintsev.com/) & [Aaron Brager](https://twitter.com/getaaron)
## 翻译人员
[Daniel Hu](http://www.jianshu.com/u/d8bbc4831623)
[Daniel Hu](https://www.jianshu.com/u/d8bbc4831623)
+11 -7
View File
@@ -1,18 +1,22 @@
Pod::Spec.new do |s|
# Version
s.version = "3.7.1"
s.swift_version = '4.2'
# Meta
s.name = "Siren"
s.version = "3.2.2"
s.summary = "Notify users that a new version of your iOS app is available, and prompt them with the App Store link."
s.description = <<-DESC
Notify users when a new version of your iOS app is available, and prompt them with the App Store link.
DESC
s.homepage = "https://github.com/ArtSabintsev/Siren"
s.license = "MIT"
s.authors = { "Arthur Ariel Sabintsev" => "arthur@sabintsev.com", "Aaron Brager" => "getaaron@gmail.com" }
s.description = <<-DESC
Notify your users when a new version of your iOS app is available, and prompt them with the App Store link.
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.source_files = 'Sources/**/*.swift'
s.resources = 'Sources/Siren.bundle'
s.requires_arc = true
-138
View File
@@ -1,138 +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 title="Classes Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> 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/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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</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">
<div class="task-name-container">
<a name="/Siren"></a>
<a name="//apple_ref/swift/Section/Siren" class="dashAnchor"></a>
<a href="#/Siren">
<h3 class="section-name">Siren</h3>
</a>
</div>
<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. A singleton that is initialized using the <code>shared</code> constant.</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>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
-744
View File
@@ -1,744 +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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> 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/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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError/Known.html"> Known</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. A singleton that is initialized using the <code>shared</code> constant.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC0A11ErrorDomainSSv"></a>
<a name="//apple_ref/swift/Property/SirenErrorDomain" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC0A11ErrorDomainSSv">SirenErrorDomain</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The error domain for all errors created 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">let</span> <span class="nv">SirenErrorDomain</span> <span class="o">=</span> <span class="s">"Siren Error Domain"</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC8delegateAA0A8Delegate_pSgXwv"></a>
<a name="//apple_ref/swift/Property/delegate" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC8delegateAA0A8Delegate_pSgXwv">delegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The SirenDelegate variable, which should be set if you&rsquo;d like to be notified:</p>
<p>When a user views or interacts with the alert</p>
<ul>
<li>sirenDidShowUpdateDialog(alertType: AlertType)</li>
<li>sirenUserDidLaunchAppStore()</li>
<li>sirenUserDidSkipVersion()</li>
<li>sirenUserDidCancel()</li>
</ul>
<p>When a new version has been detected, and you would like to present a localized message in a custom UI. use this delegate method:</p>
<ul>
<li>sirenDidDetectNewVersionWithoutAlert(message: String)</li>
</ul>
</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">weak</span> <span class="k">var</span> <span class="nv">delegate</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SirenDelegate.html">SirenDelegate</a></span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC12debugEnabledSbv"></a>
<a name="//apple_ref/swift/Property/debugEnabled" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC12debugEnabledSbv">debugEnabled</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The debug flag, which is disabled by default.
When enabled, a stream of print() statements are logged to your console when a version check is performed.</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">debugEnabled</span> <span class="o">=</span> <span class="kc">false</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC9alertTypeAB05AlertC0Ov"></a>
<a name="//apple_ref/swift/Property/alertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC9alertTypeAB05AlertC0Ov">alertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert that should be shown.
See the Siren.AlertType enum for full details.</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">alertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ov"></a>
<a name="//apple_ref/swift/Property/majorUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ov">majorUpdateAlertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert that should be shown for major version updates: A.b.c
Defaults to Siren.AlertType.option.
See the Siren.AlertType enum for full details.</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">majorUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ov"></a>
<a name="//apple_ref/swift/Property/minorUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ov">minorUpdateAlertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert that should be shown for minor version updates: a.B.c
Defaults to Siren.AlertType.option.
See the Siren.AlertType enum for full details.</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">minorUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ov"></a>
<a name="//apple_ref/swift/Property/patchUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ov">patchUpdateAlertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert that should be shown for minor patch updates: a.b.C
Defaults to Siren.AlertType.option.
See the Siren.AlertType enum for full details.</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">patchUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ov"></a>
<a name="//apple_ref/swift/Property/revisionUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ov">revisionUpdateAlertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert that should be shown for revision updates: a.b.c.D
Defaults to Siren.AlertType.option.
See the Siren.AlertType enum for full details.</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">revisionUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC7appNameSSv"></a>
<a name="//apple_ref/swift/Property/appName" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC7appNameSSv">appName</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The name of your app.
By default, it&rsquo;s set to the name of the app that&rsquo;s stored in your plist.</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">appName</span> <span class="o">=</span> <span class="kt">Bundle</span><span class="o">.</span><span class="nf">bestMatchingAppName</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC14alertMessagingAA0a5AlertC0Vv"></a>
<a name="//apple_ref/swift/Property/alertMessaging" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC14alertMessagingAA0a5AlertC0Vv">alertMessaging</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Overrides all the Strings to which Siren defaults.
Defaults to the values defined in <code><a href="../Structs/SirenAlertMessaging/Constants.html">SirenAlertMessaging.Constants</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="kd">public</span> <span class="k">var</span> <span class="nv">alertMessaging</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging.html">SirenAlertMessaging</a></span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC11countryCodeSSSgv"></a>
<a name="//apple_ref/swift/Property/countryCode" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC11countryCodeSSSgv">countryCode</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The region or country of an App Store in which your app is available.
By default, all version checks are performed against the US App Store.
If your app is not available in the US App Store, set it to the identifier of at least one App Store within which it is 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="kd">public</span> <span class="k">var</span> <span class="nv">countryCode</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:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgv"></a>
<a name="//apple_ref/swift/Property/forceLanguageLocalization" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgv">forceLanguageLocalization</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Overrides the default localization of a user&rsquo;s device when presenting the update message and button titles in the alert.
See the Siren.LanguageType enum for more details.</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">forceLanguageLocalization</span><span class="p">:</span> <span class="kt">Siren</span><span class="o">.</span><span class="kt"><a href="../Classes/Siren/LanguageType.html">LanguageType</a></span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgv"></a>
<a name="//apple_ref/swift/Property/alertControllerTintColor" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgv">alertControllerTintColor</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Overrides the tint color for UIAlertController.</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">alertControllerTintColor</span><span class="p">:</span> <span class="kt">UIColor</span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSiv"></a>
<a name="//apple_ref/swift/Property/showAlertAfterCurrentVersionHasBeenReleasedForDays" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSiv">showAlertAfterCurrentVersionHasBeenReleasedForDays</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>When this is set, the alert will only show up if the current version has already been released for X days
Defaults to 1 day to avoid an issue where Apple updates the JSON faster than the app binary propogates to the 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="k">var</span> <span class="nv">showAlertAfterCurrentVersionHasBeenReleasedForDays</span><span class="p">:</span> <span class="kt">Int</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:5SirenAAC22currentAppStoreVersionSSSgv"></a>
<a name="//apple_ref/swift/Property/currentAppStoreVersion" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC22currentAppStoreVersionSSSgv">currentAppStoreVersion</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 version of your app that is available for download on the 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">internal(set)</span> <span class="k">var</span> <span class="nv">currentAppStoreVersion</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:5SirenAAC6sharedABvZ"></a>
<a name="//apple_ref/swift/Variable/shared" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC6sharedABvZ">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 App&rsquo;s Singleton</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="o">=</span> <span class="kt">Siren</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC12checkVersionyAB0C9CheckTypeO0bE0_tF"></a>
<a name="//apple_ref/swift/Method/checkVersion(checkType:)" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC12checkVersionyAB0C9CheckTypeO0bE0_tF">checkVersion(checkType:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Checks the currently installed version of your app against the App Store.
The default check is against the US App Store, but if your app is not listed in the US,
you should set the <code><a href="../Classes/Siren.html#/s:5SirenAAC11countryCodeSSSgv">countryCode</a></code> property before calling this method. Please refer to the countryCode property for more information.</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">func</span> <span class="nf">checkVersion</span><span class="p">(</span><span class="nv">checkType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/VersionCheckType.html">VersionCheckType</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>checkType</em>
</code>
</td>
<td>
<div>
<p>The frequency in days in which you want a check to be performed. Please refer to the Siren.VersionCheckType enum for more details.</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:</p>
<ul>
<li>User clicked the <code>Update</code> button in the UIAlertController modal.</li>
<li>Developer built a custom alert modal and needs to be able to call this function when the user chooses to update the app in the aforementioned custom modal.</li>
</ul>
</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">func</span> <span class="nf">launchAppStore</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC9AlertTypeO"></a>
<a name="//apple_ref/swift/Enum/AlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO">AlertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert to present after a successful version check has been performed.</p>
<a href="../Classes/Siren/AlertType.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">enum</span> <span class="kt">AlertType</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC16VersionCheckTypeO"></a>
<a name="//apple_ref/swift/Enum/VersionCheckType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO">VersionCheckType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the frequency in which the the version check is performed and the user is prompted to update the app.</p>
<a href="../Classes/Siren/VersionCheckType.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">enum</span> <span class="kt">VersionCheckType</span><span class="p">:</span> <span class="kt">Int</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC12LanguageTypeO"></a>
<a name="//apple_ref/swift/Enum/LanguageType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC12LanguageTypeO">LanguageType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the available languages in which the update message and alert button titles should appear.</p>
<p>By default, the operating system&rsquo;s default lanuage setting is used. However, you can force a specific language
by setting the forceLanguageLocalization property before calling checkVersion()</p>
<a href="../Classes/Siren/LanguageType.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">enum</span> <span class="kt">LanguageType</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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,231 +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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../../index.html"> 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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError/Known.html"> Known</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>
</ul>
</div>
<div class="task-group">
<ul>
<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>
</ul>
</div>
<div class="task-group">
<ul>
<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>
</ul>
</div>
<div class="task-group">
<ul>
<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&rsquo;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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://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,199 +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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../../index.html"> 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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError/Known.html"> Known</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>
</ul>
</div>
<div class="task-group">
<ul>
<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>
</ul>
</div>
<div class="task-group">
<ul>
<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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
-142
View File
@@ -1,142 +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 title="Enumerations Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> 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/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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</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:5Siren10UpdateTypeO"></a>
<a name="//apple_ref/swift/Enum/UpdateType" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren10UpdateTypeO">UpdateType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<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>
<a href="Enums/UpdateType.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">UpdateType</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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
-267
View File
@@ -1,267 +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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> 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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError/Known.html"> Known</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">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<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">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<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">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<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">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<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">
</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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
-138
View File
@@ -1,138 +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 title="Protocols Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> 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>
<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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,348 +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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> 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>
<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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError/Known.html"> Known</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:5Siren0A8DelegateP24sirenDidShowUpdateDialogyA2AC9AlertTypeO05alertI0_tF"></a>
<a name="//apple_ref/swift/Method/sirenDidShowUpdateDialog(alertType:)" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A8DelegateP24sirenDidShowUpdateDialogyA2AC9AlertTypeO05alertI0_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 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="../Classes/Siren.html">Siren</a></span><span class="o">.</span><span class="kt">AlertType</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 App Store.app.</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>
<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: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 (may return system-level error).</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">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:5Siren0A8DelegateP36sirenDidDetectNewVersionWithoutAlertySS7message_AA10UpdateTypeO06updateL0tF"></a>
<a name="//apple_ref/swift/Method/sirenDidDetectNewVersionWithoutAlert(message:updateType:)" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A8DelegateP36sirenDidDetectNewVersionWithoutAlertySS7message_AA10UpdateTypeO06updateL0tF">sirenDidDetectNewVersionWithoutAlert(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 version check and did not display 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">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="../Enums/UpdateType.html">UpdateType</a></span><span class="p">)</span></code></pre>
</div>
</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 version check and latest version is 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>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
-183
View File
@@ -1,183 +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 title="Structures Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> 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/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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</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">
<div class="task-name-container">
<a name="/Siren%20Error%20Handling"></a>
<a name="//apple_ref/swift/Section/Siren Error Handling" class="dashAnchor"></a>
<a href="#/Siren%20Error%20Handling">
<h3 class="section-name">Siren Error Handling</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV"></a>
<a name="//apple_ref/swift/Struct/SirenError" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV">SirenError</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<a href="Structs/SirenError.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">SirenError</span><span class="p">:</span> <span class="kt">LocalizedError</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Siren%20Alert%20Messaging%20Customization"></a>
<a name="//apple_ref/swift/Section/Siren Alert Messaging Customization" class="dashAnchor"></a>
<a href="#/Siren%20Alert%20Messaging%20Customization">
<h3 class="section-name">Siren Alert Messaging Customization</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV"></a>
<a name="//apple_ref/swift/Struct/SirenAlertMessaging" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV">SirenAlertMessaging</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Allows the overriding of all the <code>UIAlertController</code> and <code>UIActionSheet</code> Strings to which Siren defaults.</p>
<div class="aside aside-warning">
<p class="aside-title">Warning</p>
Overriding any of these keys will result in the loss of the built-in internationalization that Siren provides.
</div>
<p>As SirenAlertMessaging is a Struct, one <em>or</em> more keys can be modified. Overriding only one string will result in the other keys retaining their default (and internationalizable) values.</p>
<a href="Structs/SirenAlertMessaging.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">SirenAlertMessaging</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,242 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>SirenAlertMessaging 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/SirenAlertMessaging" class="dashAnchor"></a>
<a title="SirenAlertMessaging Structure Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> Reference</a>
<img id="carat" src="../img/carat.png" />
SirenAlertMessaging 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/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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError/Known.html"> Known</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>SirenAlertMessaging</h1>
<div class="declaration">
<div class="language">
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SirenAlertMessaging</span></code></pre>
</div>
</div>
<p>Allows the overriding of all the <code>UIAlertController</code> and <code>UIActionSheet</code> Strings to which Siren defaults.</p>
<div class="aside aside-warning">
<p class="aside-title">Warning</p>
Overriding any of these keys will result in the loss of the built-in internationalization that Siren provides.
</div>
<p>As SirenAlertMessaging is a Struct, one <em>or</em> more keys can be modified. Overriding only one string will result in the other keys retaining their default (and internationalizable) values.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV9ConstantsV"></a>
<a name="//apple_ref/swift/Struct/Constants" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV">Constants</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<a href="../Structs/SirenAlertMessaging/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">public</span> <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:5Siren0A14AlertMessagingVACSS11updateTitle_SS0D7MessageSS0d6ButtonF0SS08nextTimegF0SS011skipVersiongF0tcfc"></a>
<a name="//apple_ref/swift/Method/init(updateTitle:updateMessage:updateButtonMessage:nextTimeButtonMessage:skipVersionButtonMessage:)" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingVACSS11updateTitle_SS0D7MessageSS0d6ButtonF0SS08nextTimegF0SS011skipVersiongF0tcfc">init(updateTitle:updateMessage:updateButtonMessage:nextTimeButtonMessage:skipVersionButtonMessage:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The public initializer</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="nf">init</span><span class="p">(</span><span class="n">updateTitle</span> <span class="nv">title</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">updateTitle</span><span class="p">,</span>
<span class="n">updateMessage</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">updateMessage</span><span class="p">,</span>
<span class="nv">updateButtonMessage</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">updateNow</span><span class="p">,</span>
<span class="nv">nextTimeButtonMessage</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">nextTime</span><span class="p">,</span>
<span class="nv">skipVersionButtonMessage</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">skipVersion</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>title</em>
</code>
</td>
<td>
<div>
<p>The title field of the <code>UIAlertController</code>.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>message</em>
</code>
</td>
<td>
<div>
<p>The <code>message</code> field of the <code>UIAlertController</code>.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>updateButtonMessage</em>
</code>
</td>
<td>
<div>
<p>The <code>title</code> field of the Update Button <code>UIAlertAction</code>.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>nextTimeButtonMessage</em>
</code>
</td>
<td>
<div>
<p>The <code>title</code> field of the Next Time Button <code>UIAlertAction</code>.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>skipVersionButtonMessage</em>
</code>
</td>
<td>
<div>
<p>The <code>title</code> field of the Skip Button <code>UIAlertAction</code>.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,375 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Known 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/Known" class="dashAnchor"></a>
<a title="Known Enumeration Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../../index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../../index.html"> Reference</a>
<img id="carat" src="../../img/carat.png" />
Known 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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError/Known.html"> Known</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Known</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">Known</span><span class="p">:</span> <span class="kt">Error</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:5Siren0A5ErrorV5KnownO20appStoreAppIDFailureA2EmF"></a>
<a name="//apple_ref/swift/Element/appStoreAppIDFailure" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO20appStoreAppIDFailureA2EmF">appStoreAppIDFailure</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO28appStoreDataRetrievalFailureAEs0B0_pSg010underlyingB0_tcAEmF"></a>
<a name="//apple_ref/swift/Element/appStoreDataRetrievalFailure" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO28appStoreDataRetrievalFailureAEs0B0_pSg010underlyingB0_tcAEmF">appStoreDataRetrievalFailure</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO26appStoreJSONParsingFailureAEs0B0_p010underlyingB0_tcAEmF"></a>
<a name="//apple_ref/swift/Element/appStoreJSONParsingFailure" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO26appStoreJSONParsingFailureAEs0B0_p010underlyingB0_tcAEmF">appStoreJSONParsingFailure</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO30appStoreOSVersionNumberFailureA2EmF"></a>
<a name="//apple_ref/swift/Element/appStoreOSVersionNumberFailure" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO30appStoreOSVersionNumberFailureA2EmF">appStoreOSVersionNumberFailure</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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">appStoreOSVersionNumberFailure</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO28appStoreOSVersionUnsupportedA2EmF"></a>
<a name="//apple_ref/swift/Element/appStoreOSVersionUnsupported" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO28appStoreOSVersionUnsupportedA2EmF">appStoreOSVersionUnsupported</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO27appStoreVersionArrayFailureA2EmF"></a>
<a name="//apple_ref/swift/Element/appStoreVersionArrayFailure" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO27appStoreVersionArrayFailureA2EmF">appStoreVersionArrayFailure</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO12malformedURLA2EmF"></a>
<a name="//apple_ref/swift/Element/malformedURL" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO12malformedURLA2EmF">malformedURL</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO17noUpdateAvailableA2EmF"></a>
<a name="//apple_ref/swift/Element/noUpdateAvailable" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO17noUpdateAvailableA2EmF">noUpdateAvailable</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO22recentlyCheckedAlreadyA2EmF"></a>
<a name="//apple_ref/swift/Element/recentlyCheckedAlready" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO22recentlyCheckedAlreadyA2EmF">recentlyCheckedAlready</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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">recentlyCheckedAlready</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
-28
View File
@@ -1,28 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="136" height="20">
<linearGradient id="b" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
<stop offset="1" stop-opacity=".1"/>
</linearGradient>
<clipPath id="a">
<rect width="136" height="20" rx="3" fill="#fff"/>
</clipPath>
<g clip-path="url(#a)">
<path fill="#555" d="M0 0h93v20H0z"/>
<path fill="#4c1" d="M93 0h43v20H93z"/>
<path fill="url(#b)" d="M0 0h136v20H0z"/>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
<text x="475" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="830">
documentation
</text>
<text x="475" y="140" transform="scale(.1)" textLength="830">
documentation
</text>
<text x="1135" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="330">
100%
</text>
<text x="1135" y="140" transform="scale(.1)" textLength="330">
100%
</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

-200
View File
@@ -1,200 +0,0 @@
/* Credit to https://gist.github.com/wataru420/2048287 */
.highlight {
/* Comment */
/* Error */
/* Keyword */
/* Operator */
/* Comment.Multiline */
/* Comment.Preproc */
/* Comment.Single */
/* Comment.Special */
/* Generic.Deleted */
/* Generic.Deleted.Specific */
/* Generic.Emph */
/* Generic.Error */
/* Generic.Heading */
/* Generic.Inserted */
/* Generic.Inserted.Specific */
/* Generic.Output */
/* Generic.Prompt */
/* Generic.Strong */
/* Generic.Subheading */
/* Generic.Traceback */
/* Keyword.Constant */
/* Keyword.Declaration */
/* Keyword.Pseudo */
/* Keyword.Reserved */
/* Keyword.Type */
/* Literal.Number */
/* Literal.String */
/* Name.Attribute */
/* Name.Builtin */
/* Name.Class */
/* Name.Constant */
/* Name.Entity */
/* Name.Exception */
/* Name.Function */
/* Name.Namespace */
/* Name.Tag */
/* Name.Variable */
/* Operator.Word */
/* Text.Whitespace */
/* Literal.Number.Float */
/* Literal.Number.Hex */
/* Literal.Number.Integer */
/* Literal.Number.Oct */
/* Literal.String.Backtick */
/* Literal.String.Char */
/* Literal.String.Doc */
/* Literal.String.Double */
/* Literal.String.Escape */
/* Literal.String.Heredoc */
/* Literal.String.Interpol */
/* Literal.String.Other */
/* Literal.String.Regex */
/* Literal.String.Single */
/* Literal.String.Symbol */
/* Name.Builtin.Pseudo */
/* Name.Variable.Class */
/* Name.Variable.Global */
/* Name.Variable.Instance */
/* Literal.Number.Integer.Long */ }
.highlight .c {
color: #999988;
font-style: italic; }
.highlight .err {
color: #a61717;
background-color: #e3d2d2; }
.highlight .k {
color: #000000;
font-weight: bold; }
.highlight .o {
color: #000000;
font-weight: bold; }
.highlight .cm {
color: #999988;
font-style: italic; }
.highlight .cp {
color: #999999;
font-weight: bold; }
.highlight .c1 {
color: #999988;
font-style: italic; }
.highlight .cs {
color: #999999;
font-weight: bold;
font-style: italic; }
.highlight .gd {
color: #000000;
background-color: #ffdddd; }
.highlight .gd .x {
color: #000000;
background-color: #ffaaaa; }
.highlight .ge {
color: #000000;
font-style: italic; }
.highlight .gr {
color: #aa0000; }
.highlight .gh {
color: #999999; }
.highlight .gi {
color: #000000;
background-color: #ddffdd; }
.highlight .gi .x {
color: #000000;
background-color: #aaffaa; }
.highlight .go {
color: #888888; }
.highlight .gp {
color: #555555; }
.highlight .gs {
font-weight: bold; }
.highlight .gu {
color: #aaaaaa; }
.highlight .gt {
color: #aa0000; }
.highlight .kc {
color: #000000;
font-weight: bold; }
.highlight .kd {
color: #000000;
font-weight: bold; }
.highlight .kp {
color: #000000;
font-weight: bold; }
.highlight .kr {
color: #000000;
font-weight: bold; }
.highlight .kt {
color: #445588; }
.highlight .m {
color: #009999; }
.highlight .s {
color: #d14; }
.highlight .na {
color: #008080; }
.highlight .nb {
color: #0086B3; }
.highlight .nc {
color: #445588;
font-weight: bold; }
.highlight .no {
color: #008080; }
.highlight .ni {
color: #800080; }
.highlight .ne {
color: #990000;
font-weight: bold; }
.highlight .nf {
color: #990000; }
.highlight .nn {
color: #555555; }
.highlight .nt {
color: #000080; }
.highlight .nv {
color: #008080; }
.highlight .ow {
color: #000000;
font-weight: bold; }
.highlight .w {
color: #bbbbbb; }
.highlight .mf {
color: #009999; }
.highlight .mh {
color: #009999; }
.highlight .mi {
color: #009999; }
.highlight .mo {
color: #009999; }
.highlight .sb {
color: #d14; }
.highlight .sc {
color: #d14; }
.highlight .sd {
color: #d14; }
.highlight .s2 {
color: #d14; }
.highlight .se {
color: #d14; }
.highlight .sh {
color: #d14; }
.highlight .si {
color: #d14; }
.highlight .sx {
color: #d14; }
.highlight .sr {
color: #009926; }
.highlight .s1 {
color: #d14; }
.highlight .ss {
color: #990073; }
.highlight .bp {
color: #999999; }
.highlight .vc {
color: #008080; }
.highlight .vg {
color: #008080; }
.highlight .vi {
color: #008080; }
.highlight .il {
color: #009999; }
-337
View File
@@ -1,337 +0,0 @@
html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
background: transparent;
border: 0;
margin: 0;
outline: 0;
padding: 0;
vertical-align: baseline; }
body {
background-color: #f2f2f2;
font-family: Helvetica, freesans, Arial, sans-serif;
font-size: 14px;
-webkit-font-smoothing: subpixel-antialiased;
word-wrap: break-word; }
h1, h2, h3 {
margin-top: 0.8em;
margin-bottom: 0.3em;
font-weight: 100;
color: black; }
h1 {
font-size: 2.5em; }
h2 {
font-size: 2em;
border-bottom: 1px solid #e2e2e2; }
h4 {
font-size: 13px;
line-height: 1.5;
margin-top: 21px; }
h5 {
font-size: 1.1em; }
h6 {
font-size: 1.1em;
color: #777; }
.section-name {
color: gray;
display: block;
font-family: Helvetica;
font-size: 22px;
font-weight: 100;
margin-bottom: 15px; }
pre, code {
font: 0.95em Menlo, monospace;
color: #777;
word-wrap: normal; }
p code, li code {
background-color: #eee;
padding: 2px 4px;
border-radius: 4px; }
a {
color: #0088cc;
text-decoration: none; }
ul {
padding-left: 15px; }
li {
line-height: 1.8em; }
img {
max-width: 100%; }
blockquote {
margin-left: 0;
padding: 0 10px;
border-left: 4px solid #ccc; }
.content-wrapper {
margin: 0 auto;
width: 980px; }
header {
font-size: 0.85em;
line-height: 26px;
background-color: #414141;
position: fixed;
width: 100%;
z-index: 1; }
header img {
padding-right: 6px;
vertical-align: -4px;
height: 16px; }
header a {
color: #fff; }
header p {
float: left;
color: #999; }
header .header-right {
float: right;
margin-left: 16px; }
#breadcrumbs {
background-color: #f2f2f2;
height: 27px;
padding-top: 17px;
position: fixed;
width: 100%;
z-index: 1;
margin-top: 26px; }
#breadcrumbs #carat {
height: 10px;
margin: 0 5px; }
.sidebar {
background-color: #f9f9f9;
border: 1px solid #e2e2e2;
overflow-y: auto;
overflow-x: hidden;
position: fixed;
top: 70px;
bottom: 0;
width: 230px;
word-wrap: normal; }
.nav-groups {
list-style-type: none;
background: #fff;
padding-left: 0; }
.nav-group-name {
border-bottom: 1px solid #e2e2e2;
font-size: 1.1em;
font-weight: 100;
padding: 15px 0 15px 20px; }
.nav-group-name > a {
color: #333; }
.nav-group-tasks {
margin-top: 5px; }
.nav-group-task {
font-size: 0.9em;
list-style-type: none;
white-space: nowrap; }
.nav-group-task a {
color: #888; }
.main-content {
background-color: #fff;
border: 1px solid #e2e2e2;
margin-left: 246px;
position: absolute;
overflow: hidden;
padding-bottom: 60px;
top: 70px;
width: 734px; }
.main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
margin-bottom: 1em; }
.main-content p {
line-height: 1.8em; }
.main-content section .section:first-child {
margin-top: 0;
padding-top: 0; }
.main-content section .task-group-section .task-group:first-of-type {
padding-top: 10px; }
.main-content section .task-group-section .task-group:first-of-type .section-name {
padding-top: 15px; }
.main-content section .heading:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.section {
padding: 0 25px; }
.highlight {
background-color: #eee;
padding: 10px 12px;
border: 1px solid #e2e2e2;
border-radius: 4px;
overflow-x: auto; }
.declaration .highlight {
overflow-x: initial;
padding: 0 40px 40px 0;
margin-bottom: -25px;
background-color: transparent;
border: none; }
.section-name {
margin: 0;
margin-left: 18px; }
.task-group-section {
padding-left: 6px;
border-top: 1px solid #e2e2e2; }
.task-group {
padding-top: 0px; }
.task-name-container a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item {
padding-top: 8px;
width: 100%;
list-style-type: none; }
.item a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item code {
background-color: transparent;
padding: 0; }
.item .token {
padding-left: 3px;
margin-left: 15px;
font-size: 11.9px; }
.item .declaration-note {
font-size: .85em;
color: gray;
font-style: italic; }
.pointer-container {
border-bottom: 1px solid #e2e2e2;
left: -23px;
padding-bottom: 13px;
position: relative;
width: 110%; }
.pointer {
background: #f9f9f9;
border-left: 1px solid #e2e2e2;
border-top: 1px solid #e2e2e2;
height: 12px;
left: 21px;
top: -7px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
width: 12px; }
.height-container {
display: none;
left: -25px;
padding: 0 25px;
position: relative;
width: 100%;
overflow: hidden; }
.height-container .section {
background: #f9f9f9;
border-bottom: 1px solid #e2e2e2;
left: -25px;
position: relative;
width: 100%;
padding-top: 10px;
padding-bottom: 5px; }
.aside, .language {
padding: 6px 12px;
margin: 12px 0;
border-left: 5px solid #dddddd;
overflow-y: hidden; }
.aside .aside-title, .language .aside-title {
font-size: 9px;
letter-spacing: 2px;
text-transform: uppercase;
padding-bottom: 0;
margin: 0;
color: #aaa;
-webkit-user-select: none; }
.aside p:last-child, .language p:last-child {
margin-bottom: 0; }
.language {
border-left: 5px solid #cde9f4; }
.language .aside-title {
color: #4b8afb; }
.aside-warning {
border-left: 5px solid #ff6666; }
.aside-warning .aside-title {
color: #ff0000; }
.graybox {
border-collapse: collapse;
width: 100%; }
.graybox p {
margin: 0;
word-break: break-word;
min-width: 50px; }
.graybox td {
border: 1px solid #e2e2e2;
padding: 5px 25px 5px 10px;
vertical-align: middle; }
.graybox tr td:first-of-type {
text-align: right;
padding: 7px;
vertical-align: top;
word-break: normal;
width: 40px; }
.slightly-smaller {
font-size: 0.9em; }
#footer {
position: absolute;
bottom: 10px;
margin-left: 25px; }
#footer p {
margin: 0;
color: #aaa;
font-size: 0.8em; }
html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
display: none; }
html.dash .main-content {
width: 980px;
margin-left: 0;
border: none;
width: 100%;
top: 0;
padding-bottom: 0; }
html.dash .height-container {
display: block; }
html.dash .item .token {
margin-left: 0; }
html.dash .content-wrapper {
width: auto; }
html.dash #footer {
position: static; }
@@ -1,20 +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>CFBundleIdentifier</key>
<string>com.jazzy.</string>
<key>CFBundleName</key>
<string></string>
<key>DocSetPlatformFamily</key>
<string></string>
<key>isDashDocset</key>
<true/>
<key>dashIndexFilePath</key>
<string>index.html</string>
<key>isJavaScriptEnabled</key>
<true/>
<key>DashDocSetFamily</key>
<string>dashtoc</string>
</dict>
</plist>
@@ -1,138 +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 title="Classes Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> 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/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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</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">
<div class="task-name-container">
<a name="/Siren"></a>
<a name="//apple_ref/swift/Section/Siren" class="dashAnchor"></a>
<a href="#/Siren">
<h3 class="section-name">Siren</h3>
</a>
</div>
<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. A singleton that is initialized using the <code>shared</code> constant.</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>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,744 +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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> 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/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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError/Known.html"> Known</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. A singleton that is initialized using the <code>shared</code> constant.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC0A11ErrorDomainSSv"></a>
<a name="//apple_ref/swift/Property/SirenErrorDomain" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC0A11ErrorDomainSSv">SirenErrorDomain</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The error domain for all errors created 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">let</span> <span class="nv">SirenErrorDomain</span> <span class="o">=</span> <span class="s">"Siren Error Domain"</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC8delegateAA0A8Delegate_pSgXwv"></a>
<a name="//apple_ref/swift/Property/delegate" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC8delegateAA0A8Delegate_pSgXwv">delegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The SirenDelegate variable, which should be set if you&rsquo;d like to be notified:</p>
<p>When a user views or interacts with the alert</p>
<ul>
<li>sirenDidShowUpdateDialog(alertType: AlertType)</li>
<li>sirenUserDidLaunchAppStore()</li>
<li>sirenUserDidSkipVersion()</li>
<li>sirenUserDidCancel()</li>
</ul>
<p>When a new version has been detected, and you would like to present a localized message in a custom UI. use this delegate method:</p>
<ul>
<li>sirenDidDetectNewVersionWithoutAlert(message: String)</li>
</ul>
</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">weak</span> <span class="k">var</span> <span class="nv">delegate</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SirenDelegate.html">SirenDelegate</a></span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC12debugEnabledSbv"></a>
<a name="//apple_ref/swift/Property/debugEnabled" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC12debugEnabledSbv">debugEnabled</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The debug flag, which is disabled by default.
When enabled, a stream of print() statements are logged to your console when a version check is performed.</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">debugEnabled</span> <span class="o">=</span> <span class="kc">false</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC9alertTypeAB05AlertC0Ov"></a>
<a name="//apple_ref/swift/Property/alertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC9alertTypeAB05AlertC0Ov">alertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert that should be shown.
See the Siren.AlertType enum for full details.</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">alertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ov"></a>
<a name="//apple_ref/swift/Property/majorUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ov">majorUpdateAlertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert that should be shown for major version updates: A.b.c
Defaults to Siren.AlertType.option.
See the Siren.AlertType enum for full details.</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">majorUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ov"></a>
<a name="//apple_ref/swift/Property/minorUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ov">minorUpdateAlertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert that should be shown for minor version updates: a.B.c
Defaults to Siren.AlertType.option.
See the Siren.AlertType enum for full details.</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">minorUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ov"></a>
<a name="//apple_ref/swift/Property/patchUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ov">patchUpdateAlertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert that should be shown for minor patch updates: a.b.C
Defaults to Siren.AlertType.option.
See the Siren.AlertType enum for full details.</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">patchUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ov"></a>
<a name="//apple_ref/swift/Property/revisionUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ov">revisionUpdateAlertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert that should be shown for revision updates: a.b.c.D
Defaults to Siren.AlertType.option.
See the Siren.AlertType enum for full details.</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">revisionUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC7appNameSSv"></a>
<a name="//apple_ref/swift/Property/appName" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC7appNameSSv">appName</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The name of your app.
By default, it&rsquo;s set to the name of the app that&rsquo;s stored in your plist.</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">appName</span> <span class="o">=</span> <span class="kt">Bundle</span><span class="o">.</span><span class="nf">bestMatchingAppName</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC14alertMessagingAA0a5AlertC0Vv"></a>
<a name="//apple_ref/swift/Property/alertMessaging" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC14alertMessagingAA0a5AlertC0Vv">alertMessaging</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Overrides all the Strings to which Siren defaults.
Defaults to the values defined in <code><a href="../Structs/SirenAlertMessaging/Constants.html">SirenAlertMessaging.Constants</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="kd">public</span> <span class="k">var</span> <span class="nv">alertMessaging</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging.html">SirenAlertMessaging</a></span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC11countryCodeSSSgv"></a>
<a name="//apple_ref/swift/Property/countryCode" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC11countryCodeSSSgv">countryCode</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The region or country of an App Store in which your app is available.
By default, all version checks are performed against the US App Store.
If your app is not available in the US App Store, set it to the identifier of at least one App Store within which it is 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="kd">public</span> <span class="k">var</span> <span class="nv">countryCode</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:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgv"></a>
<a name="//apple_ref/swift/Property/forceLanguageLocalization" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgv">forceLanguageLocalization</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Overrides the default localization of a user&rsquo;s device when presenting the update message and button titles in the alert.
See the Siren.LanguageType enum for more details.</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">forceLanguageLocalization</span><span class="p">:</span> <span class="kt">Siren</span><span class="o">.</span><span class="kt"><a href="../Classes/Siren/LanguageType.html">LanguageType</a></span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgv"></a>
<a name="//apple_ref/swift/Property/alertControllerTintColor" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgv">alertControllerTintColor</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Overrides the tint color for UIAlertController.</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">alertControllerTintColor</span><span class="p">:</span> <span class="kt">UIColor</span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSiv"></a>
<a name="//apple_ref/swift/Property/showAlertAfterCurrentVersionHasBeenReleasedForDays" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSiv">showAlertAfterCurrentVersionHasBeenReleasedForDays</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>When this is set, the alert will only show up if the current version has already been released for X days
Defaults to 1 day to avoid an issue where Apple updates the JSON faster than the app binary propogates to the 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="k">var</span> <span class="nv">showAlertAfterCurrentVersionHasBeenReleasedForDays</span><span class="p">:</span> <span class="kt">Int</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:5SirenAAC22currentAppStoreVersionSSSgv"></a>
<a name="//apple_ref/swift/Property/currentAppStoreVersion" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC22currentAppStoreVersionSSSgv">currentAppStoreVersion</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 version of your app that is available for download on the 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">internal(set)</span> <span class="k">var</span> <span class="nv">currentAppStoreVersion</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:5SirenAAC6sharedABvZ"></a>
<a name="//apple_ref/swift/Variable/shared" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC6sharedABvZ">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 App&rsquo;s Singleton</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="o">=</span> <span class="kt">Siren</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC12checkVersionyAB0C9CheckTypeO0bE0_tF"></a>
<a name="//apple_ref/swift/Method/checkVersion(checkType:)" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC12checkVersionyAB0C9CheckTypeO0bE0_tF">checkVersion(checkType:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Checks the currently installed version of your app against the App Store.
The default check is against the US App Store, but if your app is not listed in the US,
you should set the <code><a href="../Classes/Siren.html#/s:5SirenAAC11countryCodeSSSgv">countryCode</a></code> property before calling this method. Please refer to the countryCode property for more information.</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">func</span> <span class="nf">checkVersion</span><span class="p">(</span><span class="nv">checkType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/VersionCheckType.html">VersionCheckType</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>checkType</em>
</code>
</td>
<td>
<div>
<p>The frequency in days in which you want a check to be performed. Please refer to the Siren.VersionCheckType enum for more details.</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:</p>
<ul>
<li>User clicked the <code>Update</code> button in the UIAlertController modal.</li>
<li>Developer built a custom alert modal and needs to be able to call this function when the user chooses to update the app in the aforementioned custom modal.</li>
</ul>
</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">func</span> <span class="nf">launchAppStore</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC9AlertTypeO"></a>
<a name="//apple_ref/swift/Enum/AlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO">AlertType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the type of alert to present after a successful version check has been performed.</p>
<a href="../Classes/Siren/AlertType.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">enum</span> <span class="kt">AlertType</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC16VersionCheckTypeO"></a>
<a name="//apple_ref/swift/Enum/VersionCheckType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO">VersionCheckType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the frequency in which the the version check is performed and the user is prompted to update the app.</p>
<a href="../Classes/Siren/VersionCheckType.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">enum</span> <span class="kt">VersionCheckType</span><span class="p">:</span> <span class="kt">Int</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC12LanguageTypeO"></a>
<a name="//apple_ref/swift/Enum/LanguageType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC12LanguageTypeO">LanguageType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Determines the available languages in which the update message and alert button titles should appear.</p>
<p>By default, the operating system&rsquo;s default lanuage setting is used. However, you can force a specific language
by setting the forceLanguageLocalization property before calling checkVersion()</p>
<a href="../Classes/Siren/LanguageType.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">enum</span> <span class="kt">LanguageType</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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,231 +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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../../index.html"> 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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError/Known.html"> Known</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>
</ul>
</div>
<div class="task-group">
<ul>
<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>
</ul>
</div>
<div class="task-group">
<ul>
<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>
</ul>
</div>
<div class="task-group">
<ul>
<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&rsquo;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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,199 +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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../../index.html"> 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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError/Known.html"> Known</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>
</ul>
</div>
<div class="task-group">
<ul>
<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>
</ul>
</div>
<div class="task-group">
<ul>
<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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,142 +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 title="Enumerations Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> 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/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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</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:5Siren10UpdateTypeO"></a>
<a name="//apple_ref/swift/Enum/UpdateType" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren10UpdateTypeO">UpdateType</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<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>
<a href="Enums/UpdateType.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">UpdateType</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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,267 +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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> 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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError/Known.html"> Known</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">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<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">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<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">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<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">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<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">
</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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,138 +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 title="Protocols Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> 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>
<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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</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>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,348 +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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> 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>
<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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError/Known.html"> Known</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:5Siren0A8DelegateP24sirenDidShowUpdateDialogyA2AC9AlertTypeO05alertI0_tF"></a>
<a name="//apple_ref/swift/Method/sirenDidShowUpdateDialog(alertType:)" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A8DelegateP24sirenDidShowUpdateDialogyA2AC9AlertTypeO05alertI0_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 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="../Classes/Siren.html">Siren</a></span><span class="o">.</span><span class="kt">AlertType</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 App Store.app.</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>
<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: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 (may return system-level error).</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">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:5Siren0A8DelegateP36sirenDidDetectNewVersionWithoutAlertySS7message_AA10UpdateTypeO06updateL0tF"></a>
<a name="//apple_ref/swift/Method/sirenDidDetectNewVersionWithoutAlert(message:updateType:)" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A8DelegateP36sirenDidDetectNewVersionWithoutAlertySS7message_AA10UpdateTypeO06updateL0tF">sirenDidDetectNewVersionWithoutAlert(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 version check and did not display 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">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="../Enums/UpdateType.html">UpdateType</a></span><span class="p">)</span></code></pre>
</div>
</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 version check and latest version is 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>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,183 +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 title="Structures Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> 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/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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</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">
<div class="task-name-container">
<a name="/Siren%20Error%20Handling"></a>
<a name="//apple_ref/swift/Section/Siren Error Handling" class="dashAnchor"></a>
<a href="#/Siren%20Error%20Handling">
<h3 class="section-name">Siren Error Handling</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV"></a>
<a name="//apple_ref/swift/Struct/SirenError" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV">SirenError</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<a href="Structs/SirenError.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">SirenError</span><span class="p">:</span> <span class="kt">LocalizedError</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Siren%20Alert%20Messaging%20Customization"></a>
<a name="//apple_ref/swift/Section/Siren Alert Messaging Customization" class="dashAnchor"></a>
<a href="#/Siren%20Alert%20Messaging%20Customization">
<h3 class="section-name">Siren Alert Messaging Customization</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV"></a>
<a name="//apple_ref/swift/Struct/SirenAlertMessaging" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV">SirenAlertMessaging</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Allows the overriding of all the <code>UIAlertController</code> and <code>UIActionSheet</code> Strings to which Siren defaults.</p>
<div class="aside aside-warning">
<p class="aside-title">Warning</p>
Overriding any of these keys will result in the loss of the built-in internationalization that Siren provides.
</div>
<p>As SirenAlertMessaging is a Struct, one <em>or</em> more keys can be modified. Overriding only one string will result in the other keys retaining their default (and internationalizable) values.</p>
<a href="Structs/SirenAlertMessaging.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">SirenAlertMessaging</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,242 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>SirenAlertMessaging 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/SirenAlertMessaging" class="dashAnchor"></a>
<a title="SirenAlertMessaging Structure Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> Reference</a>
<img id="carat" src="../img/carat.png" />
SirenAlertMessaging 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/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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenError/Known.html"> Known</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>SirenAlertMessaging</h1>
<div class="declaration">
<div class="language">
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SirenAlertMessaging</span></code></pre>
</div>
</div>
<p>Allows the overriding of all the <code>UIAlertController</code> and <code>UIActionSheet</code> Strings to which Siren defaults.</p>
<div class="aside aside-warning">
<p class="aside-title">Warning</p>
Overriding any of these keys will result in the loss of the built-in internationalization that Siren provides.
</div>
<p>As SirenAlertMessaging is a Struct, one <em>or</em> more keys can be modified. Overriding only one string will result in the other keys retaining their default (and internationalizable) values.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV9ConstantsV"></a>
<a name="//apple_ref/swift/Struct/Constants" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV">Constants</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<a href="../Structs/SirenAlertMessaging/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">public</span> <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:5Siren0A14AlertMessagingVACSS11updateTitle_SS0D7MessageSS0d6ButtonF0SS08nextTimegF0SS011skipVersiongF0tcfc"></a>
<a name="//apple_ref/swift/Method/init(updateTitle:updateMessage:updateButtonMessage:nextTimeButtonMessage:skipVersionButtonMessage:)" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingVACSS11updateTitle_SS0D7MessageSS0d6ButtonF0SS08nextTimegF0SS011skipVersiongF0tcfc">init(updateTitle:updateMessage:updateButtonMessage:nextTimeButtonMessage:skipVersionButtonMessage:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The public initializer</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="nf">init</span><span class="p">(</span><span class="n">updateTitle</span> <span class="nv">title</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">updateTitle</span><span class="p">,</span>
<span class="n">updateMessage</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">updateMessage</span><span class="p">,</span>
<span class="nv">updateButtonMessage</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">updateNow</span><span class="p">,</span>
<span class="nv">nextTimeButtonMessage</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">nextTime</span><span class="p">,</span>
<span class="nv">skipVersionButtonMessage</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">skipVersion</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>title</em>
</code>
</td>
<td>
<div>
<p>The title field of the <code>UIAlertController</code>.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>message</em>
</code>
</td>
<td>
<div>
<p>The <code>message</code> field of the <code>UIAlertController</code>.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>updateButtonMessage</em>
</code>
</td>
<td>
<div>
<p>The <code>title</code> field of the Update Button <code>UIAlertAction</code>.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>nextTimeButtonMessage</em>
</code>
</td>
<td>
<div>
<p>The <code>title</code> field of the Next Time Button <code>UIAlertAction</code>.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>skipVersionButtonMessage</em>
</code>
</td>
<td>
<div>
<p>The <code>title</code> field of the Skip Button <code>UIAlertAction</code>.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,375 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Known 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/Known" class="dashAnchor"></a>
<a title="Known Enumeration Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../../index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../../index.html"> Reference</a>
<img id="carat" src="../../img/carat.png" />
Known 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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenError/Known.html"> Known</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Known</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">Known</span><span class="p">:</span> <span class="kt">Error</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:5Siren0A5ErrorV5KnownO20appStoreAppIDFailureA2EmF"></a>
<a name="//apple_ref/swift/Element/appStoreAppIDFailure" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO20appStoreAppIDFailureA2EmF">appStoreAppIDFailure</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO28appStoreDataRetrievalFailureAEs0B0_pSg010underlyingB0_tcAEmF"></a>
<a name="//apple_ref/swift/Element/appStoreDataRetrievalFailure" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO28appStoreDataRetrievalFailureAEs0B0_pSg010underlyingB0_tcAEmF">appStoreDataRetrievalFailure</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO26appStoreJSONParsingFailureAEs0B0_p010underlyingB0_tcAEmF"></a>
<a name="//apple_ref/swift/Element/appStoreJSONParsingFailure" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO26appStoreJSONParsingFailureAEs0B0_p010underlyingB0_tcAEmF">appStoreJSONParsingFailure</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO30appStoreOSVersionNumberFailureA2EmF"></a>
<a name="//apple_ref/swift/Element/appStoreOSVersionNumberFailure" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO30appStoreOSVersionNumberFailureA2EmF">appStoreOSVersionNumberFailure</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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">appStoreOSVersionNumberFailure</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO28appStoreOSVersionUnsupportedA2EmF"></a>
<a name="//apple_ref/swift/Element/appStoreOSVersionUnsupported" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO28appStoreOSVersionUnsupportedA2EmF">appStoreOSVersionUnsupported</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO27appStoreVersionArrayFailureA2EmF"></a>
<a name="//apple_ref/swift/Element/appStoreVersionArrayFailure" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO27appStoreVersionArrayFailureA2EmF">appStoreVersionArrayFailure</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO12malformedURLA2EmF"></a>
<a name="//apple_ref/swift/Element/malformedURL" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO12malformedURLA2EmF">malformedURL</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO17noUpdateAvailableA2EmF"></a>
<a name="//apple_ref/swift/Element/noUpdateAvailable" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO17noUpdateAvailableA2EmF">noUpdateAvailable</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO22recentlyCheckedAlreadyA2EmF"></a>
<a name="//apple_ref/swift/Element/recentlyCheckedAlready" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO22recentlyCheckedAlreadyA2EmF">recentlyCheckedAlready</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
</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">recentlyCheckedAlready</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,200 +0,0 @@
/* Credit to https://gist.github.com/wataru420/2048287 */
.highlight {
/* Comment */
/* Error */
/* Keyword */
/* Operator */
/* Comment.Multiline */
/* Comment.Preproc */
/* Comment.Single */
/* Comment.Special */
/* Generic.Deleted */
/* Generic.Deleted.Specific */
/* Generic.Emph */
/* Generic.Error */
/* Generic.Heading */
/* Generic.Inserted */
/* Generic.Inserted.Specific */
/* Generic.Output */
/* Generic.Prompt */
/* Generic.Strong */
/* Generic.Subheading */
/* Generic.Traceback */
/* Keyword.Constant */
/* Keyword.Declaration */
/* Keyword.Pseudo */
/* Keyword.Reserved */
/* Keyword.Type */
/* Literal.Number */
/* Literal.String */
/* Name.Attribute */
/* Name.Builtin */
/* Name.Class */
/* Name.Constant */
/* Name.Entity */
/* Name.Exception */
/* Name.Function */
/* Name.Namespace */
/* Name.Tag */
/* Name.Variable */
/* Operator.Word */
/* Text.Whitespace */
/* Literal.Number.Float */
/* Literal.Number.Hex */
/* Literal.Number.Integer */
/* Literal.Number.Oct */
/* Literal.String.Backtick */
/* Literal.String.Char */
/* Literal.String.Doc */
/* Literal.String.Double */
/* Literal.String.Escape */
/* Literal.String.Heredoc */
/* Literal.String.Interpol */
/* Literal.String.Other */
/* Literal.String.Regex */
/* Literal.String.Single */
/* Literal.String.Symbol */
/* Name.Builtin.Pseudo */
/* Name.Variable.Class */
/* Name.Variable.Global */
/* Name.Variable.Instance */
/* Literal.Number.Integer.Long */ }
.highlight .c {
color: #999988;
font-style: italic; }
.highlight .err {
color: #a61717;
background-color: #e3d2d2; }
.highlight .k {
color: #000000;
font-weight: bold; }
.highlight .o {
color: #000000;
font-weight: bold; }
.highlight .cm {
color: #999988;
font-style: italic; }
.highlight .cp {
color: #999999;
font-weight: bold; }
.highlight .c1 {
color: #999988;
font-style: italic; }
.highlight .cs {
color: #999999;
font-weight: bold;
font-style: italic; }
.highlight .gd {
color: #000000;
background-color: #ffdddd; }
.highlight .gd .x {
color: #000000;
background-color: #ffaaaa; }
.highlight .ge {
color: #000000;
font-style: italic; }
.highlight .gr {
color: #aa0000; }
.highlight .gh {
color: #999999; }
.highlight .gi {
color: #000000;
background-color: #ddffdd; }
.highlight .gi .x {
color: #000000;
background-color: #aaffaa; }
.highlight .go {
color: #888888; }
.highlight .gp {
color: #555555; }
.highlight .gs {
font-weight: bold; }
.highlight .gu {
color: #aaaaaa; }
.highlight .gt {
color: #aa0000; }
.highlight .kc {
color: #000000;
font-weight: bold; }
.highlight .kd {
color: #000000;
font-weight: bold; }
.highlight .kp {
color: #000000;
font-weight: bold; }
.highlight .kr {
color: #000000;
font-weight: bold; }
.highlight .kt {
color: #445588; }
.highlight .m {
color: #009999; }
.highlight .s {
color: #d14; }
.highlight .na {
color: #008080; }
.highlight .nb {
color: #0086B3; }
.highlight .nc {
color: #445588;
font-weight: bold; }
.highlight .no {
color: #008080; }
.highlight .ni {
color: #800080; }
.highlight .ne {
color: #990000;
font-weight: bold; }
.highlight .nf {
color: #990000; }
.highlight .nn {
color: #555555; }
.highlight .nt {
color: #000080; }
.highlight .nv {
color: #008080; }
.highlight .ow {
color: #000000;
font-weight: bold; }
.highlight .w {
color: #bbbbbb; }
.highlight .mf {
color: #009999; }
.highlight .mh {
color: #009999; }
.highlight .mi {
color: #009999; }
.highlight .mo {
color: #009999; }
.highlight .sb {
color: #d14; }
.highlight .sc {
color: #d14; }
.highlight .sd {
color: #d14; }
.highlight .s2 {
color: #d14; }
.highlight .se {
color: #d14; }
.highlight .sh {
color: #d14; }
.highlight .si {
color: #d14; }
.highlight .sx {
color: #d14; }
.highlight .sr {
color: #009926; }
.highlight .s1 {
color: #d14; }
.highlight .ss {
color: #990073; }
.highlight .bp {
color: #999999; }
.highlight .vc {
color: #008080; }
.highlight .vg {
color: #008080; }
.highlight .vi {
color: #008080; }
.highlight .il {
color: #009999; }
@@ -1,337 +0,0 @@
html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
background: transparent;
border: 0;
margin: 0;
outline: 0;
padding: 0;
vertical-align: baseline; }
body {
background-color: #f2f2f2;
font-family: Helvetica, freesans, Arial, sans-serif;
font-size: 14px;
-webkit-font-smoothing: subpixel-antialiased;
word-wrap: break-word; }
h1, h2, h3 {
margin-top: 0.8em;
margin-bottom: 0.3em;
font-weight: 100;
color: black; }
h1 {
font-size: 2.5em; }
h2 {
font-size: 2em;
border-bottom: 1px solid #e2e2e2; }
h4 {
font-size: 13px;
line-height: 1.5;
margin-top: 21px; }
h5 {
font-size: 1.1em; }
h6 {
font-size: 1.1em;
color: #777; }
.section-name {
color: gray;
display: block;
font-family: Helvetica;
font-size: 22px;
font-weight: 100;
margin-bottom: 15px; }
pre, code {
font: 0.95em Menlo, monospace;
color: #777;
word-wrap: normal; }
p code, li code {
background-color: #eee;
padding: 2px 4px;
border-radius: 4px; }
a {
color: #0088cc;
text-decoration: none; }
ul {
padding-left: 15px; }
li {
line-height: 1.8em; }
img {
max-width: 100%; }
blockquote {
margin-left: 0;
padding: 0 10px;
border-left: 4px solid #ccc; }
.content-wrapper {
margin: 0 auto;
width: 980px; }
header {
font-size: 0.85em;
line-height: 26px;
background-color: #414141;
position: fixed;
width: 100%;
z-index: 1; }
header img {
padding-right: 6px;
vertical-align: -4px;
height: 16px; }
header a {
color: #fff; }
header p {
float: left;
color: #999; }
header .header-right {
float: right;
margin-left: 16px; }
#breadcrumbs {
background-color: #f2f2f2;
height: 27px;
padding-top: 17px;
position: fixed;
width: 100%;
z-index: 1;
margin-top: 26px; }
#breadcrumbs #carat {
height: 10px;
margin: 0 5px; }
.sidebar {
background-color: #f9f9f9;
border: 1px solid #e2e2e2;
overflow-y: auto;
overflow-x: hidden;
position: fixed;
top: 70px;
bottom: 0;
width: 230px;
word-wrap: normal; }
.nav-groups {
list-style-type: none;
background: #fff;
padding-left: 0; }
.nav-group-name {
border-bottom: 1px solid #e2e2e2;
font-size: 1.1em;
font-weight: 100;
padding: 15px 0 15px 20px; }
.nav-group-name > a {
color: #333; }
.nav-group-tasks {
margin-top: 5px; }
.nav-group-task {
font-size: 0.9em;
list-style-type: none;
white-space: nowrap; }
.nav-group-task a {
color: #888; }
.main-content {
background-color: #fff;
border: 1px solid #e2e2e2;
margin-left: 246px;
position: absolute;
overflow: hidden;
padding-bottom: 60px;
top: 70px;
width: 734px; }
.main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
margin-bottom: 1em; }
.main-content p {
line-height: 1.8em; }
.main-content section .section:first-child {
margin-top: 0;
padding-top: 0; }
.main-content section .task-group-section .task-group:first-of-type {
padding-top: 10px; }
.main-content section .task-group-section .task-group:first-of-type .section-name {
padding-top: 15px; }
.main-content section .heading:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.section {
padding: 0 25px; }
.highlight {
background-color: #eee;
padding: 10px 12px;
border: 1px solid #e2e2e2;
border-radius: 4px;
overflow-x: auto; }
.declaration .highlight {
overflow-x: initial;
padding: 0 40px 40px 0;
margin-bottom: -25px;
background-color: transparent;
border: none; }
.section-name {
margin: 0;
margin-left: 18px; }
.task-group-section {
padding-left: 6px;
border-top: 1px solid #e2e2e2; }
.task-group {
padding-top: 0px; }
.task-name-container a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item {
padding-top: 8px;
width: 100%;
list-style-type: none; }
.item a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item code {
background-color: transparent;
padding: 0; }
.item .token {
padding-left: 3px;
margin-left: 15px;
font-size: 11.9px; }
.item .declaration-note {
font-size: .85em;
color: gray;
font-style: italic; }
.pointer-container {
border-bottom: 1px solid #e2e2e2;
left: -23px;
padding-bottom: 13px;
position: relative;
width: 110%; }
.pointer {
background: #f9f9f9;
border-left: 1px solid #e2e2e2;
border-top: 1px solid #e2e2e2;
height: 12px;
left: 21px;
top: -7px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
width: 12px; }
.height-container {
display: none;
left: -25px;
padding: 0 25px;
position: relative;
width: 100%;
overflow: hidden; }
.height-container .section {
background: #f9f9f9;
border-bottom: 1px solid #e2e2e2;
left: -25px;
position: relative;
width: 100%;
padding-top: 10px;
padding-bottom: 5px; }
.aside, .language {
padding: 6px 12px;
margin: 12px 0;
border-left: 5px solid #dddddd;
overflow-y: hidden; }
.aside .aside-title, .language .aside-title {
font-size: 9px;
letter-spacing: 2px;
text-transform: uppercase;
padding-bottom: 0;
margin: 0;
color: #aaa;
-webkit-user-select: none; }
.aside p:last-child, .language p:last-child {
margin-bottom: 0; }
.language {
border-left: 5px solid #cde9f4; }
.language .aside-title {
color: #4b8afb; }
.aside-warning {
border-left: 5px solid #ff6666; }
.aside-warning .aside-title {
color: #ff0000; }
.graybox {
border-collapse: collapse;
width: 100%; }
.graybox p {
margin: 0;
word-break: break-word;
min-width: 50px; }
.graybox td {
border: 1px solid #e2e2e2;
padding: 5px 25px 5px 10px;
vertical-align: middle; }
.graybox tr td:first-of-type {
text-align: right;
padding: 7px;
vertical-align: top;
word-break: normal;
width: 40px; }
.slightly-smaller {
font-size: 0.9em; }
#footer {
position: absolute;
bottom: 10px;
margin-left: 25px; }
#footer p {
margin: 0;
color: #aaa;
font-size: 0.8em; }
html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
display: none; }
html.dash .main-content {
width: 980px;
margin-left: 0;
border: none;
width: 100%;
top: 0;
padding-bottom: 0; }
html.dash .height-container {
display: block; }
html.dash .item .token {
margin-left: 0; }
html.dash .content-wrapper {
width: auto; }
html.dash #footer {
position: static; }
Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

@@ -1,97 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title> 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 title=" Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> Reference</a>
<img id="carat" src="img/carat.png" />
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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h3 id='authors' class='heading'>Authors</h3>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -1,46 +0,0 @@
window.jazzy = {'docset': false}
if (typeof window.dash != 'undefined') {
document.documentElement.className += ' dash'
window.jazzy.docset = true
}
if (navigator.userAgent.match(/xcode/i)) {
document.documentElement.className += ' xcode'
window.jazzy.docset = true
}
// On doc load, toggle the URL hash discussion if present
$(document).ready(function() {
if (!window.jazzy.docset) {
var linkToHash = $('a[href="' + window.location.hash +'"]');
linkToHash.trigger("click");
}
});
// On token click, toggle its discussion and animate token.marginLeft
$(".token").click(function(event) {
if (window.jazzy.docset) {
return;
}
var link = $(this);
var animationDuration = 300;
var tokenOffset = "15px";
var original = link.css('marginLeft') == tokenOffset;
link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration);
$content = link.parent().parent().next();
$content.slideToggle(animationDuration);
// Keeps the document from jumping to the hash.
var href = $(this).attr('href');
if (history.pushState) {
history.pushState({}, '', href);
} else {
location.hash = href;
}
event.preventDefault();
});
// Dumb down quotes within code blocks that delimit strings instead of quotations
// https://github.com/realm/jazzy/issues/714
$("code q").replaceWith(function () {
return ["\"", $(this).contents(), "\""];
});
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

-97
View File
@@ -1,97 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title> 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 title=" Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> Reference</a>
<img id="carat" src="img/carat.png" />
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/SirenAlertMessaging.html">SirenAlertMessaging</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenAlertMessaging/Constants.html"> Constants</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError.html">SirenError</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h3 id='authors' class='heading'>Authors</h3>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-02-21)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
-46
View File
@@ -1,46 +0,0 @@
window.jazzy = {'docset': false}
if (typeof window.dash != 'undefined') {
document.documentElement.className += ' dash'
window.jazzy.docset = true
}
if (navigator.userAgent.match(/xcode/i)) {
document.documentElement.className += ' xcode'
window.jazzy.docset = true
}
// On doc load, toggle the URL hash discussion if present
$(document).ready(function() {
if (!window.jazzy.docset) {
var linkToHash = $('a[href="' + window.location.hash +'"]');
linkToHash.trigger("click");
}
});
// On token click, toggle its discussion and animate token.marginLeft
$(".token").click(function(event) {
if (window.jazzy.docset) {
return;
}
var link = $(this);
var animationDuration = 300;
var tokenOffset = "15px";
var original = link.css('marginLeft') == tokenOffset;
link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration);
$content = link.parent().parent().next();
$content.slideToggle(animationDuration);
// Keeps the document from jumping to the hash.
var href = $(this).attr('href');
if (history.pushState) {
history.pushState({}, '', href);
} else {
location.hash = href;
}
event.preventDefault();
});
// Dumb down quotes within code blocks that delimit strings instead of quotations
// https://github.com/realm/jazzy/issues/714
$("code q").replaceWith(function () {
return ["\"", $(this).contents(), "\""];
});
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-6
View File
@@ -1,6 +0,0 @@
{
"warnings": [
],
"source_directory": "/Users/Arthur/Documents/oss/siren/SirenExample"
}
@@ -11,33 +11,34 @@ import Foundation
// MARK: - Bundle Extension for Siren
extension Bundle {
class func bundleID() -> String? {
final class func bundleID() -> String? {
return Bundle.main.bundleIdentifier
}
class func sirenBundlePath() -> String {
return Bundle(for: Siren.self).path(forResource: "Siren", ofType: "bundle") as String!
final class func sirenBundlePath() -> String? {
return Bundle(for: Siren.self).path(forResource: "Siren", ofType: "bundle")
}
class func sirenForcedBundlePath(forceLanguageLocalization: Siren.LanguageType) -> String {
let path = sirenBundlePath()
final class func sirenForcedBundlePath(forceLanguageLocalization: Siren.LanguageType) -> String? {
guard let path = sirenBundlePath() else { return nil }
let name = forceLanguageLocalization.rawValue
return Bundle(path: path)!.path(forResource: name, ofType: "lproj")!
return Bundle(path: path)?.path(forResource: name, ofType: "lproj")
}
class func localizedString(forKey key: String, forceLanguageLocalization: Siren.LanguageType?) -> String {
var path = sirenBundlePath()
final class func localizedString(forKey key: String, forceLanguageLocalization: Siren.LanguageType?) -> String? {
guard var path = sirenBundlePath() else { return nil }
let table = "SirenLocalizable"
if let forceLanguageLocalization = forceLanguageLocalization {
path = sirenForcedBundlePath(forceLanguageLocalization: forceLanguageLocalization)
if let forceLanguageLocalization = forceLanguageLocalization,
let forcedPath = sirenForcedBundlePath(forceLanguageLocalization: forceLanguageLocalization) {
path = forcedPath
}
return Bundle(path: path)!.localizedString(forKey: key, value: key, table: table)
return Bundle(path: path)?.localizedString(forKey: key, value: key, table: table)
}
class func bestMatchingAppName() -> String {
final class func bestMatchingAppName() -> String {
let bundleDisplayName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String
let bundleName = Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
@@ -48,7 +49,7 @@ extension Bundle {
// MARK: - Bundle Extension for Testing Siren
extension Bundle {
func testLocalizedString(forKey key: String, forceLanguageLocalization: Siren.LanguageType?) -> String {
func testLocalizedString(forKey key: String, forceLanguageLocalization: Siren.LanguageType?) -> String? {
return Bundle.localizedString(forKey: key, forceLanguageLocalization: forceLanguageLocalization)
}
}
@@ -0,0 +1,48 @@
//
// SirenLocalizationExtension.swift
// Siren
//
// Created by Arthur Sabintsev on 9/25/18.
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
//
import Foundation
// MARK: - Helpers (Localization)
extension Siren {
func localizedUpdateTitle() -> String {
return Bundle.localizedString(forKey: alertMessaging.updateTitle.string, forceLanguageLocalization: forceLanguageLocalization)
?? alertMessaging.updateTitle.string
}
func localizedNewVersionMessage() -> String {
let newVersionMessage = Bundle.localizedString(forKey: alertMessaging.updateMessage.string,
forceLanguageLocalization: forceLanguageLocalization)
?? alertMessaging.updateMessage.string
guard let currentAppStoreVersion = currentAppStoreVersion else {
return String(format: newVersionMessage, appName, "Unknown")
}
return String(format: newVersionMessage, appName, currentAppStoreVersion)
}
func localizedUpdateButtonTitle() -> String? {
return Bundle.localizedString(forKey: alertMessaging.updateButtonMessage.string,
forceLanguageLocalization: forceLanguageLocalization)
?? alertMessaging.updateButtonMessage.string
}
func localizedNextTimeButtonTitle() -> String? {
return Bundle.localizedString(forKey: alertMessaging.nextTimeButtonMessage.string,
forceLanguageLocalization: forceLanguageLocalization)
?? alertMessaging.nextTimeButtonMessage.string
}
func localizedSkipButtonTitle() -> String? {
return Bundle.localizedString(forKey: alertMessaging.skipVersionButtonMessage.string,
forceLanguageLocalization: forceLanguageLocalization)
?? alertMessaging.skipVersionButtonMessage.string
}
}
@@ -15,11 +15,11 @@ extension UIAlertController {
func show() {
let window = UIWindow(frame: UIScreen.main.bounds)
window.rootViewController = SirenViewController()
window.windowLevel = UIWindowLevelAlert + 1
window.windowLevel = UIWindow.Level.alert + 1
Siren.shared.updaterWindow = window
window.makeKeyAndVisible()
window.rootViewController!.present(self, animated: true, completion: nil)
window.rootViewController?.present(self, animated: true, completion: nil)
}
}
@@ -0,0 +1,51 @@
//
// SirenUserDefaultsExtension.swift
// Siren
//
// Created by Arthur Sabintsev on 9/25/18.
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
//
import Foundation
/// Siren-specific UserDefaults Keys
private enum SirenKeys: String {
/// Key that notifies Siren to perform a version check and present
/// the Siren alert the next time the user launches the app.
case PerformVersionCheckOnSubsequentLaunch
/// Key that stores the timestamp of the last version check in UserDefaults.
case StoredVersionCheckDate
/// Key that stores the version that a user decided to skip in UserDefaults.
case StoredSkippedVersion
}
// MARK: - UserDefaults Extension for Siren
extension UserDefaults {
static var shouldPerformVersionCheckOnSubsequentLaunch: Bool {
get {
print(#function, standard.bool(forKey: SirenKeys.PerformVersionCheckOnSubsequentLaunch.rawValue))
return standard.bool(forKey: SirenKeys.PerformVersionCheckOnSubsequentLaunch.rawValue)
} set {
standard.set(newValue, forKey: SirenKeys.PerformVersionCheckOnSubsequentLaunch.rawValue)
}
}
static var storedSkippedVersion: String? {
get {
return standard.string(forKey: SirenKeys.StoredSkippedVersion.rawValue)
} set {
standard.set(newValue, forKey: SirenKeys.StoredSkippedVersion.rawValue)
}
}
static var storedVersionCheckDate: Date? {
get {
return standard.object(forKey: SirenKeys.StoredVersionCheckDate.rawValue) as? Date
} set {
standard.set(newValue, forKey: SirenKeys.StoredVersionCheckDate.rawValue)
}
}
}
+64
View File
@@ -0,0 +1,64 @@
//
// SirenAlertMessaging.swift
// Siren
//
// Created by Arthur Sabintsev on 12/6/17.
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
//
import Foundation
// MARK: - Siren Alert Messaging Customization
/// Allows the overriding of all the `UIAlertController` and `UIActionSheet` Strings to which Siren defaults.
///
/// - Warning: Overriding any of these keys will result in the loss of the built-in internationalization that Siren provides.
///
/// As `SirenAlertMessaging` is a Struct, one _or_ more keys can be modified. Overriding only one string will result in the other keys retaining their default (and internationalizable) values.
public struct SirenAlertMessaging {
/// The default constants used for the alert messaging.
public struct Constants {
/// The button text that conveys the message that the user should be prompted to update next time the app launches.
public static let nextTime = NSAttributedString(string: "Next time")
/// The text that conveys the message that the the user wants to skip this verison update.
public static let skipVersion = NSAttributedString(string: "Skip this version")
/// The text that conveys the message that there is an app update available
public static let updateMessage = NSAttributedString(string: "A new version of %@ is available. Please update to version %@ now.")
/// The alert title which defaults to *Update Available*.
public static let updateTitle = NSAttributedString(string: "Update Available")
/// The button text that conveys the message that the user would like to update the app right away.
public static let updateNow = NSAttributedString(string: "Update")
}
let nextTimeButtonMessage: NSAttributedString
let skipVersionButtonMessage: NSAttributedString
let updateButtonMessage: NSAttributedString
let updateMessage: NSAttributedString
let updateTitle: NSAttributedString
/// The public initializer
///
/// - Parameters:
/// - title: The title field of the `UIAlertController`.
/// - message: The `message` field of the `UIAlertController`.
/// - updateButtonMessage: The `title` field of the Update Button `UIAlertAction`.
/// - nextTimeButtonMessage: The `title` field of the Next Time Button `UIAlertAction`.
/// - skipVersionButtonMessage: The `title` field of the Skip Button `UIAlertAction`.
public init(updateTitle title: NSAttributedString = Constants.updateTitle,
updateMessage message: NSAttributedString = Constants.updateMessage,
updateButtonMessage: NSAttributedString = Constants.updateNow,
nextTimeButtonMessage: NSAttributedString = Constants.nextTime,
skipVersionButtonMessage: NSAttributedString = Constants.skipVersion) {
self.updateTitle = title
self.nextTimeButtonMessage = nextTimeButtonMessage
self.updateButtonMessage = updateButtonMessage
self.updateMessage = message
self.skipVersionButtonMessage = skipVersionButtonMessage
}
}
+46
View File
@@ -0,0 +1,46 @@
//
// SirenLookupModel.swift
// Siren
//
// Created by Arthur Sabintsev on 8/6/17.
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
//
import Foundation
// MARK: - Model representing a selection of results from the iTunes Lookup API
public struct SirenLookupModel: Decodable {
private enum CodingKeys: String, CodingKey {
case results
}
/// The array of results objects from the iTunes Lookup API.
public let results: [Results]
/// The Results object from the the iTunes Lookup API.
public struct Results: Decodable {
private enum CodingKeys: String, CodingKey {
case appID = "trackId"
case currentVersionReleaseDate
case minimumOSVersion = "minimumOsVersion"
case releaseNotes
case version
}
/// The app's App ID.
public let appID: Int
/// The release date for the latest verison of the app.
public let currentVersionReleaseDate: String
/// The minimum verison of iOS that the current verison 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
}
}
@@ -10,7 +10,7 @@ import Foundation
/// MARK - Siren UpdateType
/// `UpdateType` defines what kind of update is available
/// `UpdateType` 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.
///
@@ -18,7 +18,7 @@ import Foundation
/// - minor: Minor release available: a.B.c.d
/// - patch: Patch release available: a.b.C.d
/// - revision: Revision release available: a.b.c.D
/// - unknown: No information available about the update
/// - unknown: No information available about the update.
public enum UpdateType: String {
case major
case minor
@@ -31,45 +31,43 @@ public enum UpdateType: String {
/// Delegate that handles all codepaths for Siren upon version check completion.
public protocol SirenDelegate: NSObjectProtocol {
/// User presented with update dialog.
/// Siren performed a version check and did not display an alert.
func sirenDidDetectNewVersionWithoutAlert(title: String, message: String, updateType: UpdateType)
/// Siren failed to perform version check.
///
/// - Note:
/// Depending on the reason for failure,
/// a system-level error may be returned.
func sirenDidFailVersionCheck(error: Error)
/// User presented with an update dialog.
///
/// - Parameter alertType: The type of alert that was presented.
func sirenDidShowUpdateDialog(alertType: Siren.AlertType)
/// User did click on button that launched App Store.app.
func sirenUserDidLaunchAppStore()
/// Siren performed a version check and the latest version was already installed.
func sirenLatestVersionInstalled()
/// User did click on button that skips version update.
func sirenUserDidSkipVersion()
/// Provides the decoded JSON information from a successful version check call.
///
/// - Parameter lookupModel: The `Decodable` model representing the JSON results from the iTunes Lookup API.
func sirenNetworkCallDidReturnWithNewVersionInformation(lookupModel: SirenLookupModel)
/// User did click on button that cancels update dialog.
func sirenUserDidCancel()
/// Siren failed to perform version check (may return system-level error).
func sirenDidFailVersionCheck(error: Error)
/// User did click on button that launched "App Store.app".
func sirenUserDidLaunchAppStore()
/// Siren performed version check and did not display alert.
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType)
/// Siren performed version check and latest version is installed.
func sirenLatestVersionInstalled()
/// User did click on button that skips version update.
func sirenUserDidSkipVersion()
}
// MARK: - SirenDelegate Protocol Extension
public extension SirenDelegate {
func sirenDidShowUpdateDialog(alertType: Siren.AlertType) {
printMessage()
}
func sirenUserDidLaunchAppStore() {
printMessage()
}
func sirenUserDidSkipVersion() {
printMessage()
}
func sirenUserDidCancel() {
func sirenDidDetectNewVersionWithoutAlert(title: String, message: String, updateType: UpdateType) {
printMessage()
}
@@ -77,7 +75,7 @@ public extension SirenDelegate {
printMessage()
}
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType) {
func sirenDidShowUpdateDialog(alertType: Siren.AlertType) {
printMessage()
}
@@ -85,8 +83,23 @@ public extension SirenDelegate {
printMessage()
}
func sirenUserDidCancel() {
printMessage()
}
func sirenUserDidLaunchAppStore() {
printMessage()
}
func sirenNetworkCallDidReturnWithNewVersionInformation(lookupModel: SirenLookupModel) {
printMessage()
}
func sirenUserDidSkipVersion() {
printMessage()
}
private func printMessage(_ function: String = #function) {
SirenLog("The default implementation of \(function) is being called. You can ignore this message if you do not care to implement this method in your `SirenDelegate` conforming structure.")
}
}
+46 -239
View File
@@ -30,7 +30,7 @@ public final class Siren: NSObject {
/// - sirenUserDidCancel()
///
/// When a new version has been detected, and you would like to present a localized message in a custom UI. use this delegate method:
/// - sirenDidDetectNewVersionWithoutAlert(message: String)
/// - sirenDidDetectNewVersionWithoutAlert(title: String, message: String)
public weak var delegate: SirenDelegate?
/// The debug flag, which is disabled by default.
@@ -88,16 +88,19 @@ public final class Siren: NSObject {
/// Overrides the tint color for UIAlertController.
public var alertControllerTintColor: UIColor?
/// When this is set, the alert will only show up if the current version has already been released for X days
/// When this is set, the alert will only show up if the current version has already been released for X days.
/// Defaults to 1 day to avoid an issue where Apple updates the JSON faster than the app binary propogates to the App Store.
public var showAlertAfterCurrentVersionHasBeenReleasedForDays: Int = 1
/// The current version of your app that is available for download on the App Store
public internal(set) var currentAppStoreVersion: String?
internal var updaterWindow: UIWindow?
/// The `UIWindow` instance that presents the `SirenAlertViewController`.
var updaterWindow: UIWindow?
var lastVersionCheckPerformedOnDate: Date?
fileprivate var appID: Int?
fileprivate var lastVersionCheckPerformedOnDate: Date?
fileprivate lazy var alertViewIsVisible: Bool = false
/// Type of the available update
@@ -110,7 +113,7 @@ public final class Siren: NSObject {
public static let sharedInstance = Siren()
override init() {
lastVersionCheckPerformedOnDate = UserDefaults.standard.object(forKey: SirenDefaults.StoredVersionCheckDate.rawValue) as? Date
lastVersionCheckPerformedOnDate = UserDefaults.storedVersionCheckDate
}
/// Checks the currently installed version of your app against the App Store.
@@ -129,6 +132,9 @@ public final class Siren: NSObject {
if checkType == .immediately {
performVersionCheck()
} else if UserDefaults.shouldPerformVersionCheckOnSubsequentLaunch {
UserDefaults.shouldPerformVersionCheckOnSubsequentLaunch = false
performVersionCheck()
} else {
guard let lastVersionCheckPerformedOnDate = lastVersionCheckPerformedOnDate else {
performVersionCheck()
@@ -154,16 +160,18 @@ public final class Siren: NSObject {
}
DispatchQueue.main.async {
UIApplication.shared.openURL(url)
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url)
}
}
}
}
// MARK: - Helpers (Networking)
// MARK: - Networking
private extension Siren {
func performVersionCheck() {
do {
let url = try iTunesURLFromString()
@@ -171,7 +179,7 @@ private extension Siren {
URLSession.shared.dataTask(with: request, completionHandler: { [weak self] (data, response, error) in
self?.processResults(withData: data, response: response, error: error)
}).resume()
} catch _ {
} catch {
postError(.malformedURL)
}
}
@@ -184,7 +192,6 @@ private extension Siren {
postError(.appStoreDataRetrievalFailure(underlyingError: nil))
return
}
do {
let decodedData = try JSONDecoder().decode(SirenLookupModel.self, from: data)
@@ -192,14 +199,14 @@ private extension Siren {
return postError(.appStoreDataRetrievalEmptyResults)
}
DispatchQueue.main.async { [unowned self] in
self.printMessage("Decoded JSON results: \(decodedData)")
DispatchQueue.main.async { [weak self] in
guard let self = self else { return }
// Process Results (e.g., extract current version that is available on the AppStore)
self.printMessage("Decoded JSON results: \(decodedData)")
self.delegate?.sirenNetworkCallDidReturnWithNewVersionInformation(lookupModel: decodedData)
self.processVersionCheck(with: decodedData)
}
} catch let error as NSError {
} catch {
postError(.appStoreJSONParsingFailure(underlyingError: error))
}
}
@@ -267,13 +274,13 @@ private extension Siren {
}
}
// MARK: - Helpers (Alert)
// MARK: - Alert
private extension Siren {
func showAlertIfCurrentAppStoreVersionNotSkipped() {
alertType = setAlertType()
guard let previouslySkippedVersion = UserDefaults.standard.object(forKey: SirenDefaults.StoredSkippedVersion.rawValue) as? String else {
guard let previouslySkippedVersion = UserDefaults.storedSkippedVersion else {
showAlert()
return
}
@@ -286,8 +293,7 @@ private extension Siren {
func showAlert() {
storeVersionCheckDate()
let updateAvailableMessage = Bundle.localizedString(forKey: alertMessaging.updateTitle, forceLanguageLocalization: forceLanguageLocalization)
let updateAvailableMessage = localizedUpdateTitle()
let newVersionMessage = localizedNewVersionMessage()
let alertController = UIAlertController(title: updateAvailableMessage, message: newVersionMessage, preferredStyle: .alert)
@@ -307,7 +313,8 @@ private extension Siren {
alertController.addAction(updateAlertAction())
alertController.addAction(skipAlertAction())
case .none:
delegate?.sirenDidDetectNewVersionWithoutAlert(message: newVersionMessage, updateType: updateType)
let updateTitle = localizedUpdateTitle()
delegate?.sirenDidDetectNewVersionWithoutAlert(title: updateTitle, message: newVersionMessage, updateType: updateType)
}
if alertType != .none && !alertViewIsVisible {
@@ -320,14 +327,12 @@ private extension Siren {
func updateAlertAction() -> UIAlertAction {
let title = localizedUpdateButtonTitle()
let action = UIAlertAction(title: title, style: .default) { [weak self] _ in
guard let strongSelf = self else {
return
}
guard let self = self else { return }
strongSelf.hideWindow()
strongSelf.launchAppStore()
strongSelf.delegate?.sirenUserDidLaunchAppStore()
strongSelf.alertViewIsVisible = false
self.hideWindow()
self.launchAppStore()
self.delegate?.sirenUserDidLaunchAppStore()
self.alertViewIsVisible = false
return
}
@@ -337,13 +342,12 @@ private extension Siren {
func nextTimeAlertAction() -> UIAlertAction {
let title = localizedNextTimeButtonTitle()
let action = UIAlertAction(title: title, style: .default) { [weak self] _ in
guard let strongSelf = self else {
return
}
guard let self = self else { return }
strongSelf.hideWindow()
strongSelf.delegate?.sirenUserDidCancel()
strongSelf.alertViewIsVisible = false
self.hideWindow()
self.delegate?.sirenUserDidCancel()
self.alertViewIsVisible = false
UserDefaults.shouldPerformVersionCheckOnSubsequentLaunch = true
return
}
@@ -353,18 +357,16 @@ private extension Siren {
func skipAlertAction() -> UIAlertAction {
let title = localizedSkipButtonTitle()
let action = UIAlertAction(title: title, style: .default) { [weak self] _ in
guard let strongSelf = self else {
return
}
guard let self = self else { return }
if let currentAppStoreVersion = strongSelf.currentAppStoreVersion {
UserDefaults.standard.set(currentAppStoreVersion, forKey: SirenDefaults.StoredSkippedVersion.rawValue)
if let currentAppStoreVersion = self.currentAppStoreVersion {
UserDefaults.storedSkippedVersion = currentAppStoreVersion
UserDefaults.standard.synchronize()
}
strongSelf.hideWindow()
strongSelf.delegate?.sirenUserDidSkipVersion()
strongSelf.alertViewIsVisible = false
self.hideWindow()
self.delegate?.sirenUserDidSkipVersion()
self.alertViewIsVisible = false
return
}
@@ -377,8 +379,8 @@ private extension Siren {
return .option
}
let oldVersion = (currentInstalledVersion).split {$0 == "."}.map { String($0) }.map {Int($0) ?? 0}
let newVersion = (currentAppStoreVersion).split {$0 == "."}.map { String($0) }.map {Int($0) ?? 0}
let oldVersion = (currentInstalledVersion).lazy.split {$0 == "."}.map { String($0) }.map {Int($0) ?? 0}
let newVersion = (currentAppStoreVersion).lazy.split {$0 == "."}.map { String($0) }.map {Int($0) ?? 0}
guard let newVersionFirst = newVersion.first, let oldVersionFirst = oldVersion.first else {
return alertType // Default value is .Option
@@ -401,198 +403,3 @@ private extension Siren {
return alertType
}
}
// MARK: - Helpers (Localization)
private extension Siren {
func localizedNewVersionMessage() -> String {
let newVersionMessageToLocalize = alertMessaging.updateMessage
let newVersionMessage = Bundle.localizedString(forKey: newVersionMessageToLocalize, forceLanguageLocalization: forceLanguageLocalization)
guard let currentAppStoreVersion = currentAppStoreVersion else {
return String(format: newVersionMessage, appName, "Unknown")
}
return String(format: newVersionMessage, appName, currentAppStoreVersion)
}
func localizedUpdateButtonTitle() -> String {
return Bundle.localizedString(forKey: alertMessaging.updateButtonMessage, forceLanguageLocalization: forceLanguageLocalization)
}
func localizedNextTimeButtonTitle() -> String {
return Bundle.localizedString(forKey: alertMessaging.nextTimeButtonMessage, forceLanguageLocalization: forceLanguageLocalization)
}
func localizedSkipButtonTitle() -> String {
return Bundle.localizedString(forKey: alertMessaging.skipVersionButtonMessage, forceLanguageLocalization: forceLanguageLocalization)
}
}
// MARK: - Helpers (Version)
extension Siren {
func isAppStoreVersionNewer() -> Bool {
var newVersionExists = false
if let currentInstalledVersion = currentInstalledVersion,
let currentAppStoreVersion = currentAppStoreVersion,
(currentInstalledVersion.compare(currentAppStoreVersion, options: .numeric) == .orderedAscending) {
newVersionExists = true
}
return newVersionExists
}
fileprivate func storeVersionCheckDate() {
lastVersionCheckPerformedOnDate = Date()
if let lastVersionCheckPerformedOnDate = lastVersionCheckPerformedOnDate {
UserDefaults.standard.set(lastVersionCheckPerformedOnDate, forKey: SirenDefaults.StoredVersionCheckDate.rawValue)
UserDefaults.standard.synchronize()
}
}
}
// MARK: - Helpers (Misc.)
private extension Siren {
func isUpdateCompatibleWithDeviceOS(for model: SirenLookupModel) -> Bool {
guard let requiredOSVersion = model.results.first?.minimumOSVersion else {
postError(.appStoreOSVersionNumberFailure)
return false
}
let systemVersion = UIDevice.current.systemVersion
guard systemVersion.compare(requiredOSVersion, options: .numeric) == .orderedDescending ||
systemVersion.compare(requiredOSVersion, options: .numeric) == .orderedSame else {
postError(.appStoreOSVersionUnsupported)
return false
}
return true
}
func hideWindow() {
if let updaterWindow = updaterWindow {
updaterWindow.isHidden = true
self.updaterWindow = nil
}
}
/// Routes a console-bound message to the `SirenLog` struct, which decorates the log message.
///
/// - Parameter message: The message to decorate and log to the console.
func printMessage(_ message: String) {
if debugEnabled {
SirenLog(message)
}
}
}
// MARK: - Enumerated Types (Public)
public extension Siren {
/// Determines the type of alert to present after a successful version check has been performed.
enum AlertType {
/// Forces user to update your app (1 button alert).
case force
/// (DEFAULT) Presents user with option to update app now or at next launch (2 button alert).
case option
/// Presents user with option to update the app now, at next launch, or to skip this version all together (3 button alert).
case skip
/// Doesn't show the alert, but instead returns a localized message
/// for use in a custom UI within the sirenDidDetectNewVersionWithoutAlert() delegate method.
case none
}
/// Determines the frequency in which the the version check is performed and the user is prompted to update the app.
///
enum VersionCheckType: Int {
/// Version check performed every time the app is launched.
case immediately = 0
/// Version check performed once a day.
case daily = 1
/// Version check performed once a week.
case weekly = 7
}
/// Determines the available languages in which the update message and alert button titles should appear.
///
/// By default, the operating system's default lanuage setting is used. However, you can force a specific language
/// by setting the forceLanguageLocalization property before calling checkVersion()
enum LanguageType: String {
case arabic = "ar"
case armenian = "hy"
case basque = "eu"
case chineseSimplified = "zh-Hans"
case chineseTraditional = "zh-Hant"
case croatian = "hr"
case czech = "cs"
case danish = "da"
case dutch = "nl"
case english = "en"
case estonian = "et"
case finnish = "fi"
case french = "fr"
case german = "de"
case greek = "el"
case hebrew = "he"
case hungarian = "hu"
case indonesian = "id"
case italian = "it"
case japanese = "ja"
case korean = "ko"
case latvian = "lv"
case lithuanian = "lt"
case malay = "ms"
case norwegian = "nb-NO"
case persian = "fa"
case persianAfghanistan = "fa-AF"
case persianIran = "fa-IR"
case polish = "pl"
case portugueseBrazil = "pt"
case portuguesePortugal = "pt-PT"
case russian = "ru"
case serbianCyrillic = "sr-Cyrl"
case serbianLatin = "sr-Latn"
case slovenian = "sl"
case spanish = "es"
case swedish = "sv"
case thai = "th"
case turkish = "tr"
case urdu = "ur"
case ukrainian = "uk"
case vietnamese = "vi"
}
}
// MARK: - Enumerated Types (Private)
private extension Siren {
/// Siren-specific UserDefaults Keys
enum SirenDefaults: String {
/// Key that stores the timestamp of the last version check in UserDefaults
case StoredVersionCheckDate
/// Key that stores the version that a user decided to skip in UserDefaults.
case StoredSkippedVersion
}
}
// MARK: - Error Handling
private extension Siren {
func postError(_ error: SirenError.Known) {
delegate?.sirenDidFailVersionCheck(error: error)
printMessage(error.localizedDescription)
}
}
-54
View File
@@ -1,54 +0,0 @@
//
// SirenAlertMessaging.swift
// Siren
//
// Created by Arthur Sabintsev on 12/6/17.
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
//
import Foundation
// MARK: - Siren Alert Messaging Customization
/// Allows the overriding of all the `UIAlertController` and `UIActionSheet` Strings to which Siren defaults.
///
/// - Warning: Overriding any of these keys will result in the loss of the built-in internationalization that Siren provides.
///
/// As SirenAlertMessaging is a Struct, one _or_ more keys can be modified. Overriding only one string will result in the other keys retaining their default (and internationalizable) values.
public struct SirenAlertMessaging {
public struct Constants {
public static let nextTime = "Next time"
public static let skipVersion = "Skip this version"
public static let updateMessage = "A new version of %@ is available. Please update to version %@ now."
public static let updateTitle = "Update Available"
public static let updateNow = "Update"
}
let nextTimeButtonMessage: String
let skipVersionButtonMessage: String
let updateButtonMessage: String
let updateMessage: String
let updateTitle: String
/// The public initializer
///
/// - Parameters:
/// - title: The title field of the `UIAlertController`.
/// - message: The `message` field of the `UIAlertController`.
/// - updateButtonMessage: The `title` field of the Update Button `UIAlertAction`.
/// - nextTimeButtonMessage: The `title` field of the Next Time Button `UIAlertAction`.
/// - skipVersionButtonMessage: The `title` field of the Skip Button `UIAlertAction`.
public init(updateTitle title: String = Constants.updateTitle,
updateMessage message: String = Constants.updateMessage,
updateButtonMessage: String = Constants.updateNow,
nextTimeButtonMessage: String = Constants.nextTime,
skipVersionButtonMessage: String = Constants.skipVersion) {
self.updateTitle = title
self.nextTimeButtonMessage = nextTimeButtonMessage
self.updateButtonMessage = updateButtonMessage
self.updateMessage = message
self.skipVersionButtonMessage = skipVersionButtonMessage
}
}
-33
View File
@@ -1,33 +0,0 @@
//
// SirenLookupModel.swift
// Siren
//
// Created by Arthur Sabintsev on 8/6/17.
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
//
import Foundation
// MARK: - Model representing a selection of results from the iTunes Lookup API
struct SirenLookupModel: Decodable {
private enum CodingKeys: String, CodingKey {
case results
}
let results: [Results]
struct Results: Decodable {
private enum CodingKeys: String, CodingKey {
case appID = "trackId"
case currentVersionReleaseDate
case minimumOSVersion = "minimumOsVersion"
case version
}
let appID: Int
let currentVersionReleaseDate: String
let minimumOSVersion: String
let version: String
}
}
-25
View File
@@ -1,25 +0,0 @@
//
// SirenTestHelper.swift
// SirenExample
//
// Created by Arthur Sabintsev on 4/8/17.
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
//
import Foundation
// MARK: - Test Target Helpers
extension Siren {
func testSetCurrentInstalledVersion(version: String) {
currentInstalledVersion = version
}
func testSetAppStoreVersion(version: String) {
currentAppStoreVersion = version
}
func testIsAppStoreVersionNewer() -> Bool {
return isAppStoreVersionNewer()
}
}
+91
View File
@@ -0,0 +1,91 @@
//
// SirenConstants.swift
// Siren
//
// Created by Arthur Sabintsev on 9/25/18.
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
//
import Foundation
// MARK: - Enumerated Types
public extension Siren {
/// Determines the type of alert to present after a successful version check has been performed.
enum AlertType {
/// Forces user to update your app (1 button alert).
case force
/// (DEFAULT) Presents user with option to update app now or at next launch (2 button alert).
case option
/// Presents user with option to update the app now, at next launch, or to skip this version all together (3 button alert).
case skip
/// Doesn't show the alert, but instead returns a localized message
/// for use in a custom UI within the sirenDidDetectNewVersionWithoutAlert() delegate method.
case none
}
/// Determines the frequency in which the the version check is performed and the user is prompted to update the app.
///
enum VersionCheckType: Int {
/// Version check performed every time the app is launched.
case immediately = 0
/// Version check performed once a day.
case daily = 1
/// Version check performed once a week.
case weekly = 7
}
/// Determines the available languages in which the update message and alert button titles should appear.
///
/// By default, the operating system's default lanuage setting is used. However, you can force a specific language
/// by setting the forceLanguageLocalization property before calling checkVersion()
enum LanguageType: String {
case arabic = "ar"
case armenian = "hy"
case basque = "eu"
case chineseSimplified = "zh-Hans"
case chineseTraditional = "zh-Hant"
case croatian = "hr"
case czech = "cs"
case danish = "da"
case dutch = "nl"
case english = "en"
case estonian = "et"
case finnish = "fi"
case french = "fr"
case german = "de"
case greek = "el"
case hebrew = "he"
case hungarian = "hu"
case indonesian = "id"
case italian = "it"
case japanese = "ja"
case korean = "ko"
case latvian = "lv"
case lithuanian = "lt"
case malay = "ms"
case norwegian = "nb-NO"
case persian = "fa"
case persianAfghanistan = "fa-AF"
case persianIran = "fa-IR"
case polish = "pl"
case portugueseBrazil = "pt"
case portuguesePortugal = "pt-PT"
case russian = "ru"
case serbianCyrillic = "sr-Cyrl"
case serbianLatin = "sr-Latn"
case slovenian = "sl"
case spanish = "es"
case swedish = "sv"
case thai = "th"
case turkish = "tr"
case urdu = "ur"
case ukrainian = "uk"
case vietnamese = "vi"
}
}
@@ -9,9 +9,20 @@
import Foundation
// MARK: - Siren Error Handling
public struct SirenError: LocalizedError {
/// Enumerates all potentials errors that Siren can handle.
///
/// - appStoreAppIDFailure: Error retrieving trackId as the JSON does not contain a 'trackId' key.
/// - appStoreDataRetrievalFailure: Error retrieving App Store data as an error was returned.
/// - appStoreJSONParsingFailure: Error parsing App Store JSON data.
/// - appStoreDataRetrievalEmptyResults: Error retrieving App Store data as JSON results were empty. Is your app available in the US? If not, change the `countryCode` variable to fix this error.
/// - appStoreOSVersionNumberFailure: Error retrieving iOS version number as there was no data returned.
/// - appStoreOSVersionUnsupported: The version of iOS on the device is lower than that of the one required by the app verison update.
/// - appStoreVersionArrayFailure: Error retrieving App Store verson number as the JSON does not contain a 'version' key.
/// - malformedURL: The iTunes URL is malformed. Please leave an issue on https://github.com/ArtSabintsev/Siren with as many details as possible.
/// - noUpdateAvailable: No new update available.
/// - recentlyCheckedAlready: Not checking the version, because it was already checked recently.
public enum Known: Error {
case appStoreAppIDFailure
case appStoreDataRetrievalFailure(underlyingError: Error?)
@@ -43,12 +54,21 @@ public struct SirenError: LocalizedError {
case .appStoreVersionArrayFailure:
return "Error retrieving App Store verson number as the JSON does not contain a 'version' key."
case .malformedURL:
return "The iTunes URL is malformed. Please leave an issue on http://github.com/ArtSabintsev/Siren with as many details as possible."
return "The iTunes URL is malformed. Please leave an issue on https://github.com/ArtSabintsev/Siren with as many details as possible."
case .noUpdateAvailable:
return "No new update available."
case .recentlyCheckedAlready:
return "Not checking the version, because it already checked recently."
return "Not checking the version, because it was already checked recently."
}
}
}
}
// MARK: - Error Handling
extension Siren {
func postError(_ error: SirenError.Known) {
delegate?.sirenDidFailVersionCheck(error: error)
printMessage(error.localizedDescription)
}
}
+83
View File
@@ -0,0 +1,83 @@
//
// SirenHelpers.swift
// Siren
//
// Created by Arthur Sabintsev on 9/25/18.
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
//
import Foundation
// MARK: - Version
extension Siren {
func isAppStoreVersionNewer() -> Bool {
var newVersionExists = false
if let currentInstalledVersion = currentInstalledVersion,
let currentAppStoreVersion = currentAppStoreVersion,
(currentInstalledVersion.compare(currentAppStoreVersion, options: .numeric) == .orderedAscending) {
newVersionExists = true
}
return newVersionExists
}
func storeVersionCheckDate() {
lastVersionCheckPerformedOnDate = Date()
if let lastVersionCheckPerformedOnDate = lastVersionCheckPerformedOnDate {
UserDefaults.storedVersionCheckDate = lastVersionCheckPerformedOnDate
UserDefaults.standard.synchronize()
}
}
}
// MARK: - Miscellaneous
extension Siren {
func isUpdateCompatibleWithDeviceOS(for model: SirenLookupModel) -> Bool {
guard let requiredOSVersion = model.results.first?.minimumOSVersion else {
postError(.appStoreOSVersionNumberFailure)
return false
}
let systemVersion = UIDevice.current.systemVersion
guard systemVersion.compare(requiredOSVersion, options: .numeric) == .orderedDescending ||
systemVersion.compare(requiredOSVersion, options: .numeric) == .orderedSame else {
postError(.appStoreOSVersionUnsupported)
return false
}
return true
}
func hideWindow() {
if let updaterWindow = updaterWindow {
updaterWindow.isHidden = true
self.updaterWindow = nil
}
}
/// Routes a console-bound message to the `SirenLog` struct, which decorates the log message.
///
/// - Parameter message: The message to decorate and log to the console.
func printMessage(_ message: String) {
if debugEnabled {
SirenLog(message)
}
}
}
// MARK: - Test Target
extension Siren {
func testSetCurrentInstalledVersion(version: String) {
currentInstalledVersion = version
}
func testSetAppStoreVersion(version: String) {
currentAppStoreVersion = version
}
}
@@ -11,10 +11,8 @@ import Foundation
// MARK: - Log and decorate Siren-specific messages to the console.
struct SirenLog {
@discardableResult
init(_ message: String) {
print("[Siren] \(message)")
}
}
+11 -5
View File
@@ -10,11 +10,11 @@
</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> (42% documented)</p>
<p class="header-right"><a href="https://github.com/artsabintsev/siren"><img src="img/gh.png"/>View on GitHub</a></p>
<p><a href="index.html">Siren Docs</a> (52% documented)</p>
</div>
</header>
<div class="content-wrapper">
@@ -75,6 +75,12 @@
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenLookupModel.html">SirenLookupModel</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenLookupModel/Results.html"> Results</a>
</li>
</ul>
</li>
</ul>
@@ -117,7 +123,7 @@
<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>
<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>
@@ -129,8 +135,8 @@
</section>
</section>
<section id="footer">
<p>© 2015-2017 <a class="link" href="http://www.sabintsev.com" target="_blank" rel="external">Arthur Ariel Sabintsev</a></p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 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-07-25)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
+65 -53
View File
@@ -14,8 +14,7 @@
<a title="Siren Class Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">Siren Docs</a> (42% documented)</p>
<p class="header-right"><a href="https://github.com/artsabintsev/siren"><img src="../img/gh.png"/>View on GitHub</a></p>
<p><a href="../index.html">Siren Docs</a> (52% documented)</p>
</div>
</header>
<div class="content-wrapper">
@@ -76,6 +75,12 @@
<li class="nav-group-task">
<a href="../Structs/SirenError/Known.html"> Known</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenLookupModel.html">SirenLookupModel</a>
</li>
<li class="nav-group-task">
<a href="../Structs/SirenLookupModel/Results.html"> Results</a>
</li>
</ul>
</li>
</ul>
@@ -86,7 +91,7 @@
<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>
<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>
@@ -99,9 +104,9 @@
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC0A11ErrorDomainSSv"></a>
<a name="/s:5SirenAAC0A11ErrorDomainSSvp"></a>
<a name="//apple_ref/swift/Property/SirenErrorDomain" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC0A11ErrorDomainSSv">SirenErrorDomain</a>
<a class="token" href="#/s:5SirenAAC0A11ErrorDomainSSvp">SirenErrorDomain</a>
</code>
</div>
<div class="height-container">
@@ -116,7 +121,7 @@
<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">let</span> <span class="nv">SirenErrorDomain</span> <span class="o">=</span> <span class="s">"Siren Error Domain"</span></code></pre>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">SirenErrorDomain</span><span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
@@ -126,9 +131,9 @@
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC8delegateAA0A8Delegate_pSgXwv"></a>
<a name="/s:5SirenAAC8delegateAA0A8Delegate_pSgXwvp"></a>
<a name="//apple_ref/swift/Property/delegate" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC8delegateAA0A8Delegate_pSgXwv">delegate</a>
<a class="token" href="#/s:5SirenAAC8delegateAA0A8Delegate_pSgXwvp">delegate</a>
</code>
</div>
<div class="height-container">
@@ -150,7 +155,7 @@
<p>When a new version has been detected, and you would like to present a localized message in a custom UI. use this delegate method:</p>
<ul>
<li>sirenDidDetectNewVersionWithoutAlert(message: String)</li>
<li>sirenDidDetectNewVersionWithoutAlert(title: String, message: String)</li>
</ul>
</div>
@@ -168,9 +173,9 @@
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC12debugEnabledSbv"></a>
<a name="/s:5SirenAAC12debugEnabledSbvp"></a>
<a name="//apple_ref/swift/Property/debugEnabled" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC12debugEnabledSbv">debugEnabled</a>
<a class="token" href="#/s:5SirenAAC12debugEnabledSbvp">debugEnabled</a>
</code>
</div>
<div class="height-container">
@@ -186,7 +191,7 @@ When enabled, a stream of print() statements are logged to your console when a v
<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">debugEnabled</span> <span class="o">=</span> <span class="kc">false</span></code></pre>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">debugEnabled</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>
@@ -196,9 +201,9 @@ When enabled, a stream of print() statements are logged to your console when a v
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC9alertTypeAB05AlertC0Ov"></a>
<a name="/s:5SirenAAC9alertTypeAB05AlertC0Ovp"></a>
<a name="//apple_ref/swift/Property/alertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC9alertTypeAB05AlertC0Ov">alertType</a>
<a class="token" href="#/s:5SirenAAC9alertTypeAB05AlertC0Ovp">alertType</a>
</code>
</div>
<div class="height-container">
@@ -214,7 +219,7 @@ See the Siren.AlertType enum for full details.</p>
<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">alertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">alertType</span><span class="p">:</span> <span class="kt">Siren</span><span class="o">.</span><span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
</div>
</div>
@@ -224,9 +229,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ov"></a>
<a name="/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/majorUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ov">majorUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ovp">majorUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -243,7 +248,7 @@ See the Siren.AlertType enum for full details.</p>
<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">majorUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">majorUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
</div>
</div>
@@ -253,9 +258,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ov"></a>
<a name="/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/minorUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ov">minorUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ovp">minorUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -272,7 +277,7 @@ See the Siren.AlertType enum for full details.</p>
<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">minorUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">minorUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
</div>
</div>
@@ -282,9 +287,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ov"></a>
<a name="/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/patchUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ov">patchUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ovp">patchUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -301,7 +306,7 @@ See the Siren.AlertType enum for full details.</p>
<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">patchUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">patchUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
</div>
</div>
@@ -311,9 +316,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ov"></a>
<a name="/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/revisionUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ov">revisionUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ovp">revisionUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -330,7 +335,7 @@ See the Siren.AlertType enum for full details.</p>
<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">revisionUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">option</span></code></pre>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">revisionUpdateAlertType</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
</div>
</div>
@@ -340,9 +345,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC7appNameSSv"></a>
<a name="/s:5SirenAAC7appNameSSvp"></a>
<a name="//apple_ref/swift/Property/appName" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC7appNameSSv">appName</a>
<a class="token" href="#/s:5SirenAAC7appNameSSvp">appName</a>
</code>
</div>
<div class="height-container">
@@ -358,7 +363,7 @@ By default, it&rsquo;s set to the name of the app that&rsquo;s stored in your pl
<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">appName</span> <span class="o">=</span> <span class="kt">Bundle</span><span class="o">.</span><span class="nf">bestMatchingAppName</span><span class="p">()</span></code></pre>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">appName</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
</div>
</div>
@@ -368,9 +373,9 @@ By default, it&rsquo;s set to the name of the app that&rsquo;s stored in your pl
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC14alertMessagingAA0a5AlertC0Vv"></a>
<a name="/s:5SirenAAC14alertMessagingAA0a5AlertC0Vvp"></a>
<a name="//apple_ref/swift/Property/alertMessaging" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC14alertMessagingAA0a5AlertC0Vv">alertMessaging</a>
<a class="token" href="#/s:5SirenAAC14alertMessagingAA0a5AlertC0Vvp">alertMessaging</a>
</code>
</div>
<div class="height-container">
@@ -386,7 +391,7 @@ Defaults to the values defined in <code><a href="../Structs/SirenAlertMessaging/
<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">alertMessaging</span> <span class="o">=</span> <span class="kt"><a href="../Structs/SirenAlertMessaging.html">SirenAlertMessaging</a></span><span class="p">()</span></code></pre>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">alertMessaging</span><span class="p">:</span> <span class="kt"><a href="../Structs/SirenAlertMessaging.html">SirenAlertMessaging</a></span></code></pre>
</div>
</div>
@@ -396,9 +401,9 @@ Defaults to the values defined in <code><a href="../Structs/SirenAlertMessaging/
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC11countryCodeSSSgv"></a>
<a name="/s:5SirenAAC11countryCodeSSSgvp"></a>
<a name="//apple_ref/swift/Property/countryCode" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC11countryCodeSSSgv">countryCode</a>
<a class="token" href="#/s:5SirenAAC11countryCodeSSSgvp">countryCode</a>
</code>
</div>
<div class="height-container">
@@ -425,9 +430,9 @@ If your app is not available in the US App Store, set it to the identifier of at
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgv"></a>
<a name="/s:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgvp"></a>
<a name="//apple_ref/swift/Property/forceLanguageLocalization" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgv">forceLanguageLocalization</a>
<a class="token" href="#/s:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgvp">forceLanguageLocalization</a>
</code>
</div>
<div class="height-container">
@@ -453,9 +458,9 @@ See the Siren.LanguageType enum for more details.</p>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgv"></a>
<a name="/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgvp"></a>
<a name="//apple_ref/swift/Property/alertControllerTintColor" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgv">alertControllerTintColor</a>
<a class="token" href="#/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgvp">alertControllerTintColor</a>
</code>
</div>
<div class="height-container">
@@ -480,9 +485,9 @@ See the Siren.LanguageType enum for more details.</p>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSiv"></a>
<a name="/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSivp"></a>
<a name="//apple_ref/swift/Property/showAlertAfterCurrentVersionHasBeenReleasedForDays" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSiv">showAlertAfterCurrentVersionHasBeenReleasedForDays</a>
<a class="token" href="#/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSivp">showAlertAfterCurrentVersionHasBeenReleasedForDays</a>
</code>
</div>
<div class="height-container">
@@ -490,7 +495,7 @@ See the Siren.LanguageType enum for more details.</p>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>When this is set, the alert will only show up if the current version has already been released for X days
<p>When this is set, the alert will only show up if the current version has already been released for X days.
Defaults to 1 day to avoid an issue where Apple updates the JSON faster than the app binary propogates to the App Store.</p>
</div>
@@ -498,7 +503,7 @@ Defaults to 1 day to avoid an issue where Apple updates the JSON faster than the
<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">showAlertAfterCurrentVersionHasBeenReleasedForDays</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="mi">1</span></code></pre>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">showAlertAfterCurrentVersionHasBeenReleasedForDays</span><span class="p">:</span> <span class="kt">Int</span></code></pre>
</div>
</div>
@@ -508,9 +513,9 @@ Defaults to 1 day to avoid an issue where Apple updates the JSON faster than the
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC22currentAppStoreVersionSSSgv"></a>
<a name="/s:5SirenAAC22currentAppStoreVersionSSSgvp"></a>
<a name="//apple_ref/swift/Property/currentAppStoreVersion" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC22currentAppStoreVersionSSSgv">currentAppStoreVersion</a>
<a class="token" href="#/s:5SirenAAC22currentAppStoreVersionSSSgvp">currentAppStoreVersion</a>
</code>
</div>
<div class="height-container">
@@ -535,9 +540,9 @@ Defaults to 1 day to avoid an issue where Apple updates the JSON faster than the
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC6sharedABvZ"></a>
<a name="/s:5SirenAAC6sharedABvpZ"></a>
<a name="//apple_ref/swift/Variable/shared" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC6sharedABvZ">shared</a>
<a class="token" href="#/s:5SirenAAC6sharedABvpZ">shared</a>
</code>
</div>
<div class="height-container">
@@ -552,7 +557,7 @@ Defaults to 1 day to avoid an issue where Apple updates the JSON faster than the
<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="o">=</span> <span class="kt">Siren</span><span class="p">()</span></code></pre>
<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>
@@ -574,7 +579,7 @@ Defaults to 1 day to avoid an issue where Apple updates the JSON faster than the
<div class="abstract">
<p>Checks the currently installed version of your app against the App Store.
The default check is against the US App Store, but if your app is not listed in the US,
you should set the <code><a href="../Classes/Siren.html#/s:5SirenAAC11countryCodeSSSgv">countryCode</a></code> property before calling this method. Please refer to the countryCode property for more information.</p>
you should set the <code><a href="../Classes/Siren.html#/s:5SirenAAC11countryCodeSSSgvp">countryCode</a></code> property before calling this method. Please refer to the countryCode property for more information.</p>
</div>
<div class="declaration">
@@ -642,6 +647,13 @@ you should set the <code><a href="../Classes/Siren.html#/s:5SirenAAC11countryCod
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Enumerated%20Types%20(Public)"></a>
<a name="//apple_ref/swift/Section/Enumerated Types (Public)" class="dashAnchor"></a>
<a href="#/Enumerated%20Types%20(Public)">
<h3 class="section-name">Enumerated Types (Public)</h3>
</a>
</div>
<ul>
<li class="item">
<div>
@@ -692,7 +704,7 @@ you should set the <code><a href="../Classes/Siren.html#/s:5SirenAAC11countryCod
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<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>
<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>
@@ -723,7 +735,7 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">enum</span> <span class="kt">LanguageType</span><span class="p">:</span> <span class="kt">String</span></code></pre>
<pre class="highlight swift"><code><span class="kd">enum</span> <span class="kt">LanguageType</span> <span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
@@ -735,8 +747,8 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</section>
<section id="footer">
<p>© 2015-2017 <a class="link" href="http://www.sabintsev.com" target="_blank" rel="external">Arthur Ariel Sabintsev</a></p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 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-07-25)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
+9 -16
View File
@@ -14,8 +14,7 @@
<a title="AlertType Enumeration Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../../index.html">Siren Docs</a> (42% documented)</p>
<p class="header-right"><a href="https://github.com/artsabintsev/siren"><img src="../../img/gh.png"/>View on GitHub</a></p>
<p><a href="../../index.html">Siren Docs</a> (52% documented)</p>
</div>
</header>
<div class="content-wrapper">
@@ -76,6 +75,12 @@
<li class="nav-group-task">
<a href="../../Structs/SirenError/Known.html"> Known</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenLookupModel.html">SirenLookupModel</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenLookupModel/Results.html"> Results</a>
</li>
</ul>
</li>
</ul>
@@ -123,10 +128,6 @@
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -154,10 +155,6 @@
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -185,10 +182,6 @@
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -222,8 +215,8 @@ for use in a custom UI within the sirenDidDetectNewVersionWithoutAlert() delegat
</section>
</section>
<section id="footer">
<p>© 2015-2017 <a class="link" href="http://www.sabintsev.com" target="_blank" rel="external">Arthur Ariel Sabintsev</a></p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 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-07-25)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
+10 -169
View File
@@ -14,8 +14,7 @@
<a title="LanguageType Enumeration Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../../index.html">Siren Docs</a> (42% documented)</p>
<p class="header-right"><a href="https://github.com/artsabintsev/siren"><img src="../../img/gh.png"/>View on GitHub</a></p>
<p><a href="../../index.html">Siren Docs</a> (52% documented)</p>
</div>
</header>
<div class="content-wrapper">
@@ -76,6 +75,12 @@
<li class="nav-group-task">
<a href="../../Structs/SirenError/Known.html"> Known</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenLookupModel.html">SirenLookupModel</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenLookupModel/Results.html"> Results</a>
</li>
</ul>
</li>
</ul>
@@ -86,7 +91,7 @@
<h1>LanguageType</h1>
<div class="declaration">
<div class="language">
<pre class="highlight swift"><code><span class="kd">enum</span> <span class="kt">LanguageType</span><span class="p">:</span> <span class="kt">String</span></code></pre>
<pre class="highlight swift"><code><span class="kd">enum</span> <span class="kt">LanguageType</span> <span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
@@ -126,10 +131,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -157,10 +158,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -188,10 +185,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -219,10 +212,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -250,10 +239,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -281,10 +266,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -312,10 +293,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -343,10 +320,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -374,10 +347,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -405,10 +374,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -436,10 +401,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -467,10 +428,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -498,10 +455,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -529,10 +482,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -560,10 +509,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -591,10 +536,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -622,10 +563,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -653,10 +590,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -684,10 +617,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -715,10 +644,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -746,10 +671,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -777,10 +698,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -808,10 +725,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -839,10 +752,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -870,10 +779,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -901,10 +806,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -932,10 +833,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -963,10 +860,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -994,10 +887,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1025,10 +914,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1056,10 +941,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1087,10 +968,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1118,10 +995,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1149,10 +1022,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1180,10 +1049,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1211,10 +1076,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1242,10 +1103,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1273,10 +1130,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1304,10 +1157,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1335,10 +1184,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1366,10 +1211,6 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -1402,8 +1243,8 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
</section>
</section>
<section id="footer">
<p>© 2015-2017 <a class="link" href="http://www.sabintsev.com" target="_blank" rel="external">Arthur Ariel Sabintsev</a></p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 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-07-25)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
+10 -13
View File
@@ -14,8 +14,7 @@
<a title="VersionCheckType Enumeration Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../../index.html">Siren Docs</a> (42% documented)</p>
<p class="header-right"><a href="https://github.com/artsabintsev/siren"><img src="../../img/gh.png"/>View on GitHub</a></p>
<p><a href="../../index.html">Siren Docs</a> (52% documented)</p>
</div>
</header>
<div class="content-wrapper">
@@ -76,6 +75,12 @@
<li class="nav-group-task">
<a href="../../Structs/SirenError/Known.html"> Known</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenLookupModel.html">SirenLookupModel</a>
</li>
<li class="nav-group-task">
<a href="../../Structs/SirenLookupModel/Results.html"> Results</a>
</li>
</ul>
</li>
</ul>
@@ -86,7 +91,7 @@
<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>
<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>
@@ -123,10 +128,6 @@
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -154,10 +155,6 @@
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
@@ -190,8 +187,8 @@
</section>
</section>
<section id="footer">
<p>© 2015-2017 <a class="link" href="http://www.sabintsev.com" target="_blank" rel="external">Arthur Ariel Sabintsev</a></p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 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-07-25)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
+13 -7
View File
@@ -10,11 +10,11 @@
</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> (42% documented)</p>
<p class="header-right"><a href="https://github.com/artsabintsev/siren"><img src="img/gh.png"/>View on GitHub</a></p>
<p><a href="index.html">Siren Docs</a> (52% documented)</p>
</div>
</header>
<div class="content-wrapper">
@@ -75,6 +75,12 @@
<li class="nav-group-task">
<a href="Structs/SirenError/Known.html"> Known</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenLookupModel.html">SirenLookupModel</a>
</li>
<li class="nav-group-task">
<a href="Structs/SirenLookupModel/Results.html"> Results</a>
</li>
</ul>
</li>
</ul>
@@ -103,7 +109,7 @@
<div class="pointer"></div>
<div class="abstract">
<p>MARK - Siren UpdateType
<code>UpdateType</code> defines what kind of update is available
<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>
@@ -112,7 +118,7 @@ custom alert to inform the user about an update.</p>
<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>
<li>unknown: No information available about the update.</li>
</ul>
<a href="Enums/UpdateType.html" class="slightly-smaller">See more</a>
@@ -121,7 +127,7 @@ custom alert to inform the user about an update.</p>
<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">UpdateType</span><span class="p">:</span> <span class="kt">String</span></code></pre>
<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>
@@ -133,8 +139,8 @@ custom alert to inform the user about an update.</p>
</section>
</section>
<section id="footer">
<p>© 2015-2017 <a class="link" href="http://www.sabintsev.com" target="_blank" rel="external">Arthur Ariel Sabintsev</a></p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.1</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 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-07-25)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>

Some files were not shown because too many files have changed in this diff Show More