Compare commits

...

93 Commits

Author SHA1 Message Date
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
Arthur Ariel Sabintsev edb8906b4d Updated metadata 2018-03-11 22:13:24 -04:00
Txai Wieser b7fb413814 Changed pt-BR text to be less agressive. (#201) 2018-03-11 22:09:52 -04:00
Arthur Ariel Sabintsev 0246ee905a Updated docs 2018-03-10 19:51:58 -05:00
Balázs Vincze 853eed62c4 Check if the return data contains any results (#200) 2018-03-10 19:33:21 -05:00
Arthur Ariel Sabintsev 4725475cfc Update README.md 2018-02-23 09:08:52 -05:00
Arthur Ariel Sabintsev 1d03dc16e1 Updated README 2018-02-21 18:57:17 -05:00
Arthur Ariel Sabintsev 1d3be00440 Updated docs. Closes #198. 2018-02-21 18:56:17 -05:00
Arthur Ariel Sabintsev 42c5ab103d Updated README and podspec 2017-12-08 11:09:23 -05:00
Arthur Ariel Sabintsev a82d13d1a2 Override Siren's Default Copy/Messaging in UIAlertController/UIAlertActionSheet (#187)
* Added SirenAlertMessaging struct to allow for custom overriding of messaging in UIAlertController update modal

* Spacing fix

* Comment updates

* alertMessaging is now long lazy

* Updated Sample message

* Commented sample message

* Updates Keys to Constants
2017-12-08 09:06:08 -07:00
Arthur Ariel Sabintsev 77cda5f933 Updated bundle id 2017-12-07 01:56:49 -05:00
Arthur Ariel Sabintsev a5bd175373 Closes #183. Fixes Country Code App Store URL in comments within AppDelegate. 2017-11-27 10:45:17 -05:00
Arthur Ariel Sabintsev a95766201b Updated Dutch localization 2017-11-21 23:35:30 -05:00
Attia Mo 6a7901f443 Fix Arabic localization. (#182)
* Fix Arabic localization.

* update Arabic localization Tests
2017-11-21 23:28:09 -05:00
Aaron Brager 97b23f2804 Update README with phased rollout options (#181) 2017-11-17 16:54:37 -05:00
Arthur Ariel Sabintsev e475b18892 Updated Contributors docs 2017-11-09 16:07:05 -05:00
Arthur Ariel Sabintsev c41f146a2d Update podspec 2017-11-09 16:05:42 -05:00
NSemakov 12ec30958c Add import UIKit for compilation as static framework. (#179) 2017-11-09 16:04:59 -05:00
Arthur Ariel Sabintsev cdb05f36a1 Update README.md 2017-10-23 21:58:17 -04:00
Arthur Ariel Sabintsev 8a85468354 Updated metadata 2017-10-21 10:37:54 -04:00
Vladislav Jevremović 54e91577a7 'characters' is deprecated in Swift 4 (#176) 2017-10-21 10:36:03 -04:00
Arthur Ariel Sabintsev 171250c580 Updated podspec and Contributors.md file 2017-10-19 23:57:29 -04:00
Dmytro Cheverda 1b07f76f59 Add Ukrainian localization (#175)
* Add Ukrainian localization

* Update tests to cover Ukrainian localization
2017-10-19 23:56:38 -04:00
Arthur Ariel Sabintsev b7819acbd5 Fixed transitive dependency issue by increasing scope from private to fileprivate on a couple variables and functions 2017-10-19 16:14:04 -04:00
Arthur Ariel Sabintsev 2c10d82f7f Updated Podspec 2017-10-15 22:49:05 -04:00
Arthur Ariel Sabintsev d7514471ba SirenError is now Public. Closes #174. 2017-10-15 22:48:47 -04:00
Arthur Ariel Sabintsev b918235b4e Updated podspec 2017-10-12 22:32:44 -04:00
Arthur Ariel Sabintsev 6d1e626036 Re-enabled isUpdateCompatibleWithDeviceOS 2017-10-12 22:19:25 -04:00
Arthur Ariel Sabintsev e235f46b3b Updated podspec 2017-10-11 19:48:02 -04:00
Arthur Ariel Sabintsev 17f9952d8b Updated docs 2017-10-11 19:47:20 -04:00
Arthur Ariel Sabintsev 5abf8ede8d Updated UpdateType and SirenDelegate 2017-10-11 19:45:56 -04:00
Jussi Suojanen 8caddf0f8c Add update type information to custom alert delegate function (#171) 2017-10-11 19:34:16 -04:00
Arthur Ariel Sabintsev f6219ccb90 Merge branch 'master' of https://github.com/ArtSabintsev/Siren 2017-09-13 22:15:13 -04:00
Arthur Ariel Sabintsev 21e5f579e2 Updated Docs 2017-09-13 22:15:09 -04:00
Arthur Ariel Sabintsev 7c7791c17a Update README.md 2017-09-13 20:50:01 -04:00
Arthur Ariel Sabintsev b03b7d12bf Updated metadata 2017-09-13 13:52:52 -04:00
Jason Ash 01e439d523 Resolve accessibility issues (#162)
A few variables and one function had private access and errors were thrown stating they were inaccessible, changed to fileprivate to resolve this issue.
2017-09-13 13:50:48 -04:00
Arthur Ariel Sabintsev 1701df1c72 Update README.md 2017-09-13 08:25:46 -04:00
Arthur Ariel Sabintsev 6d5070cdb4 Updated README 2017-09-13 08:20:19 -04:00
Arthur Ariel Sabintsev 9460160937 README updates 2017-09-13 08:17:53 -04:00
Arthur Ariel Sabintsev afeadfddfa README updates 2017-09-13 08:06:25 -04:00
Arthur Ariel Sabintsev d234e8c472 Swift 4 and Xcode 9 Support (#147)
* Converted to Swift 4 using Xcode 9b1.

* Updated README with Swift 4.0 support

* Swiftier syntax for certain localization methods

* More documentation

* Implemented Swift 4 Access Control rules

* Fixed Urdu Test

* Fixed some project settings. Replaced most JSON parsing with SirenLookupModel, which conforms to codable

* Adds Siren Error. Augments Siren, SirenDelegate. Fixes double alert issue.

* Some docs changes

* Updated docs

* Simplified model

* Removed docs to fix merge conflicts. Will remake after merge

* Fixes for Xcode9b5

* Jazzy docs dump to fix CI

* Tightening up Siren.swift after Xcode 9b5 changes

* Fixed signature for sirenDidFailVersionCheck to take an Error vs NSError

* Updated README

* Minor project level changes

* Updated .swift-version and podspec
2017-09-13 08:04:48 -04:00
Arthur Ariel Sabintsev ca33c8f2c8 Updated README 2017-09-11 20:45:14 -04:00
Arthur Ariel Sabintsev 51eb58d236 Update Gemfile.lock 2017-08-27 15:02:33 -04:00
Arthur Ariel Sabintsev a8311bd6b9 Updated podspec and contributors file 2017-08-27 11:45:39 -04:00
Ryoh Tsukahara f8aa3f5534 WIP: Update ja localization (#159)
* Updated Japanese Localization

* Updated test for Japanese localization
2017-08-27 11:43:16 -04:00
Arthur Ariel Sabintsev eba3e056c2 Updated README and AppDelegate in example app 2017-08-07 19:50:56 -04:00
Arthur Ariel Sabintsev 321ba43a15 Updated docs 2017-08-06 07:07:57 -04:00
Arthur Ariel Sabintsev 0b9bae5cbb Updated podspec to 2.0.7 2017-08-05 13:45:25 -04:00
Arthur Ariel Sabintsev c6b3ece14e Updated podspec to 2.0.7 2017-08-05 13:43:41 -04:00
Arthur Ariel Sabintsev 6203ff3e17 Added SirenLog. Removed assertionFailures on default implementations … (#157)
* Added SirenLog. Removed assertionFailures on default implementations of methods defined by SirenDelegate.

* Exposes launchAppStore
2017-08-05 13:43:06 -04:00
Arthur Ariel Sabintsev f9f9b82668 Updated podspec 2017-07-30 21:49:25 -04:00
Arthur Ariel Sabintsev 59e4b9e113 Update README.md 2017-07-10 11:56:27 -04:00
Arthur Ariel Sabintsev a5a1797cce Changed comment in sample project 2017-07-10 11:48:13 -04:00
Arthur Ariel Sabintsev 9eeb265614 Moved CODEOWNERS 2017-07-07 22:41:05 -04:00
Arthur Ariel Sabintsev 31c0109adb Create CODEOWNERS 2017-07-07 22:39:06 -04:00
Arthur Ariel Sabintsev df3a8fd14f Updated CONTRIBUTORS.md 2017-06-19 14:11:33 -04:00
Arthur Ariel Sabintsev c51fcc851b Added Contributors.md 2017-06-19 14:07:47 -04:00
Arthur Ariel Sabintsev add692995a Updated Metadata files after PR merge 2017-06-19 14:03:47 -04:00
Ryoh Tsukahara 379d4b3d82 Set "en_US_POSIX" as the locale of the date formatter (#150) 2017-06-19 13:57:59 -04:00
Arthur Ariel Sabintsev c402feabf1 Update README.md 2017-06-18 23:05:39 -04:00
Arthur Ariel Sabintsev 1d563f89bf Updated docs 2017-06-15 23:54:42 -04:00
Arthur Ariel Sabintsev 3a4d7dd841 Added Urdu Localization and tests 2017-06-15 23:53:23 -04:00
Arthur Ariel Sabintsev 543a3cc1cb Updated README 2017-06-06 22:32:11 -04:00
Arthur Ariel Sabintsev f44a3ba879 Update README.md 2017-06-05 22:57:39 -04:00
Arthur Ariel Sabintsev 54b1042b5c Updated README with Swift 4.0 support 2017-06-05 22:57:12 -04:00
Arthur Ariel Sabintsev a904ca08df Updated README 2017-06-05 22:39:04 -04:00
Arthur Ariel Sabintsev 6101b30b3e Updated Podspec, Gemfile, Readme, and Contributors 2017-06-04 14:59:05 -04:00
Seyed Mojtaba Hosseini Zeidabadi 208f0ade0a Persian localization added. (#144)
Persian localization tests added.
2017-06-04 14:53:59 -04:00
Arthur Ariel Sabintsev e285ded587 Updated Gemfile 2017-05-29 14:51:37 -04:00
Arthur Ariel Sabintsev f2dc07757c Update CONTRIBUTORS.md 2017-05-29 14:43:21 -04:00
Arthur Ariel Sabintsev 6d7613fa3e Added tests for Czech localization. Updated README and Podspec 2017-05-29 14:42:31 -04:00
premyslvlcek 2352276947 Czech language support added (#143)
Czech translation
2017-05-29 14:38:26 -04:00
Arthur Ariel Sabintsev 28b789f28f Update README.md 2017-05-26 01:57:32 -04:00
Arthur Ariel Sabintsev d14e0ad046 Updated Contributors.md 2017-04-26 10:43:33 -04:00
93 changed files with 5744 additions and 2747 deletions
+1
View File
@@ -0,0 +1 @@
* @artsabintsev
+5 -1
View File
@@ -2,6 +2,10 @@ 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)"
copyright: "© [Arthur Ariel Sabintsev](http://www.sabintsev.com)"
theme: apple
output: docs
documentation: docs/*.md
clean: true
podspec: Siren.podspec
sdk: iphonesimulator
+1
View File
@@ -0,0 +1 @@
ruby-2.4.1
-1
View File
@@ -1 +0,0 @@
3.0
+1
View File
@@ -5,6 +5,7 @@ included:
disabled_rules:
- cyclomatic_complexity
- nesting
- unused_optional_binding
- variable_name
+13
View File
@@ -0,0 +1,13 @@
language: objective-c
osx_image: xcode9.3
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 SirenExample/SirenExample.xcodeproj -scheme SirenExample -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO | xcpretty -c
+20 -3
View File
@@ -31,9 +31,26 @@
- [Vladislav Jevremović](https://github.com/VladislavJevremovic) for [Pull Request #98](https://github.com/ArtSabintsev/Siren/pull/98)
- [Stefan Kieleithner](https://github.com/steviki) for [Pull Request #99](https://github.com/ArtSabintsev/Siren/pull/99)
- [Konstantinos N.](https://github.com/kwstasna) for [Pull Request #101](https://github.com/ArtSabintsev/Siren/pull/101)
- [Christoph Mantler](https://github.com/ChrisixFlash) for [Pull Request #103](https://github.com/ArtSabintsev/Siren/pull/103)
- [Christoph Mantler](https://github.com/ChrisixFlash) for [Pull Request #106](https://github.com/ArtSabintsev/Siren/pull/106)
- [Pietro D'Alessandro](https://github.com/xedla) for [Pull Request #107](https://github.com/ArtSabintsev/Siren/pull/107)
- [Christoph Mantler](https://github.com/ChrisixFlash) for [Pull Request #103](https://github.com/ArtSabintsev/Siren/pull/103) and [Pull Request #106](https://github.com/ArtSabintsev/Siren/pull/106)
- [xedla](https://github.com/xedla) for [Pull Request #107](https://github.com/ArtSabintsev/Siren/pull/107)
- [Daniel Hu](https://github.com/zongmumask) for [Pull Request #116](https://github.com/ArtSabintsev/Siren/pull/116)
- [Jakob Krigovsky](https://github.com/sonicdoe) for [Pull Request #118](https://github.com/ArtSabintsev/Siren/pull/118)
- [germ4n](https://github.com/glm4) for [Pull Request #122](https://github.com/ArtSabintsev/Siren/pull/122)
- [Txai Wieser](https://github.com/txaiwieser) for [Pull Request #139](https://github.com/ArtSabintsev/Siren/pull/139) and [Pull Request #140](https://github.com/ArtSabintsev/Siren/pull/140)
- [premyslvlcek](https://github.com/premyslvlcek) for [Pull Request #143](https://github.com/ArtSabintsev/Siren/pull/143)
- [Seyed Mojtaba Hosseini Zeidabadi](https://github.com/MojtabaHs) for [Pull Request #144](https://github.com/ArtSabintsev/Siren/pull/143)
- [Chanchal Raj](https://github.com/RajChanchal) for [Pull Request #171 (Harpy)](https://github.com/ArtSabintsev/harpy/pull/171)
- [Ryoh Tsukahara](https://github.com/nixnoughtnothing) for [Pull Request #150](https://github.com/ArtSabintsev/Siren/pull/150) and [Pull Request #159](https://github.com/ArtSabintsev/Siren/pull/159)
- [Jason Wade](https://github.com/iJasonWade) for [Pull Request #162](https://github.com/ArtSabintsev/Siren/pull/162)
- [JussiSuojanen](https://github.com/JussiSuojanen) for [Pull Request #171](https://github.com/ArtSabintsev/Siren/pull/171)
- [Dmytro Cheverda](https://github.com/dimacheverda) for [Pull Request #175](https://github.com/ArtSabintsev/Siren/pull/175)
- [Vladislav Jevremovic](https://github.com/VladislavJevremovic) for [Pull Request #176](https://github.com/ArtSabintsev/Siren/pull/176)
- [NSemakov](https://github.com/NSemakov) for [Pull Request #179](https://github.com/ArtSabintsev/Siren/pull/179)
- [Attia Mo](https://github.com/attiamo) for [Pull Request #182](https://github.com/ArtSabintsev/Siren/pull/182)
- [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)
### 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.
+1 -1
View File
@@ -1,5 +1,5 @@
# A sample Gemfile
source "https://rubygems.org"
gem "cocoapods", "1.2.0"
gem "cocoapods"
gem "jazzy"
+49 -38
View File
@@ -1,92 +1,103 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (2.3.5)
activesupport (4.2.8)
CFPropertyList (3.0.0)
activesupport (4.2.10)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
claide (1.0.1)
cocoapods (1.2.0)
atomos (0.1.2)
claide (1.0.2)
cocoapods (1.5.0)
activesupport (>= 4.0.2, < 5)
claide (>= 1.0.1, < 2.0)
cocoapods-core (= 1.2.0)
cocoapods-deintegrate (>= 1.0.1, < 2.0)
cocoapods-downloader (>= 1.1.3, < 2.0)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.5.0)
cocoapods-deintegrate (>= 1.0.2, < 2.0)
cocoapods-downloader (>= 1.2.0, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-stats (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.1.2, < 2.0)
cocoapods-trunk (>= 1.3.0, < 2.0)
cocoapods-try (>= 1.1.0, < 2.0)
colored (~> 1.2)
colored2 (~> 3.1)
escape (~> 0.0.4)
fourflusher (~> 2.0.1)
gh_inspector (~> 1.0)
molinillo (~> 0.5.5)
molinillo (~> 0.6.5)
nap (~> 1.0)
ruby-macho (~> 0.2.5)
xcodeproj (>= 1.4.1, < 2.0)
cocoapods-core (1.2.0)
activesupport (>= 4.0.2, < 5)
ruby-macho (~> 1.1)
xcodeproj (>= 1.5.7, < 2.0)
cocoapods-core (1.5.0)
activesupport (>= 4.0.2, < 6)
fuzzy_match (~> 2.0.4)
nap (~> 1.0)
cocoapods-deintegrate (1.0.1)
cocoapods-downloader (1.1.3)
cocoapods-deintegrate (1.0.2)
cocoapods-downloader (1.2.0)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.0)
cocoapods-stats (1.0.0)
cocoapods-trunk (1.1.2)
cocoapods-trunk (1.3.0)
nap (>= 0.8, < 2.0)
netrc (= 0.7.8)
netrc (~> 0.11)
cocoapods-try (1.1.0)
colored (1.2)
colored2 (3.1.2)
concurrent-ruby (1.0.5)
escape (0.0.4)
ffi (1.9.23)
fourflusher (2.0.1)
fuzzy_match (2.0.4)
gh_inspector (1.0.3)
i18n (0.8.1)
jazzy (0.7.5)
gh_inspector (1.1.3)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jazzy (0.9.2)
cocoapods (~> 1.0)
mustache (~> 0.99)
open4
redcarpet (~> 3.2)
rouge (~> 1.5)
rouge (>= 2.0.6, < 4.0)
sass (~> 3.4)
sqlite3 (~> 1.3)
xcinvoke (~> 0.3.0)
liferaft (0.0.6)
minitest (5.10.1)
molinillo (0.5.7)
minitest (5.11.3)
molinillo (0.6.5)
mustache (0.99.8)
nanaimo (0.2.3)
nanaimo (0.2.5)
nap (1.1.0)
netrc (0.7.8)
netrc (0.11.0)
open4 (1.3.4)
rb-fsevent (0.10.3)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
redcarpet (3.4.0)
rouge (1.11.1)
ruby-macho (0.2.6)
sass (3.4.23)
rouge (3.1.1)
ruby-macho (1.1.0)
sass (3.5.6)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sqlite3 (1.3.13)
thread_safe (0.3.6)
tzinfo (1.2.3)
tzinfo (1.2.5)
thread_safe (~> 0.1)
xcinvoke (0.3.0)
liferaft (~> 0.0.6)
xcodeproj (1.4.4)
CFPropertyList (~> 2.3.3)
claide (>= 1.0.1, < 2.0)
xcodeproj (1.5.7)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.2)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.2.3)
nanaimo (~> 0.2.4)
PLATFORMS
ruby
DEPENDENCIES
cocoapods (= 1.2.0)
cocoapods
jazzy
BUNDLED WITH
1.14.6
1.16.1
+82 -23
View File
@@ -2,7 +2,11 @@
### Notify users when a new version of your app is available and prompt them to upgrade.
[![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)
![Travis CI Status](https://travis-ci.org/ArtSabintsev/Siren.svg?branch=master)
![Swift Support](https://img.shields.io/badge/Swift-2.3%2C%203.1%2C%203.2%2C%204.1-orange.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/) [![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
@@ -17,6 +21,7 @@
- [Device Compatibility](https://github.com/ArtSabintsev/Siren#device-compatibility)
- [Testing Siren](https://github.com/ArtSabintsev/Siren#testing-siren)
- [App Store Review & Submissions](https://github.com/ArtSabintsev/Siren#app-store-submissions)
- [Phrased Releases](https://github.com/ArtSabintsev/Siren#phased-releases)
- [Words of Caution](https://github.com/ArtSabintsev/Siren#words-of-caution)
- [Ports](https://github.com/ArtSabintsev/Siren#ports)
- [Attribution](https://github.com/ArtSabintsev/Siren#created-and-maintained-by)
@@ -40,9 +45,9 @@ If a new version is available, an alert can be presented to the user informing t
- [x] Carthage Support
- [x] Swift Package Manager Support
- [x] Localized for 30+ languages (see [Localization](https://github.com/ArtSabintsev/Siren#localization))
- [x] Pre-Update Device Compatibility Check (see [Device Compatibility](https://github.com/ArtSabintsev/Siren#device-compatibility)
- [x] Pre-Update Device Compatibility Check (see [Device Compatibility](https://github.com/ArtSabintsev/Siren#device-compatibility))
- [x] Three types of alerts (see [Screenshots](https://github.com/ArtSabintsev/Siren#screenshots))
- [x] Optional delegate methods (see [Delegates (Optional)](https://github.com/ArtSabintsev/Siren#optional-delegate-and-delegate-methods)
- [x] Optional delegate methods (see [Delegates (Optional)](https://github.com/ArtSabintsev/Siren#optional-delegate-and-delegate-methods))
- [x] Unit Tests
- [x] Documentation can be found at http://sabintsev.com/Siren.
@@ -57,38 +62,61 @@ If a new version is available, an alert can be presented to the user informing t
## Installation Instructions
| Swift Version | Branch Name | Will Continue to Receive Updates?
| ------------- | ------------- | -------------
| 4.1 | master | **Yes**
| 3.2 | swift3.2 | No
| 3.1 | swift3.1 | No
| 2.3 | swift2.3 | No
### CocoaPods
For Swift 3 support:
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'
```
For Swift 2.2 support:
```ruby
pod 'Siren', '0.9.5'
### Carthage
For Swift 4 support:
```swift
github "ArtSabintsev/Siren"
```
### Carthage
For Swift 3 support:
For Swift 3.2 support:
``` swift
github "ArtSabintsev/Siren"
```swift
github "ArtSabintsev/Siren", "swift3.2"
```
For Swift 3.1 support:
```swift
github "ArtSabintsev/Siren", "swift3.1"
```
For Swift 2.3 support:
``` swift
github "ArtSabintsev/Siren" "swift2.3"
```ruby
github "ArtSabintsev/Siren", "swift2.3"
```
### Swift Package Manager
```swift
.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 2)
.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 3)
```
## Example Code
@@ -107,12 +135,20 @@ func application(application: UIApplication, didFinishLaunchingWithOptions launc
// 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: 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
@@ -155,7 +191,7 @@ 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) {
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType) {
print("\(message)")
}
}
@@ -179,12 +215,23 @@ Six delegate methods allow you to handle or track the user's behavior. Each meth
``` swift
public protocol SirenDelegate: class {
func sirenDidShowUpdateDialog(alertType: Siren.AlertType) // User presented with update dialog
func sirenUserDidLaunchAppStore() // User did click on button that launched App Store.app
func sirenUserDidSkipVersion() // User did click on button that skips version update
func sirenUserDidCancel() // User did click on button that cancels update dialog
func sirenDidFailVersionCheck(error: NSError) // Siren failed to perform version check (may return system-level error)
func sirenDidDetectNewVersionWithoutAlert(message: String) // Siren performed version check and did not display alert
// User presented with update dialog
func sirenDidShowUpdateDialog(alertType: Siren.AlertType)
// User did click on button that launched App Store.app
func sirenUserDidLaunchAppStore()
// User did click on button that skips version update
func sirenUserDidSkipVersion()
// 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 version check and did not display alert
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType)
}
```
@@ -194,6 +241,8 @@ Siren is localized for
- Armenian
- Basque
- Chinese (Simplified and Traditional)
- Croatian
- Czech
- Danish
- Dutch
- English
@@ -212,15 +261,18 @@ Siren is localized for
- Lithuanian
- Malay
- Norwegian (Bokmål)
- Persian (Afghanistan, Iran, Persian)
- Polish
- Portuguese (Brazil and Portugal)
- Russian
- Serbian (Cyrillic and Latin)
- Slovenian
- Swedish
- Spanish
- Swedish
- Thai
- Turkish
- Ukrainian
- Urdu
- Vietnamese
You may want the update dialog to *always* appear in a certain language, ignoring iOS's language setting (e.g. apps released in a specific country).
@@ -243,8 +295,15 @@ For your convenience, you may turn on debugging statements by setting `self.debu
## App Store Submissions
The App Store reviewer will **not** see the alert. The version in the App Store will always be older than the version being reviewed.
## Phased Releases
In 2017, Apple announced the [ability to rollout app updates gradually (a.k.a. Phased Releases)](https://itunespartner.apple.com/en/apps/faq/Managing%20Your%20Apps_Submission%20Process). Siren will continue to work as it has in the past, presenting an update modal to _all_ users. If you opt-in to a phased rollout for a specific version, you have a few choices:
- You can leave Siren configured as normal. Phased rollout will continue to auto-update apps. Since all users can still manually update your app directly, Siren will ignore the phase 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 release, 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 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)**
+11 -7
View File
@@ -1,15 +1,19 @@
Pod::Spec.new do |s|
# Version
s.version = "3.3.1"
s.swift_version = '4.1'
# Meta
s.name = "Siren"
s.version = "2.0.2"
s.summary = "Notify users when a new version of your iOS app is available, and prompt them with the App Store link.."
s.description = <<-DESC
Siren is checks a users currently installed version of your iOS app against the version that is currently available in the App Store.
DESC
s.summary = "Notify users that a new version of your iOS app is available, and prompt them with the App Store link."
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'
@@ -13,17 +13,21 @@
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 */; };
8EBDF8251E6A0C41006C87B4 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8EBDF8211E6A0C41006C87B4 /* LaunchScreen.xib */; };
8EBDF8261E6A0C41006C87B4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8EBDF8231E6A0C41006C87B4 /* Main.storyboard */; };
8EE6C7431E6A0AA500DBE454 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EE6C7411E6A0AA500DBE454 /* AppDelegate.swift */; };
8EE6C7441E6A0AA500DBE454 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EE6C7421E6A0AA500DBE454 /* ViewController.swift */; };
8EE6C7481E6A0AB800DBE454 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8EE6C7461E6A0AB800DBE454 /* Images.xcassets */; };
8EACA9701F37F327003134CA /* SirenLookupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EACA96F1F37F327003134CA /* SirenLookupModel.swift */; };
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 */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -63,20 +67,24 @@
55EC364A1E6BB98A00726F13 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = 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>"; };
8EBDF8221E6A0C41006C87B4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = SirenExample/Base.lproj/LaunchScreen.xib; sourceTree = SOURCE_ROOT; };
8EBDF8241E6A0C41006C87B4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = SirenExample/Base.lproj/Main.storyboard; sourceTree = SOURCE_ROOT; };
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; };
8EE6C7411E6A0AA500DBE454 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = SirenExample/AppDelegate.swift; sourceTree = SOURCE_ROOT; };
8EE6C7421E6A0AA500DBE454 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ViewController.swift; path = SirenExample/ViewController.swift; sourceTree = SOURCE_ROOT; };
8EE6C7461E6A0AB800DBE454 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = SirenExample/Images.xcassets; sourceTree = SOURCE_ROOT; };
8EE6C7471E6A0AB800DBE454 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = SirenExample/Info.plist; sourceTree = SOURCE_ROOT; };
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 */
@@ -112,9 +120,13 @@
children = (
55EC365E1E6BB99B00726F13 /* Siren.bundle */,
55EC365F1E6BB99B00726F13 /* Siren.swift */,
8E528A2F1E989A7A00B643C4 /* SirenDelegate.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 */,
@@ -124,34 +136,33 @@
path = Siren;
sourceTree = "<group>";
};
8E1005DE1A5DD02300509B14 /* SirenExample */ = {
8EACA9651F37F2D3003134CA /* SirenExample */ = {
isa = PBXGroup;
children = (
8EE6C7411E6A0AA500DBE454 /* AppDelegate.swift */,
8E528A331E98AED300B643C4 /* Supporting Files */,
8EACA9661F37F2D3003134CA /* AppDelegate.swift */,
8EACA96E1F37F2DD003134CA /* Supporting Files */,
);
name = SirenExample;
path = "Sample App";
path = SirenExample;
sourceTree = "<group>";
};
8E528A331E98AED300B643C4 /* Supporting Files */ = {
8EACA96E1F37F2DD003134CA /* Supporting Files */ = {
isa = PBXGroup;
children = (
8EE6C7421E6A0AA500DBE454 /* ViewController.swift */,
8EBDF8211E6A0C41006C87B4 /* LaunchScreen.xib */,
8EBDF8231E6A0C41006C87B4 /* Main.storyboard */,
8EE6C7461E6A0AB800DBE454 /* Images.xcassets */,
8EE6C7471E6A0AB800DBE454 /* Info.plist */,
8EACA9671F37F2D3003134CA /* LaunchScreen.xib */,
8EACA9691F37F2D3003134CA /* Main.storyboard */,
8EACA96B1F37F2D3003134CA /* Images.xcassets */,
8EACA96C1F37F2D3003134CA /* Info.plist */,
8EACA96D1F37F2D3003134CA /* ViewController.swift */,
);
name = "Supporting Files";
path = "Supporting Files";
sourceTree = "<group>";
};
8EC391781A58B465001C121E = {
isa = PBXGroup;
children = (
8E1005DE1A5DD02300509B14 /* SirenExample */,
8EE6C74A1E6A0AE100DBE454 /* SirenExampleTests */,
55EC36481E6BB98A00726F13 /* Siren */,
8EACA9651F37F2D3003134CA /* SirenExample */,
8EE6C74A1E6A0AE100DBE454 /* SirenExampleTests */,
8EC391821A58B465001C121E /* Products */,
);
sourceTree = "<group>";
@@ -253,24 +264,24 @@
attributes = {
LastSwiftMigration = 0700;
LastSwiftUpdateCheck = 0730;
LastUpgradeCheck = 0820;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Sabintsev iOS Projects";
TargetAttributes = {
55EC36461E6BB98A00726F13 = {
CreatedOnToolsVersion = 8.2.1;
LastSwiftMigration = 0820;
LastSwiftMigration = 0900;
ProvisioningStyle = Automatic;
};
8E3A6C031D07CB6F00A8B7CF = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 0800;
LastSwiftMigration = 0900;
TestTargetID = 8EC391801A58B465001C121E;
};
8EC391801A58B465001C121E = {
CreatedOnToolsVersion = 6.1.1;
DevelopmentTeam = HT94948NDD;
DevelopmentTeamName = "Arthur Sabintsev";
LastSwiftMigration = 0800;
LastSwiftMigration = 0900;
};
};
};
@@ -314,9 +325,9 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8EBDF8261E6A0C41006C87B4 /* Main.storyboard in Resources */,
8EBDF8251E6A0C41006C87B4 /* LaunchScreen.xib in Resources */,
8EE6C7481E6A0AB800DBE454 /* Images.xcassets in Resources */,
8EACA9711F380294003134CA /* LaunchScreen.xib in Resources */,
8EACA9721F380294003134CA /* Main.storyboard in Resources */,
8EACA9731F380294003134CA /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -346,10 +357,14 @@
files = (
8E528A321E989E0A00B643C4 /* SirenTestHelper.swift in Sources */,
8E9C238F1E7CDDE7000ED3DA /* SirenViewController.swift in Sources */,
8EACA9771F38113E003134CA /* SirenError.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 */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -366,8 +381,8 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8EE6C7431E6A0AA500DBE454 /* AppDelegate.swift in Sources */,
8EE6C7441E6A0AA500DBE454 /* ViewController.swift in Sources */,
8EACA9741F38029B003134CA /* AppDelegate.swift in Sources */,
8EACA9751F38029B003134CA /* ViewController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -387,18 +402,18 @@
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
8EBDF8211E6A0C41006C87B4 /* LaunchScreen.xib */ = {
8EACA9671F37F2D3003134CA /* LaunchScreen.xib */ = {
isa = PBXVariantGroup;
children = (
8EBDF8221E6A0C41006C87B4 /* Base */,
8EACA9681F37F2D3003134CA /* Base */,
);
name = LaunchScreen.xib;
sourceTree = "<group>";
};
8EBDF8231E6A0C41006C87B4 /* Main.storyboard */ = {
8EACA9691F37F2D3003134CA /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
8EBDF8241E6A0C41006C87B4 /* Base */,
8EACA96A1F37F2D3003134CA /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
@@ -423,12 +438,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.sabintsev.Siren;
PRODUCT_BUNDLE_IDENTIFIER = com.apple.itunesconnect.mobile.tests;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@@ -453,11 +469,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.sabintsev.Siren;
PRODUCT_BUNDLE_IDENTIFIER = com.apple.itunesconnect.mobile.tests;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@@ -467,6 +484,7 @@
8E3A6C0B1D07CB6F00A8B7CF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ANALYZER_NONNULL = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
@@ -476,7 +494,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.sabintsev.SirenTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SirenExample.app/SirenExample";
};
name = Debug;
@@ -484,6 +503,7 @@
8E3A6C0C1D07CB6F00A8B7CF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ANALYZER_NONNULL = YES;
COPY_PHASE_STRIP = NO;
@@ -495,7 +515,8 @@
PRODUCT_BUNDLE_IDENTIFIER = com.sabintsev.SirenTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SirenExample.app/SirenExample";
};
name = Release;
@@ -508,14 +529,22 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_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;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -554,14 +583,22 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_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;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -589,12 +626,13 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
INFOPLIST_FILE = "$(SRCROOT)/SirenExample/Info.plist";
INFOPLIST_FILE = "$(SRCROOT)/SirenExample/Supporting Files/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;
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
@@ -603,13 +641,14 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
INFOPLIST_FILE = "$(SRCROOT)/SirenExample/Info.plist";
INFOPLIST_FILE = "$(SRCROOT)/SirenExample/Supporting Files/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;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Release;
};
@@ -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 = "0820"
LastUpgradeVersion = "0930"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0820"
LastUpgradeVersion = "0930"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
+15 -8
View File
@@ -34,8 +34,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// Optional - Change the name of your app. Useful if you have a long app name and want to display a shortened version in the update dialog (e.g., the UIAlertController).
// 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!")
// Optional - Defaults to .Option
// siren.alertType = .Option // or .Force, .Skip, .None
// siren.alertType = .option // or .force, .skip, .none
// Optional - Can set differentiated Alerts for Major, Minor, Patch, and Revision Updates (Must be called AFTER siren.alertType, if you are using siren.alertType)
siren.majorUpdateAlertType = .option
@@ -44,9 +51,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
siren.revisionUpdateAlertType = .option
// Optional - Sets all messages to appear in Russian. Siren supports many other languages, not just English and Russian.
// siren.forceLanguageLocalization = .Russian
// siren.forceLanguageLocalization = .russian
// Optional - Set this variable if your app is not available in the U.S. App Store. List of codes: https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Appendices/AppStoreTerritories.html
// Optional - Set this variable if your app is not available in the U.S. App Store. List of codes: https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/AppStoreTerritories.html
// siren.countryCode = ""
// 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.
@@ -54,8 +61,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// 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
// Required
siren.checkVersion(checkType: .immediately)
// Optional (Only do this if you don't call checkVersion in didBecomeActive)
// siren.checkVersion(checkType: .immediately)
}
func applicationWillEnterForeground(_ application: UIApplication) {
@@ -87,7 +94,7 @@ extension AppDelegate: SirenDelegate
print(#function)
}
func sirenDidFailVersionCheck(error: NSError) {
func sirenDidFailVersionCheck(error: Error) {
print(#function, error)
}
@@ -96,7 +103,7 @@ extension AppDelegate: SirenDelegate
}
// This delegate method is only hit when alertType is initialized to .none
func sirenDidDetectNewVersionWithoutAlert(message: String) {
print(#function, "\(message)")
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType) {
print(#function, "\(message).\nRelease type: \(updateType.rawValue.capitalized)")
}
}
+277 -175
View File
@@ -139,598 +139,700 @@ extension SirenTests {
extension SirenTests {
func testArabicLocalization() {
let language: Siren.LanguageType = .Arabic
let language: Siren.LanguageType = .arabic
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "التجديد متوفر")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "التحديث متوفر")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "المرة التالية")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "المرة التالية")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "تخطى عن هذه النسخة")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "تخطى عن هذه النسخة")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "تجديد")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "تحديث")
}
func testArmenianLocalization() {
let language: Siren.LanguageType = .Armenian
let language: Siren.LanguageType = .armenian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Թարմացումը հասանելի Է")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Թարմացումը հասանելի Է")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Հաջորդ անգամ")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Հաջորդ անգամ")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Բաց թողնել այս տարբերակը")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Բաց թողնել այս տարբերակը")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Թարմացնել")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Թարմացնել")
}
func testBasqueLocalization() {
let language: Siren.LanguageType = .Basque
let language: Siren.LanguageType = .basque
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Eguneratzea erabilgarri")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Eguneratzea erabilgarri")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Hurrengo batean")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Hurrengo batean")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Bertsio honetatik jauzi egin")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Bertsio honetatik jauzi egin")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Eguneratu")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Eguneratu")
}
func testChineseSimplifiedLocalization() {
let language: Siren.LanguageType = .ChineseSimplified
let language: Siren.LanguageType = .chineseSimplified
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "更新可用")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "更新可用")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "下一次")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "下一次")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "跳过此版本")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "跳过此版本")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "更新")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "更新")
}
func testChineseTraditionalLocalization() {
let language: Siren.LanguageType = .ChineseTraditional
let language: Siren.LanguageType = .chineseTraditional
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "有更新可用")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "有更新可用")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "下次")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "下次")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "跳過此版本")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "跳過此版本")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "更新")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "更新")
}
func testCroatianLocalization() {
let language: Siren.LanguageType = .Croatian
let language: Siren.LanguageType = .croatian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Nova ažuriranje je stigla")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Nova ažuriranje je stigla")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Sljedeći put")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Sljedeći put")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Preskoči ovu verziju")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Preskoči ovu verziju")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Ažuriraj")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Ažuriraj")
}
func testCzechLocalization() {
let language: Siren.LanguageType = .czech
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Aktualizace dostupná")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Příště")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Přeskočit tuto verzi")
// Update
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Aktualizovat")
}
func testDanishLocalization() {
let language: Siren.LanguageType = .Danish
let language: Siren.LanguageType = .danish
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Tilgængelig opdatering")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Tilgængelig opdatering")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Næste gang")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Næste gang")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Spring denne version over")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Spring denne version over")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Opdater")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Opdater")
}
func testDutchLocalization() {
let language: Siren.LanguageType = .Dutch
let language: Siren.LanguageType = .dutch
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Update Beschikbaar")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Update beschikbaar")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Volgende keer")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Volgende keer")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Sla deze versie over")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Sla deze versie over")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Updaten")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Updaten")
}
func testEstonianLocalization() {
let language: Siren.LanguageType = .Estonian
let language: Siren.LanguageType = .estonian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Uuendus saadaval")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Uuendus saadaval")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Järgmisel korral")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Järgmisel korral")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Jäta see version vahele")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Jäta see version vahele")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Uuenda")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Uuenda")
}
func testFinnishLocalization() {
let language: Siren.LanguageType = .Finnish
let language: Siren.LanguageType = .finnish
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Päivitys saatavilla")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Päivitys saatavilla")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Ensi kerralla")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Ensi kerralla")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Jätä tämä versio väliin")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Jätä tämä versio väliin")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Päivitys")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Päivitys")
}
func testFrenchLocalization() {
let language: Siren.LanguageType = .French
let language: Siren.LanguageType = .french
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Mise à jour disponible")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Mise à jour disponible")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "La prochaine fois")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "La prochaine fois")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Sauter cette version")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Sauter cette version")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Mettre à jour")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Mettre à jour")
}
func testGermanLocalization() {
let language: Siren.LanguageType = .German
let language: Siren.LanguageType = .german
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Update erhältlich")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Update erhältlich")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Später")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Später")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Diese Version überspringen")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Diese Version überspringen")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Update")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Update")
}
func testGreekLocalization() {
let language: Siren.LanguageType = .Greek
let language: Siren.LanguageType = .greek
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Διαθέσιμη Ενημέρωση")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Διαθέσιμη Ενημέρωση")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Άλλη φορά")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Άλλη φορά")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Αγνόησε αυτήν την έκδοση")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Αγνόησε αυτήν την έκδοση")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Αναβάθμιση")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Αναβάθμιση")
}
func testHebrewLocalization() {
let language: Siren.LanguageType = .Hebrew
let language: Siren.LanguageType = .hebrew
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "עדכון זמין")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "עדכון זמין")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "בפעם הבאה")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "בפעם הבאה")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "דלג על גרסה זו")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "דלג על גרסה זו")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "עדכן")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "עדכן")
}
func testHungarianLocalization() {
let language: Siren.LanguageType = .Hungarian
let language: Siren.LanguageType = .hungarian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Új frissítés érhető el")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Új frissítés érhető el")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Később")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Később")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Ennél a verziónál ne figyelmeztessen")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Ennél a verziónál ne figyelmeztessen")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Frissítés")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Frissítés")
}
func testIndonesianLocalization() {
let language: Siren.LanguageType = .Indonesian
let language: Siren.LanguageType = .indonesian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Pembaruan Tersedia")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Pembaruan Tersedia")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Lain kali")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Lain kali")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Lewati versi ini")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Lewati versi ini")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Perbarui")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Perbarui")
}
func testItalianLocalization() {
let language: Siren.LanguageType = .Italian
let language: Siren.LanguageType = .italian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Aggiornamento disponibile")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Aggiornamento disponibile")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "La prossima volta")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "La prossima volta")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Salta questa versione")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Salta questa versione")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Aggiorna")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Aggiorna")
}
func testJapaneseLocalization() {
let language: Siren.LanguageType = .Japanese
let language: Siren.LanguageType = .japanese
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "更新が利用可能")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "アップデートのお知らせ")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "次回")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "次回")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "このバージョンをスキップ")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "このバージョンをスキップ")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "更新")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "アップデート")
}
func testKoreanLocalization() {
let language: Siren.LanguageType = .Korean
let language: Siren.LanguageType = .korean
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "업데이트 가능")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "업데이트 가능")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "다음에")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "다음에")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "이 버전 건너뜀")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "이 버전 건너뜀")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "업데이트")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "업데이트")
}
func testLatvianLocalization() {
let language: Siren.LanguageType = .Latvian
let language: Siren.LanguageType = .latvian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Atjauninājums pieejams")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Atjauninājums pieejams")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Nākamreiz")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Nākamreiz")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Izlaist šo versiju")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Izlaist šo versiju")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Atjaunināt")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Atjaunināt")
}
func testLithuanianLocalization() {
let language: Siren.LanguageType = .Lithuanian
let language: Siren.LanguageType = .lithuanian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Atnaujinimas")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Atnaujinimas")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Kitą kartą")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Kitą kartą")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Praleisti šią versiją")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Praleisti šią versiją")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Atnaujinti")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Atnaujinti")
}
func testMalayLocalization() {
let language: Siren.LanguageType = .Malay
let language: Siren.LanguageType = .malay
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Versi Terkini")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Versi Terkini")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Lain kali")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Lain kali")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Langkau versi ini")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Langkau versi ini")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Muat turun")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Muat turun")
}
func testNorwegianLocalization() {
let language: Siren.LanguageType = .Norwegian
let language: Siren.LanguageType = .norwegian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Oppdatering tilgjengelig")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Oppdatering tilgjengelig")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Neste gang")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Neste gang")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Hopp over denne versjonen")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Hopp over denne versjonen")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Oppdater")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Oppdater")
}
func testPersianLocalization() {
let language: Siren.LanguageType = .persian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "بروزرسانی در دسترس")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "دفعه بعد")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "رد این نسخه")
// Update
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "بروزرسانی")
}
func testPersianAfghanistanLocalization() {
let language: Siren.LanguageType = .persianAfghanistan
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "بروزرسانی در دسترس")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "دگر بار")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "رد این نسخه")
// Update
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "بروزرسانی")
}
func testPersianIranLocalization() {
let language: Siren.LanguageType = .persianIran
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "بروزرسانی در دسترس")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "دفعه بعد")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "رد این نسخه")
// Update
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "بروزرسانی")
}
func testPolishLocalization() {
let language: Siren.LanguageType = .Polish
let language: Siren.LanguageType = .polish
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Aktualizacja dostępna")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Aktualizacja dostępna")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Następnym razem")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Następnym razem")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Pomiń wersję")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Pomiń wersję")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Zaktualizuj")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Zaktualizuj")
}
func testPortugueseBrazilLocalization() {
let language: Siren.LanguageType = .PortugueseBrazil
let language: Siren.LanguageType = .portugueseBrazil
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Atualização disponível")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Atualização disponível")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Próxima vez")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Próxima vez")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Ignorar esta versão")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Ignorar esta versão")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Atualizar")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Atualizar")
}
func testPortuguesePortugalLocalization() {
let language: Siren.LanguageType = .PortuguesePortugal
let language: Siren.LanguageType = .portuguesePortugal
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Nova actualização disponível")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Nova actualização disponível")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Próxima vez")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Próxima vez")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Ignorar esta versão")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Ignorar esta versão")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Actualizar")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Actualizar")
}
func testRussianLocalization() {
let language: Siren.LanguageType = .Russian
let language: Siren.LanguageType = .russian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Доступно обновление")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Доступно обновление")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "В следующий раз")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "В следующий раз")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Пропустить эту версию")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Пропустить эту версию")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Обновить")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Обновить")
}
func testSerbianCyrillicLocalization() {
let language: Siren.LanguageType = .SerbianCyrillic
let language: Siren.LanguageType = .serbianCyrillic
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Ажурирање доступно")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Ажурирање доступно")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Следећи пут")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Следећи пут")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Прескочи ову верзију")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Прескочи ову верзију")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Ажурирај")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Ажурирај")
}
func testSerbianLatinLocalization() {
let language: Siren.LanguageType = .SerbianLatin
let language: Siren.LanguageType = .serbianLatin
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Ažuriranje dostupno")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Ažuriranje dostupno")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Sledeći put")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Sledeći put")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Preskoči ovu verziju")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Preskoči ovu verziju")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Ažuriraj")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Ažuriraj")
}
func testSlovenianLocalization() {
let language: Siren.LanguageType = .Slovenian
let language: Siren.LanguageType = .slovenian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Posodobitev aplikacije")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Posodobitev aplikacije")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Naslednjič")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Naslednjič")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Ne želim")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Ne želim")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Namesti")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Namesti")
}
func testSpanishLocalization() {
let language: Siren.LanguageType = .Spanish
let language: Siren.LanguageType = .spanish
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Actualización disponible")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Actualización disponible")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "La próxima vez")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "La próxima vez")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Saltar esta versión")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Saltar esta versión")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Actualizar")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Actualizar")
}
func testSwedishLocalization() {
let language: Siren.LanguageType = .Swedish
let language: Siren.LanguageType = .swedish
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Tillgänglig uppdatering")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Tillgänglig uppdatering")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Nästa gång")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Nästa gång")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Hoppa över den här versionen")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Hoppa över den här versionen")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Uppdatera")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Uppdatera")
}
func testThaiLocalization() {
let language: Siren.LanguageType = .Thai
let language: Siren.LanguageType = .thai
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "มีการอัพเดท")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "มีการอัพเดท")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "ไว้คราวหน้า")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "ไว้คราวหน้า")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "ข้ามเวอร์ชั่นนี้")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "ข้ามเวอร์ชั่นนี้")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "อัพเดท")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "อัพเดท")
}
func testTurkishLocalization() {
let language: Siren.LanguageType = .Turkish
let language: Siren.LanguageType = .turkish
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Güncelleme Mevcut")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Güncelleme Mevcut")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Daha sonra")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Daha sonra")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Boşver")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Boşver")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Güncelle")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Güncelle")
}
func testUkrainianLocalization() {
let language: Siren.LanguageType = .ukrainian
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Доступне Оновлення")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Наступного разу")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Пропустити версію")
// Update
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Оновити")
}
func testUrduLocalization() {
let language: Siren.LanguageType = .urdu
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "نیا اپڈیٹ")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "اگلی مرتبہ")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "اس ورزن کو چھوڑ دیں")
// Update
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "اپڈیٹ کریں")
}
func testVietnameseLocalization() {
let language: Siren.LanguageType = .Vietnamese
let language: Siren.LanguageType = .vietnamese
siren.forceLanguageLocalization = language
// Update Available
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Cập nhật mới")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update Available", forceLanguageLocalization: language), "Cập nhật mới")
// Next time
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Lần tới")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Next time", forceLanguageLocalization: language), "Lần tới")
// Skip this version
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Bỏ qua phiên bản này")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Skip this version", forceLanguageLocalization: language), "Bỏ qua phiên bản này")
// Update
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Cập nhật")
XCTAssertEqual(Bundle().testLocalizedString(forKey: "Update", forceLanguageLocalization: language), "Cập nhật")
}
}
Binary file not shown.
@@ -1,5 +1,5 @@
/* Update alert message: A new version of {APP NAME} is available. Please update to version {NEW VERSION} now.*/
"A new version of %@ is available. Please update to version %@ now."="Uma nova versão do %@ está disponível. Por favor atualize para a versão %@ agora.";
"A new version of %@ is available. Please update to version %@ now."="Uma nova versão do %@ está disponível. Por favor atualize para a versão %@.";
/* Update alert title */
"Update Available"="Atualização disponível";
Binary file not shown.
Binary file not shown.
+155 -198
View File
@@ -10,7 +10,7 @@ import UIKit
// MARK: - Siren
/// The Siren Class. A singleton that is initialized using the shared() method.
/// The Siren Class. A singleton that is initialized using the `shared` constant.
public final class Siren: NSObject {
/// Current installed version of your app.
@@ -34,12 +34,12 @@ public final class Siren: NSObject {
public weak var delegate: SirenDelegate?
/// The debug flag, which is disabled by default.
/// When enabled, a stream of println() statements are logged to your console when a version check is performed.
/// When enabled, a stream of print() statements are logged to your console when a version check is performed.
public lazy var debugEnabled = false
/// Determines the type of alert that should be shown.
/// See the Siren.AlertType enum for full details.
public var alertType = AlertType.option {
public var alertType: AlertType = .option {
didSet {
majorUpdateAlertType = alertType
minorUpdateAlertType = alertType
@@ -51,26 +51,30 @@ public final class Siren: NSObject {
/// 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.
public lazy var majorUpdateAlertType = AlertType.option
public lazy var majorUpdateAlertType: AlertType = .option
/// 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.
public lazy var minorUpdateAlertType = AlertType.option
public lazy var minorUpdateAlertType: AlertType = .option
/// 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.
public lazy var patchUpdateAlertType = AlertType.option
public lazy var patchUpdateAlertType: AlertType = .option
/// 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.
public lazy var revisionUpdateAlertType = AlertType.option
public lazy var revisionUpdateAlertType: AlertType = .option
/// The name of your app.
/// By default, it's set to the name of the app that's stored in your plist.
public lazy var appName: String = Bundle.main.bestMatchingAppName()
public lazy var appName = Bundle.bestMatchingAppName()
/// Overrides all the Strings to which Siren defaults.
/// Defaults to the values defined in `SirenAlertMessaging.Constants`
public var alertMessaging = SirenAlertMessaging()
/// 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.
@@ -84,7 +88,7 @@ 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
@@ -96,6 +100,9 @@ public final class Siren: NSObject {
fileprivate var lastVersionCheckPerformedOnDate: Date?
fileprivate lazy var alertViewIsVisible: Bool = false
/// Type of the available update
fileprivate var updateType: UpdateType = .unknown
/// The App's Singleton
public static let shared = Siren()
@@ -113,8 +120,10 @@ public final class Siren: NSObject {
/// - Parameters:
/// - checkType: The frequency in days in which you want a check to be performed. Please refer to the Siren.VersionCheckType enum for more details.
public func checkVersion(checkType: VersionCheckType) {
guard let _ = Bundle.bundleID() else {
printMessage(message: "Please make sure that you have set a `Bundle Identifier` in your project.")
updateType = .unknown
guard Bundle.bundleID() != nil else {
printMessage("Please make sure that you have set a `Bundle Identifier` in your project.")
return
}
@@ -129,10 +138,26 @@ public final class Siren: NSObject {
if Date.days(since: lastVersionCheckPerformedOnDate) >= checkType.rawValue {
performVersionCheck()
} else {
postError(.recentlyCheckedAlready, underlyingError: nil)
postError(.recentlyCheckedAlready)
}
}
}
/// Launches the AppStore in two situations:
///
/// - User clicked the `Update` button in the UIAlertController modal.
/// - 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.
public func launchAppStore() {
guard let appID = appID,
let url = URL(string: "https://itunes.apple.com/app/id\(appID)") else {
return
}
DispatchQueue.main.async {
UIApplication.shared.openURL(url)
}
}
}
// MARK: - Helpers (Networking)
@@ -143,73 +168,55 @@ private extension Siren {
do {
let url = try iTunesURLFromString()
let request = URLRequest(url: url, cachePolicy: .reloadIgnoringCacheData, timeoutInterval: 30)
URLSession.shared.dataTask(with: request, completionHandler: { [unowned self] (data, response, error) in
self.processResults(withData: data, response: response, error: error)
URLSession.shared.dataTask(with: request, completionHandler: { [weak self] (data, response, error) in
self?.processResults(withData: data, response: response, error: error)
}).resume()
} catch let error as NSError {
postError(.malformedURL, underlyingError: error)
} catch _ {
postError(.malformedURL)
}
}
func processResults(withData data: Data?, response: URLResponse?, error: Error?) {
if let error = error {
postError(.appStoreDataRetrievalFailure, underlyingError: error)
postError(.appStoreDataRetrievalFailure(underlyingError: error))
} else {
guard let data = data else {
postError(.appStoreDataRetrievalFailure, underlyingError: nil)
postError(.appStoreDataRetrievalFailure(underlyingError: nil))
return
}
do {
let jsonData = try JSONSerialization.jsonObject(with: data, options: [])
guard let appData = jsonData as? [String: Any],
isUpdateCompatibleWithDeviceOS(appData: appData) else {
postError(.appStoreJSONParsingFailure, underlyingError: nil)
return
let decodedData = try JSONDecoder().decode(SirenLookupModel.self, from: data)
guard !decodedData.results.isEmpty else {
return postError(.appStoreDataRetrievalEmptyResults)
}
DispatchQueue.main.async { [unowned self] in
// Print iTunesLookup results from appData
self.printMessage(message: "JSON results: \(appData)")
DispatchQueue.main.async { [weak self] in
self?.printMessage("Decoded JSON results: \(decodedData)")
// Process Results (e.g., extract current version that is available on the AppStore)
self.processVersionCheck(with: appData)
self?.processVersionCheck(with: decodedData)
}
} catch let error as NSError {
postError(.appStoreDataRetrievalFailure, underlyingError: error)
postError(.appStoreJSONParsingFailure(underlyingError: error))
}
}
}
func processVersionCheck(with payload: [String: Any]) {
storeVersionCheckDate() // Store version comparison date
guard let results = payload[JSONKeys.results] as? [[String: Any]] else {
postError(.appStoreVersionNumberFailure, underlyingError: nil)
func processVersionCheck(with model: SirenLookupModel) {
guard isUpdateCompatibleWithDeviceOS(for: model) else {
return
}
/// Condition satisfied when app not in App Store
guard !results.isEmpty else {
postError(.appStoreDataRetrievalFailure, underlyingError: nil)
return
}
guard let info = results.first else {
postError(.appStoreDataRetrievalFailure, underlyingError: nil)
return
}
guard let appID = info[JSONKeys.appID] as? Int else {
postError(.appStoreAppIDFailure, underlyingError: nil)
guard let appID = model.results.first?.appID else {
postError(.appStoreAppIDFailure)
return
}
self.appID = appID
guard let currentAppStoreVersion = info[JSONKeys.version] as? String else {
postError(.appStoreVersionArrayFailure, underlyingError: nil)
guard let currentAppStoreVersion = model.results.first?.version else {
postError(.appStoreVersionArrayFailure)
return
}
@@ -217,18 +224,18 @@ private extension Siren {
guard isAppStoreVersionNewer() else {
delegate?.sirenLatestVersionInstalled()
postError(.noUpdateAvailable, underlyingError: nil)
postError(.noUpdateAvailable)
return
}
guard let currentVersionReleaseDate = info[JSONKeys.currentVersionReleaseDate] as? String,
guard let currentVersionReleaseDate = model.results.first?.currentVersionReleaseDate,
let daysSinceRelease = Date.days(since: currentVersionReleaseDate) else {
return
}
guard daysSinceRelease >= showAlertAfterCurrentVersionHasBeenReleasedForDays else {
let message = "Your app has been released for \(daysSinceRelease) days, but Siren cannot prompt the user until \(showAlertAfterCurrentVersionHasBeenReleasedForDays) days have passed."
self.printMessage(message: message)
self.printMessage(message)
return
}
@@ -251,7 +258,7 @@ private extension Siren {
components.queryItems = items
guard let url = components.url, !url.absoluteString.isEmpty else {
throw SirenError.malformedURL
throw SirenError.Known.malformedURL
}
return url
@@ -275,7 +282,10 @@ private extension Siren {
}
func showAlert() {
let updateAvailableMessage = Bundle().localizedString(stringKey: "Update Available", forceLanguageLocalization: forceLanguageLocalization)
storeVersionCheckDate()
let updateAvailableMessage = Bundle.localizedString(forKey: alertMessaging.updateTitle, forceLanguageLocalization: forceLanguageLocalization)
let newVersionMessage = localizedNewVersionMessage()
let alertController = UIAlertController(title: updateAvailableMessage, message: newVersionMessage, preferredStyle: .alert)
@@ -295,7 +305,7 @@ private extension Siren {
alertController.addAction(updateAlertAction())
alertController.addAction(skipAlertAction())
case .none:
delegate?.sirenDidDetectNewVersionWithoutAlert(message: newVersionMessage)
delegate?.sirenDidDetectNewVersionWithoutAlert(message: newVersionMessage, updateType: updateType)
}
if alertType != .none && !alertViewIsVisible {
@@ -307,11 +317,15 @@ private extension Siren {
func updateAlertAction() -> UIAlertAction {
let title = localizedUpdateButtonTitle()
let action = UIAlertAction(title: title, style: .default) { [unowned self] _ in
self.hideWindow()
self.launchAppStore()
self.delegate?.sirenUserDidLaunchAppStore()
self.alertViewIsVisible = false
let action = UIAlertAction(title: title, style: .default) { [weak self] _ in
guard let strongSelf = self else {
return
}
strongSelf.hideWindow()
strongSelf.launchAppStore()
strongSelf.delegate?.sirenUserDidLaunchAppStore()
strongSelf.alertViewIsVisible = false
return
}
@@ -320,10 +334,14 @@ private extension Siren {
func nextTimeAlertAction() -> UIAlertAction {
let title = localizedNextTimeButtonTitle()
let action = UIAlertAction(title: title, style: .default) { [unowned self] _ in
self.hideWindow()
self.delegate?.sirenUserDidCancel()
self.alertViewIsVisible = false
let action = UIAlertAction(title: title, style: .default) { [weak self] _ in
guard let strongSelf = self else {
return
}
strongSelf.hideWindow()
strongSelf.delegate?.sirenUserDidCancel()
strongSelf.alertViewIsVisible = false
return
}
@@ -332,16 +350,19 @@ private extension Siren {
func skipAlertAction() -> UIAlertAction {
let title = localizedSkipButtonTitle()
let action = UIAlertAction(title: title, style: .default) { [unowned self] _ in
let action = UIAlertAction(title: title, style: .default) { [weak self] _ in
guard let strongSelf = self else {
return
}
if let currentAppStoreVersion = self.currentAppStoreVersion {
if let currentAppStoreVersion = strongSelf.currentAppStoreVersion {
UserDefaults.standard.set(currentAppStoreVersion, forKey: SirenDefaults.StoredSkippedVersion.rawValue)
UserDefaults.standard.synchronize()
}
self.hideWindow()
self.delegate?.sirenUserDidSkipVersion()
self.alertViewIsVisible = false
strongSelf.hideWindow()
strongSelf.delegate?.sirenUserDidSkipVersion()
strongSelf.alertViewIsVisible = false
return
}
@@ -354,8 +375,8 @@ private extension Siren {
return .option
}
let oldVersion = (currentInstalledVersion).characters.split {$0 == "."}.map { String($0) }.map {Int($0) ?? 0}
let newVersion = (currentAppStoreVersion).characters.split {$0 == "."}.map { String($0) }.map {Int($0) ?? 0}
let oldVersion = (currentInstalledVersion).split {$0 == "."}.map { String($0) }.map {Int($0) ?? 0}
let newVersion = (currentAppStoreVersion).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
@@ -363,12 +384,16 @@ private extension Siren {
if newVersionFirst > oldVersionFirst { // A.b.c.d
alertType = majorUpdateAlertType
updateType = .major
} else if newVersion.count > 1 && (oldVersion.count <= 1 || newVersion[1] > oldVersion[1]) { // a.B.c.d
alertType = minorUpdateAlertType
updateType = .minor
} else if newVersion.count > 2 && (oldVersion.count <= 2 || newVersion[2] > oldVersion[2]) { // a.b.C.d
alertType = patchUpdateAlertType
updateType = .patch
} else if newVersion.count > 3 && (oldVersion.count <= 3 || newVersion[3] > oldVersion[3]) { // a.b.c.D
alertType = revisionUpdateAlertType
updateType = .revision
}
return alertType
@@ -379,8 +404,8 @@ private extension Siren {
private extension Siren {
func localizedNewVersionMessage() -> String {
let newVersionMessageToLocalize = "A new version of %@ is available. Please update to version %@ now."
let newVersionMessage = Bundle().localizedString(stringKey: newVersionMessageToLocalize, forceLanguageLocalization: forceLanguageLocalization)
let newVersionMessageToLocalize = alertMessaging.updateMessage
let newVersionMessage = Bundle.localizedString(forKey: newVersionMessageToLocalize, forceLanguageLocalization: forceLanguageLocalization)
guard let currentAppStoreVersion = currentAppStoreVersion else {
return String(format: newVersionMessage, appName, "Unknown")
@@ -390,15 +415,15 @@ private extension Siren {
}
func localizedUpdateButtonTitle() -> String {
return Bundle().localizedString(stringKey: "Update", forceLanguageLocalization: forceLanguageLocalization)
return Bundle.localizedString(forKey: alertMessaging.updateButtonMessage, forceLanguageLocalization: forceLanguageLocalization)
}
func localizedNextTimeButtonTitle() -> String {
return Bundle().localizedString(stringKey: "Next time", forceLanguageLocalization: forceLanguageLocalization)
return Bundle.localizedString(forKey: alertMessaging.nextTimeButtonMessage, forceLanguageLocalization: forceLanguageLocalization)
}
func localizedSkipButtonTitle() -> String {
return Bundle().localizedString(stringKey: "Skip this version", forceLanguageLocalization: forceLanguageLocalization)
return Bundle.localizedString(forKey: alertMessaging.skipVersionButtonMessage, forceLanguageLocalization: forceLanguageLocalization)
}
}
@@ -430,11 +455,9 @@ extension Siren {
// MARK: - Helpers (Misc.)
private extension Siren {
func isUpdateCompatibleWithDeviceOS(appData: [String: Any]) -> Bool {
guard let results = appData[JSONKeys.results] as? [[String: Any]],
let info = results.first,
let requiredOSVersion = info[JSONKeys.minimumOSVersion] as? String else {
postError(.appStoreOSVersionNumberFailure, underlyingError: nil)
func isUpdateCompatibleWithDeviceOS(for model: SirenLookupModel) -> Bool {
guard let requiredOSVersion = model.results.first?.minimumOSVersion else {
postError(.appStoreOSVersionNumberFailure)
return false
}
@@ -442,7 +465,7 @@ private extension Siren {
guard systemVersion.compare(requiredOSVersion, options: .numeric) == .orderedDescending ||
systemVersion.compare(requiredOSVersion, options: .numeric) == .orderedSame else {
postError(.appStoreOSVersionUnsupported, underlyingError: nil)
postError(.appStoreOSVersionUnsupported)
return false
}
@@ -456,20 +479,12 @@ private extension Siren {
}
}
func launchAppStore() {
guard let appID = appID,
let iTunesURL = URL(string: "https://itunes.apple.com/app/id\(appID)") else {
return
}
DispatchQueue.main.async {
UIApplication.shared.openURL(iTunesURL)
}
}
func printMessage(message: String) {
/// 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 {
print("[Siren] \(message)")
SirenLog(message)
}
}
}
@@ -511,68 +526,54 @@ public extension Siren {
/// 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 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 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 Vietnamese = "vi"
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 Error Codes
enum ErrorCode: Int {
case malformedURL = 1000
case recentlyCheckedAlready
case noUpdateAvailable
case appStoreDataRetrievalFailure
case appStoreJSONParsingFailure
case appStoreOSVersionNumberFailure
case appStoreOSVersionUnsupported
case appStoreVersionNumberFailure
case appStoreVersionArrayFailure
case appStoreAppIDFailure
case appStoreReleaseDateFailure
}
/// Siren-specific Throwable Errors
enum SirenError: Error {
case malformedURL
case missingBundleIdOrAppId
}
/// Siren-specific UserDefaults Keys
enum SirenDefaults: String {
@@ -583,57 +584,13 @@ private extension Siren {
case StoredSkippedVersion
}
struct JSONKeys {
static let appID = "trackId"
static let currentVersionReleaseDate = "currentVersionReleaseDate"
static let minimumOSVersion = "minimumOsVersion"
static let results = "results"
static let version = "version"
}
}
// MARK: - Error Handling
private extension Siren {
func postError(_ code: ErrorCode, underlyingError: Error?) {
let description: String
switch code {
case .malformedURL:
description = "The iTunes URL is malformed. Please leave an issue on http://github.com/ArtSabintsev/Siren with as many details as possible."
case .recentlyCheckedAlready:
description = "Not checking the version, because it already checked recently."
case .noUpdateAvailable:
description = "No new update available."
case .appStoreDataRetrievalFailure:
description = "Error retrieving App Store data as an error was returned."
case .appStoreJSONParsingFailure:
description = "Error parsing App Store JSON data."
case .appStoreOSVersionNumberFailure:
description = "Error retrieving iOS version number as there was no data returned."
case .appStoreOSVersionUnsupported:
description = "The version of iOS on the device is lower than that of the one required by the app verison update."
case .appStoreVersionNumberFailure:
description = "Error retrieving App Store version number as there was no data returned."
case .appStoreVersionArrayFailure:
description = "Error retrieving App Store verson number as the JSON does not contain a 'version' key."
case .appStoreAppIDFailure:
description = "Error retrieving trackId as the JSON does not contain a 'trackId' key."
case .appStoreReleaseDateFailure:
description = "Error retrieving trackId as the JSON does not contain a 'currentVersionReleaseDate' key."
}
var userInfo: [String: Any] = [NSLocalizedDescriptionKey: description]
if let underlyingError = underlyingError {
userInfo[NSUnderlyingErrorKey] = underlyingError
}
let error = NSError(domain: SirenErrorDomain, code: code.rawValue, userInfo: userInfo)
func postError(_ error: SirenError.Known) {
delegate?.sirenDidFailVersionCheck(error: error)
printMessage(message: error.localizedDescription)
printMessage(error.localizedDescription)
}
}
+54
View File
@@ -0,0 +1,54 @@
//
// 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
}
}
+12 -12
View File
@@ -10,34 +10,34 @@ import Foundation
// MARK: - Bundle Extension for Siren
internal extension Bundle {
extension Bundle {
class func bundleID() -> String? {
return Bundle.main.bundleIdentifier
}
func sirenBundlePath() -> String {
return Bundle(for: Siren.self).path(forResource: "Siren", ofType: "bundle") as String!
class func sirenBundlePath() -> String {
return Bundle(for: Siren.self).path(forResource: "Siren", ofType: "bundle")!
}
func sirenForcedBundlePath(forceLanguageLocalization: Siren.LanguageType) -> String {
class func sirenForcedBundlePath(forceLanguageLocalization: Siren.LanguageType) -> String {
let path = sirenBundlePath()
let name = forceLanguageLocalization.rawValue
return Bundle(path: path)!.path(forResource: name, ofType: "lproj")!
}
func localizedString(stringKey: String, forceLanguageLocalization: Siren.LanguageType?) -> String {
var path: String
class func localizedString(forKey key: String, forceLanguageLocalization: Siren.LanguageType?) -> String {
var path = sirenBundlePath()
let table = "SirenLocalizable"
if let forceLanguageLocalization = forceLanguageLocalization {
path = sirenForcedBundlePath(forceLanguageLocalization: forceLanguageLocalization)
} else {
path = sirenBundlePath()
}
return Bundle(path: path)!.localizedString(forKey: stringKey, value: stringKey, table: table)
return Bundle(path: path)!.localizedString(forKey: key, value: key, table: table)
}
func bestMatchingAppName() -> String {
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 +48,7 @@ internal extension Bundle {
// MARK: - Bundle Extension for Testing Siren
extension Bundle {
func testLocalizedString(stringKey: String, forceLanguageLocalization: Siren.LanguageType?) -> String {
return Bundle().localizedString(stringKey: stringKey, forceLanguageLocalization: forceLanguageLocalization)
func testLocalizedString(forKey key: String, forceLanguageLocalization: Siren.LanguageType?) -> String {
return Bundle.localizedString(forKey: key, forceLanguageLocalization: forceLanguageLocalization)
}
}
+4 -1
View File
@@ -8,7 +8,9 @@
import Foundation
internal extension Date {
// MARK: - Date Extension for Siren
extension Date {
static func days(since date: Date) -> Int {
let calendar = Calendar.current
let components = calendar.dateComponents([.day], from: date, to: Date())
@@ -17,6 +19,7 @@ internal extension Date {
static func days(since dateString: String) -> Int? {
let dateformatter = DateFormatter()
dateformatter.locale = Locale(identifier: "en_US_POSIX")
dateformatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'"
guard let releaseDate = dateformatter.date(from: dateString) else {
+35 -12
View File
@@ -8,10 +8,29 @@
import Foundation
/// MARK - Siren UpdateType
/// `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.
///
/// - major: Major release available: A.b.c.d
/// - 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
public enum UpdateType: String {
case major
case minor
case patch
case revision
case unknown
}
// MARK: - SirenDelegate Protocol
/// Delegate that handles all codepaths for Siren upon version check completion.
public protocol SirenDelegate: class {
public protocol SirenDelegate: NSObjectProtocol {
/// User presented with update dialog.
func sirenDidShowUpdateDialog(alertType: Siren.AlertType)
@@ -25,10 +44,10 @@ public protocol SirenDelegate: class {
func sirenUserDidCancel()
/// Siren failed to perform version check (may return system-level error).
func sirenDidFailVersionCheck(error: NSError)
func sirenDidFailVersionCheck(error: Error)
/// Siren performed version check and did not display alert.
func sirenDidDetectNewVersionWithoutAlert(message: String)
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType)
/// Siren performed version check and latest version is installed.
func sirenLatestVersionInstalled()
@@ -39,31 +58,35 @@ public protocol SirenDelegate: class {
public extension SirenDelegate {
func sirenDidShowUpdateDialog(alertType: Siren.AlertType) {
assertionFailure("An attempt to reach \(#function) failed as it was called without being implemented.")
printMessage()
}
func sirenUserDidLaunchAppStore() {
assertionFailure("An attempt to reach \(#function) failed as it was called without being implemented.")
printMessage()
}
func sirenUserDidSkipVersion() {
assertionFailure("An attempt to reach \(#function) failed as it was called without being implemented.")
printMessage()
}
func sirenUserDidCancel() {
assertionFailure("An attempt to reach \(#function) failed as it was called without being implemented.")
printMessage()
}
func sirenDidFailVersionCheck(error: NSError) {
assertionFailure("An attempt to reach \(#function) failed as it was called without being implemented.")
func sirenDidFailVersionCheck(error: Error) {
printMessage()
}
func sirenDidDetectNewVersionWithoutAlert(message: String) {
assertionFailure("An attempt to reach \(#function) failed as it was called without being implemented.")
func sirenDidDetectNewVersionWithoutAlert(message: String, updateType: UpdateType) {
printMessage()
}
func sirenLatestVersionInstalled() {
assertionFailure("An attempt to reach \(#function) failed as it was called without being implemented.")
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.")
}
}
+54
View File
@@ -0,0 +1,54 @@
//
// SirenError.swift
// Siren
//
// Created by Arthur Sabintsev on 8/6/17.
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
//
import Foundation
// MARK: - Siren Error Handling
public struct SirenError: LocalizedError {
public enum Known: Error {
case appStoreAppIDFailure
case appStoreDataRetrievalFailure(underlyingError: Error?)
case appStoreJSONParsingFailure(underlyingError: Error)
case appStoreDataRetrievalEmptyResults
case appStoreOSVersionNumberFailure
case appStoreOSVersionUnsupported
case appStoreVersionArrayFailure
case malformedURL
case noUpdateAvailable
case recentlyCheckedAlready
var localizedDescription: String {
switch self {
case .appStoreAppIDFailure:
return "Error retrieving trackId as the JSON does not contain a 'trackId' key."
case .appStoreDataRetrievalFailure(let error?):
return "Error retrieving App Store data as an error was returned\nAlso, the following system level error was returned: \(error)"
case .appStoreDataRetrievalFailure(.none):
return "Error retrieving App Store data as an error was returned."
case .appStoreDataRetrievalEmptyResults:
return "Error retrieving App Store data as the JSON results were empty. Is your app available in the US? If not, change the `countryCode` variable to fix this error."
case .appStoreJSONParsingFailure(let error):
return "Error parsing App Store JSON data.\nAlso, the following system level error was returned: \(error)"
case .appStoreOSVersionNumberFailure:
return "Error retrieving iOS version number as there was no data returned."
case .appStoreOSVersionUnsupported:
return "The version of iOS on the device is lower than that of the one required by the app verison update."
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."
case .noUpdateAvailable:
return "No new update available."
case .recentlyCheckedAlready:
return "Not checking the version, because it already checked recently."
}
}
}
}
+20
View File
@@ -0,0 +1,20 @@
//
// SirenLog.swift
// SirenExample
//
// Created by Arthur Sabintsev on 8/5/17.
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
//
import Foundation
// MARK: - Log and decorate Siren-specific messages to the console.
struct SirenLog {
@discardableResult
init(_ message: String) {
print("[Siren] \(message)")
}
}
+35
View File
@@ -0,0 +1,35 @@
//
// 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 releaseNotes
case version
}
let appID: Int
let currentVersionReleaseDate: String
let minimumOSVersion: String
let version: String
let releaseNotes: String
}
}
+1 -1
View File
@@ -8,7 +8,7 @@
import Foundation
// MARK: - Helpers (Testing Target)
// MARK: - Test Target Helpers
extension Siren {
func testSetCurrentInstalledVersion(version: String) {
@@ -7,10 +7,11 @@
//
import Foundation
import UIKit
// MARK: - UIAlertController Extension for Siren
internal extension UIAlertController {
extension UIAlertController {
func show() {
let window = UIWindow(frame: UIScreen.main.bounds)
window.rootViewController = SirenViewController()
+2 -1
View File
@@ -7,9 +7,10 @@
//
import Foundation
import UIKit
// MARK: - UIViewController Extension for Siren
internal class SirenViewController: UIViewController {
final class SirenViewController: UIViewController {
override var preferredStatusBarStyle: UIStatusBarStyle { return UIApplication.shared.statusBarStyle }
}
+34 -9
View File
@@ -10,16 +10,16 @@
</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> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">Siren Reference</a>
<a href="index.html"> Reference</a>
<img id="carat" src="img/carat.png" />
Classes Reference
</p>
@@ -44,6 +44,14 @@
</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">
@@ -52,6 +60,23 @@
</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">
@@ -74,9 +99,9 @@
<li class="item">
<div>
<code>
<a name="/s:C5Siren5Siren"></a>
<a name="/c:@M@Siren@objc(cs)Siren"></a>
<a name="//apple_ref/swift/Class/Siren" class="dashAnchor"></a>
<a class="token" href="#/s:C5Siren5Siren">Siren</a>
<a class="token" href="#/c:@M@Siren@objc(cs)Siren">Siren</a>
</code>
</div>
<div class="height-container">
@@ -84,7 +109,7 @@
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The Siren Class. A singleton that is initialized using the shared() method.</p>
<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>
@@ -92,7 +117,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
@@ -104,8 +129,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
+171 -75
View File
@@ -14,13 +14,12 @@
<a title="Siren Class Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">Siren Docs</a> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html">Siren Reference</a>
<a href="../index.html"> Reference</a>
<img id="carat" src="../img/carat.png" />
Siren Class Reference
</p>
@@ -45,6 +44,14 @@
</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">
@@ -53,6 +60,23 @@
</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">
@@ -61,11 +85,11 @@
<h1>Siren</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><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>
<p>The Siren Class. A singleton that is initialized using the shared() method.</p>
<p>The Siren Class. A singleton that is initialized using the <code>shared</code> constant.</p>
</section>
<section class="section task-group-section">
@@ -74,9 +98,9 @@
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren16SirenErrorDomainSS"></a>
<a name="/s:5SirenAAC0A11ErrorDomainSSvp"></a>
<a name="//apple_ref/swift/Property/SirenErrorDomain" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren16SirenErrorDomainSS">SirenErrorDomain</a>
<a class="token" href="#/s:5SirenAAC0A11ErrorDomainSSvp">SirenErrorDomain</a>
</code>
</div>
<div class="height-container">
@@ -91,7 +115,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
@@ -101,9 +125,9 @@
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren8delegateXwGSqPS_13SirenDelegate__"></a>
<a name="/s:5SirenAAC8delegateAA0A8Delegate_pSgXwvp"></a>
<a name="//apple_ref/swift/Property/delegate" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren8delegateXwGSqPS_13SirenDelegate__">delegate</a>
<a class="token" href="#/s:5SirenAAC8delegateAA0A8Delegate_pSgXwvp">delegate</a>
</code>
</div>
<div class="height-container">
@@ -113,21 +137,27 @@
<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
- sirenDidShowUpdateDialog(alertType: AlertType)
- sirenUserDidLaunchAppStore()
- sirenUserDidSkipVersion()
- sirenUserDidCancel()</p>
<p>When a user views or interacts with the alert</p>
<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:
- sirenDidDetectNewVersionWithoutAlert(message: String)</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"><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>
<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>
@@ -137,9 +167,9 @@
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren12debugEnabledSb"></a>
<a name="/s:5SirenAAC12debugEnabledSbvp"></a>
<a name="//apple_ref/swift/Property/debugEnabled" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren12debugEnabledSb">debugEnabled</a>
<a class="token" href="#/s:5SirenAAC12debugEnabledSbvp">debugEnabled</a>
</code>
</div>
<div class="height-container">
@@ -148,14 +178,14 @@
<div class="pointer"></div>
<div class="abstract">
<p>The debug flag, which is disabled by default.
When enabled, a stream of println() statements are logged to your console when a version check is performed.</p>
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"><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>
@@ -165,9 +195,9 @@ When enabled, a stream of println() statements are logged to your console when a
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren9alertTypeOS0_9AlertType"></a>
<a name="/s:5SirenAAC9alertTypeAB05AlertC0Ovp"></a>
<a name="//apple_ref/swift/Property/alertType" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren9alertTypeOS0_9AlertType">alertType</a>
<a class="token" href="#/s:5SirenAAC9alertTypeAB05AlertC0Ovp">alertType</a>
</code>
</div>
<div class="height-container">
@@ -183,7 +213,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"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">alertType</span> <span class="o">=</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></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>
@@ -193,9 +223,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren20majorUpdateAlertTypeOS0_9AlertType"></a>
<a name="/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/majorUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren20majorUpdateAlertTypeOS0_9AlertType">majorUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ovp">majorUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -212,7 +242,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"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">majorUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></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>
@@ -222,9 +252,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren20minorUpdateAlertTypeOS0_9AlertType"></a>
<a name="/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/minorUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren20minorUpdateAlertTypeOS0_9AlertType">minorUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ovp">minorUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -241,7 +271,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"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">minorUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></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>
@@ -251,9 +281,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren20patchUpdateAlertTypeOS0_9AlertType"></a>
<a name="/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/patchUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren20patchUpdateAlertTypeOS0_9AlertType">patchUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ovp">patchUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -270,7 +300,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"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">patchUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></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>
@@ -280,9 +310,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren23revisionUpdateAlertTypeOS0_9AlertType"></a>
<a name="/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/revisionUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren23revisionUpdateAlertTypeOS0_9AlertType">revisionUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ovp">revisionUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -299,7 +329,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"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">revisionUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></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>
@@ -309,9 +339,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren7appNameSS"></a>
<a name="/s:5SirenAAC7appNameSSvp"></a>
<a name="//apple_ref/swift/Property/appName" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren7appNameSS">appName</a>
<a class="token" href="#/s:5SirenAAC7appNameSSvp">appName</a>
</code>
</div>
<div class="height-container">
@@ -327,7 +357,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"><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="o">=</span> <span class="kt">Bundle</span><span class="o">.</span><span class="n">main</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>
@@ -337,9 +367,37 @@ 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:vC5Siren5Siren11countryCodeGSqSS_"></a>
<a name="/s:5SirenAAC14alertMessagingAA0a5AlertC0Vvp"></a>
<a name="//apple_ref/swift/Property/alertMessaging" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC14alertMessagingAA0a5AlertC0Vvp">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="p">:</span> <span class="kt"><a href="../Structs/SirenAlertMessaging.html">SirenAlertMessaging</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC11countryCodeSSSgvp"></a>
<a name="//apple_ref/swift/Property/countryCode" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren11countryCodeGSqSS_">countryCode</a>
<a class="token" href="#/s:5SirenAAC11countryCodeSSSgvp">countryCode</a>
</code>
</div>
<div class="height-container">
@@ -356,7 +414,7 @@ If your app is not available in the US App Store, set it to the identifier of at
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
<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>
@@ -366,9 +424,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:vC5Siren5Siren25forceLanguageLocalizationGSqOS0_12LanguageType_"></a>
<a name="/s:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgvp"></a>
<a name="//apple_ref/swift/Property/forceLanguageLocalization" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren25forceLanguageLocalizationGSqOS0_12LanguageType_">forceLanguageLocalization</a>
<a class="token" href="#/s:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgvp">forceLanguageLocalization</a>
</code>
</div>
<div class="height-container">
@@ -384,7 +442,7 @@ See the Siren.LanguageType enum for more details.</p>
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
<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>
@@ -394,9 +452,9 @@ See the Siren.LanguageType enum for more details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren24alertControllerTintColorGSqCSo7UIColor_"></a>
<a name="/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgvp"></a>
<a name="//apple_ref/swift/Property/alertControllerTintColor" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren24alertControllerTintColorGSqCSo7UIColor_">alertControllerTintColor</a>
<a class="token" href="#/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgvp">alertControllerTintColor</a>
</code>
</div>
<div class="height-container">
@@ -411,7 +469,7 @@ See the Siren.LanguageType enum for more details.</p>
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
<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>
@@ -421,9 +479,9 @@ See the Siren.LanguageType enum for more details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren50showAlertAfterCurrentVersionHasBeenReleasedForDaysSi"></a>
<a name="/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSivp"></a>
<a name="//apple_ref/swift/Property/showAlertAfterCurrentVersionHasBeenReleasedForDays" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren50showAlertAfterCurrentVersionHasBeenReleasedForDaysSi">showAlertAfterCurrentVersionHasBeenReleasedForDays</a>
<a class="token" href="#/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSivp">showAlertAfterCurrentVersionHasBeenReleasedForDays</a>
</code>
</div>
<div class="height-container">
@@ -431,7 +489,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>
@@ -439,7 +497,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"><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>
@@ -449,9 +507,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:vC5Siren5Siren22currentAppStoreVersionGSqSS_"></a>
<a name="/s:5SirenAAC22currentAppStoreVersionSSSgvp"></a>
<a name="//apple_ref/swift/Property/currentAppStoreVersion" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren22currentAppStoreVersionGSqSS_">currentAppStoreVersion</a>
<a class="token" href="#/s:5SirenAAC22currentAppStoreVersionSSSgvp">currentAppStoreVersion</a>
</code>
</div>
<div class="height-container">
@@ -466,7 +524,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"><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>
<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>
@@ -476,9 +534,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:ZvC5Siren5Siren6sharedS0_"></a>
<a name="/s:5SirenAAC6sharedABvpZ"></a>
<a name="//apple_ref/swift/Variable/shared" class="dashAnchor"></a>
<a class="token" href="#/s:ZvC5Siren5Siren6sharedS0_">shared</a>
<a class="token" href="#/s:5SirenAAC6sharedABvpZ">shared</a>
</code>
</div>
<div class="height-container">
@@ -493,7 +551,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"><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>
@@ -503,9 +561,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:FC5Siren5Siren12checkVersionFT9checkTypeOS0_16VersionCheckType_T_"></a>
<a name="/s:5SirenAAC12checkVersionyAB0C9CheckTypeO0bE0_tF"></a>
<a name="//apple_ref/swift/Method/checkVersion(checkType:)" class="dashAnchor"></a>
<a class="token" href="#/s:FC5Siren5Siren12checkVersionFT9checkTypeOS0_16VersionCheckType_T_">checkVersion(checkType:)</a>
<a class="token" href="#/s:5SirenAAC12checkVersionyAB0C9CheckTypeO0bE0_tF">checkVersion(checkType:)</a>
</code>
</div>
<div class="height-container">
@@ -515,14 +573,14 @@ 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:vC5Siren5Siren11countryCodeGSqSS_">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">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
<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>
@@ -539,7 +597,6 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
<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>
@@ -549,16 +606,55 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
</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">
<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>
<code>
<a name="/s:OC5Siren5Siren9AlertType"></a>
<a name="/s:5SirenAAC9AlertTypeO"></a>
<a name="//apple_ref/swift/Enum/AlertType" class="dashAnchor"></a>
<a class="token" href="#/s:OC5Siren5Siren9AlertType">AlertType</a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO">AlertType</a>
</code>
</div>
<div class="height-container">
@@ -574,7 +670,7 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">enum</span> <span class="kt">AlertType</span></code></pre>
<pre class="highlight swift"><code><span class="kd">enum</span> <span class="kt">AlertType</span></code></pre>
</div>
</div>
@@ -584,9 +680,9 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
<li class="item">
<div>
<code>
<a name="/s:OC5Siren5Siren16VersionCheckType"></a>
<a name="/s:5SirenAAC16VersionCheckTypeO"></a>
<a name="//apple_ref/swift/Enum/VersionCheckType" class="dashAnchor"></a>
<a class="token" href="#/s:OC5Siren5Siren16VersionCheckType">VersionCheckType</a>
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO">VersionCheckType</a>
</code>
</div>
<div class="height-container">
@@ -602,7 +698,7 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
@@ -612,9 +708,9 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
<li class="item">
<div>
<code>
<a name="/s:OC5Siren5Siren12LanguageType"></a>
<a name="/s:5SirenAAC12LanguageTypeO"></a>
<a name="//apple_ref/swift/Enum/LanguageType" class="dashAnchor"></a>
<a class="token" href="#/s:OC5Siren5Siren12LanguageType">LanguageType</a>
<a class="token" href="#/s:5SirenAAC12LanguageTypeO">LanguageType</a>
</code>
</div>
<div class="height-container">
@@ -633,7 +729,7 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
@@ -645,8 +741,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
+45 -33
View File
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>AlertType Enum Reference</title>
<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'>
@@ -11,18 +11,17 @@
</head>
<body>
<a name="//apple_ref/swift/Enum/AlertType" class="dashAnchor"></a>
<a title="AlertType Enum Reference"></a>
<a title="AlertType Enumeration Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../../index.html">Siren Docs</a> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../../index.html">Siren Reference</a>
<a href="../../index.html"> Reference</a>
<img id="carat" src="../../img/carat.png" />
AlertType Enum Reference
AlertType Enumeration Reference
</p>
</div>
<div class="content-wrapper">
@@ -45,6 +44,14 @@
</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">
@@ -53,6 +60,23 @@
</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">
@@ -61,7 +85,7 @@
<h1>AlertType</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">enum</span> <span class="kt">AlertType</span></code></pre>
<pre class="highlight swift"><code><span class="kd">enum</span> <span class="kt">AlertType</span></code></pre>
</div>
</div>
@@ -74,9 +98,9 @@
<li class="item">
<div>
<code>
<a name="/s:FOC5Siren5Siren9AlertType5forceFMS1_S1_"></a>
<a name="/s:5SirenAAC9AlertTypeO5forceA2DmF"></a>
<a name="//apple_ref/swift/Element/force" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren9AlertType5forceFMS1_S1_">force</a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO5forceA2DmF">force</a>
</code>
</div>
<div class="height-container">
@@ -91,23 +115,19 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">force</span></code></pre>
<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:FOC5Siren5Siren9AlertType6optionFMS1_S1_"></a>
<a name="/s:5SirenAAC9AlertTypeO6optionA2DmF"></a>
<a name="//apple_ref/swift/Element/option" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren9AlertType6optionFMS1_S1_">option</a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO6optionA2DmF">option</a>
</code>
</div>
<div class="height-container">
@@ -122,23 +142,19 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">option</span></code></pre>
<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:FOC5Siren5Siren9AlertType4skipFMS1_S1_"></a>
<a name="/s:5SirenAAC9AlertTypeO4skipA2DmF"></a>
<a name="//apple_ref/swift/Element/skip" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren9AlertType4skipFMS1_S1_">skip</a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO4skipA2DmF">skip</a>
</code>
</div>
<div class="height-container">
@@ -153,23 +169,19 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">skip</span></code></pre>
<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:FOC5Siren5Siren9AlertType4noneFMS1_S1_"></a>
<a name="/s:5SirenAAC9AlertTypeO4noneA2DmF"></a>
<a name="//apple_ref/swift/Element/none" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren9AlertType4noneFMS1_S1_">none</a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO4noneA2DmF">none</a>
</code>
</div>
<div class="height-container">
@@ -185,7 +197,7 @@ for use in a custom UI within the sirenDidDetectNewVersionWithoutAlert() delegat
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="k">none</span></code></pre>
<pre class="highlight swift"><code><span class="k">case</span> <span class="k">none</span></code></pre>
</div>
</div>
@@ -197,8 +209,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
File diff suppressed because it is too large Load Diff
+42 -26
View File
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>VersionCheckType Enum Reference</title>
<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'>
@@ -11,18 +11,17 @@
</head>
<body>
<a name="//apple_ref/swift/Enum/VersionCheckType" class="dashAnchor"></a>
<a title="VersionCheckType Enum Reference"></a>
<a title="VersionCheckType Enumeration Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../../index.html">Siren Docs</a> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../../index.html">Siren Reference</a>
<a href="../../index.html"> Reference</a>
<img id="carat" src="../../img/carat.png" />
VersionCheckType Enum Reference
VersionCheckType Enumeration Reference
</p>
</div>
<div class="content-wrapper">
@@ -45,6 +44,14 @@
</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">
@@ -53,6 +60,23 @@
</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">
@@ -61,7 +85,7 @@
<h1>VersionCheckType</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><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>
@@ -74,9 +98,9 @@
<li class="item">
<div>
<code>
<a name="/s:FOC5Siren5Siren16VersionCheckType11immediatelyFMS1_S1_"></a>
<a name="/s:5SirenAAC16VersionCheckTypeO11immediatelyA2DmF"></a>
<a name="//apple_ref/swift/Element/immediately" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren16VersionCheckType11immediatelyFMS1_S1_">immediately</a>
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO11immediatelyA2DmF">immediately</a>
</code>
</div>
<div class="height-container">
@@ -91,23 +115,19 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">immediately</span> <span class="o">=</span> <span class="mi">0</span></code></pre>
<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:FOC5Siren5Siren16VersionCheckType5dailyFMS1_S1_"></a>
<a name="/s:5SirenAAC16VersionCheckTypeO5dailyA2DmF"></a>
<a name="//apple_ref/swift/Element/daily" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren16VersionCheckType5dailyFMS1_S1_">daily</a>
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO5dailyA2DmF">daily</a>
</code>
</div>
<div class="height-container">
@@ -122,23 +142,19 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">daily</span> <span class="o">=</span> <span class="mi">1</span></code></pre>
<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:FOC5Siren5Siren16VersionCheckType6weeklyFMS1_S1_"></a>
<a name="/s:5SirenAAC16VersionCheckTypeO6weeklyA2DmF"></a>
<a name="//apple_ref/swift/Element/weekly" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren16VersionCheckType6weeklyFMS1_S1_">weekly</a>
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO6weeklyA2DmF">weekly</a>
</code>
</div>
<div class="height-container">
@@ -153,7 +169,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">weekly</span> <span class="o">=</span> <span class="mi">7</span></code></pre>
<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>
@@ -165,8 +181,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
+143
View File
@@ -0,0 +1,143 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Enumerations Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Section/Enumerations" class="dashAnchor"></a>
<a title="Enumerations Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> 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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
+251
View File
@@ -0,0 +1,251 @@
<!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>
<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>
<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>
<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>
<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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
+33 -8
View File
@@ -10,16 +10,16 @@
</head>
<body>
<a name="//apple_ref/swift/Section/Protocols" class="dashAnchor"></a>
<a title="Protocols Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">Siren Docs</a> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">Siren Reference</a>
<a href="index.html"> Reference</a>
<img id="carat" src="img/carat.png" />
Protocols Reference
</p>
@@ -44,6 +44,14 @@
</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">
@@ -52,6 +60,23 @@
</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">
@@ -74,9 +99,9 @@
<li class="item">
<div>
<code>
<a name="/s:P5Siren13SirenDelegate"></a>
<a name="/s:5Siren0A8DelegateP"></a>
<a name="//apple_ref/swift/Protocol/SirenDelegate" class="dashAnchor"></a>
<a class="token" href="#/s:P5Siren13SirenDelegate">SirenDelegate</a>
<a class="token" href="#/s:5Siren0A8DelegateP">SirenDelegate</a>
</code>
</div>
<div class="height-container">
@@ -92,7 +117,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SirenDelegate</span><span class="p">:</span> <span class="kd">class</span></code></pre>
<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>
@@ -104,8 +129,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
+52 -28
View File
@@ -14,13 +14,12 @@
<a title="SirenDelegate Protocol Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">Siren Docs</a> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html">Siren Reference</a>
<a href="../index.html"> Reference</a>
<img id="carat" src="../img/carat.png" />
SirenDelegate Protocol Reference
</p>
@@ -45,6 +44,14 @@
</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">
@@ -53,6 +60,23 @@
</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">
@@ -61,7 +85,7 @@
<h1>SirenDelegate</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SirenDelegate</span><span class="p">:</span> <span class="kd">class</span></code></pre>
<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>
@@ -74,9 +98,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate24sirenDidShowUpdateDialogFT9alertTypeOCS_5Siren9AlertType_T_"></a>
<a name="/s:5Siren0A8DelegateP24sirenDidShowUpdateDialogyA2AC9AlertTypeO05alertI0_tF"></a>
<a name="//apple_ref/swift/Method/sirenDidShowUpdateDialog(alertType:)" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate24sirenDidShowUpdateDialogFT9alertTypeOCS_5Siren9AlertType_T_">sirenDidShowUpdateDialog(alertType:)</a>
<a class="token" href="#/s:5Siren0A8DelegateP24sirenDidShowUpdateDialogyA2AC9AlertTypeO05alertI0_tF">sirenDidShowUpdateDialog(alertType:)</a>
</code>
<span class="declaration-note">
Default implementation
@@ -98,7 +122,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
<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>
@@ -108,9 +132,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate26sirenUserDidLaunchAppStoreFT_T_"></a>
<a name="/s:5Siren0A8DelegateP26sirenUserDidLaunchAppStoreyyF"></a>
<a name="//apple_ref/swift/Method/sirenUserDidLaunchAppStore()" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate26sirenUserDidLaunchAppStoreFT_T_">sirenUserDidLaunchAppStore()</a>
<a class="token" href="#/s:5Siren0A8DelegateP26sirenUserDidLaunchAppStoreyyF">sirenUserDidLaunchAppStore()</a>
</code>
<span class="declaration-note">
Default implementation
@@ -132,7 +156,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">sirenUserDidLaunchAppStore</span><span class="p">()</span></code></pre>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidLaunchAppStore</span><span class="p">()</span></code></pre>
</div>
</div>
@@ -142,9 +166,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate23sirenUserDidSkipVersionFT_T_"></a>
<a name="/s:5Siren0A8DelegateP23sirenUserDidSkipVersionyyF"></a>
<a name="//apple_ref/swift/Method/sirenUserDidSkipVersion()" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate23sirenUserDidSkipVersionFT_T_">sirenUserDidSkipVersion()</a>
<a class="token" href="#/s:5Siren0A8DelegateP23sirenUserDidSkipVersionyyF">sirenUserDidSkipVersion()</a>
</code>
<span class="declaration-note">
Default implementation
@@ -166,7 +190,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">sirenUserDidSkipVersion</span><span class="p">()</span></code></pre>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidSkipVersion</span><span class="p">()</span></code></pre>
</div>
</div>
@@ -176,9 +200,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate18sirenUserDidCancelFT_T_"></a>
<a name="/s:5Siren0A8DelegateP18sirenUserDidCancelyyF"></a>
<a name="//apple_ref/swift/Method/sirenUserDidCancel()" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate18sirenUserDidCancelFT_T_">sirenUserDidCancel()</a>
<a class="token" href="#/s:5Siren0A8DelegateP18sirenUserDidCancelyyF">sirenUserDidCancel()</a>
</code>
<span class="declaration-note">
Default implementation
@@ -200,7 +224,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">sirenUserDidCancel</span><span class="p">()</span></code></pre>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidCancel</span><span class="p">()</span></code></pre>
</div>
</div>
@@ -210,9 +234,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate24sirenDidFailVersionCheckFT5errorCSo7NSError_T_"></a>
<a name="/s:5Siren0A8DelegateP24sirenDidFailVersionCheckys5Error_p5error_tF"></a>
<a name="//apple_ref/swift/Method/sirenDidFailVersionCheck(error:)" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate24sirenDidFailVersionCheckFT5errorCSo7NSError_T_">sirenDidFailVersionCheck(error:)</a>
<a class="token" href="#/s:5Siren0A8DelegateP24sirenDidFailVersionCheckys5Error_p5error_tF">sirenDidFailVersionCheck(error:)</a>
</code>
<span class="declaration-note">
Default implementation
@@ -234,7 +258,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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">NSError</span><span class="p">)</span></code></pre>
<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>
@@ -244,9 +268,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate36sirenDidDetectNewVersionWithoutAlertFT7messageSS_T_"></a>
<a name="//apple_ref/swift/Method/sirenDidDetectNewVersionWithoutAlert(message:)" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate36sirenDidDetectNewVersionWithoutAlertFT7messageSS_T_">sirenDidDetectNewVersionWithoutAlert(message:)</a>
<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
@@ -268,7 +292,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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></code></pre>
<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>
@@ -278,9 +302,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate27sirenLatestVersionInstalledFT_T_"></a>
<a name="/s:5Siren0A8DelegateP27sirenLatestVersionInstalledyyF"></a>
<a name="//apple_ref/swift/Method/sirenLatestVersionInstalled()" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate27sirenLatestVersionInstalledFT_T_">sirenLatestVersionInstalled()</a>
<a class="token" href="#/s:5Siren0A8DelegateP27sirenLatestVersionInstalledyyF">sirenLatestVersionInstalled()</a>
</code>
<span class="declaration-note">
Default implementation
@@ -302,7 +326,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">sirenLatestVersionInstalled</span><span class="p">()</span></code></pre>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenLatestVersionInstalled</span><span class="p">()</span></code></pre>
</div>
</div>
@@ -314,8 +338,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
+184
View File
@@ -0,0 +1,184 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Structures Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Section/Structures" class="dashAnchor"></a>
<a title="Structures Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> 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%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>
<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>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
+242
View File
@@ -0,0 +1,242 @@
<!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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -0,0 +1,239 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Constants Structure Reference</title>
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
<meta charset='utf-8'>
<script src="../../js/jquery.min.js" defer></script>
<script src="../../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Struct/Constants" class="dashAnchor"></a>
<a title="Constants Structure Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../../index.html"> 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" />
Constants Structure Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../../Classes/Siren.html">Siren</a>
</li>
<li class="nav-group-task">
<a href="../../Classes/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>Constants</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">Constants</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:5Siren0A14AlertMessagingV9ConstantsV8nextTimeSSvpZ"></a>
<a name="//apple_ref/swift/Variable/nextTime" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV8nextTimeSSvpZ">nextTime</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="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">nextTime</span><span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV9ConstantsV11skipVersionSSvpZ"></a>
<a name="//apple_ref/swift/Variable/skipVersion" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV11skipVersionSSvpZ">skipVersion</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="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">skipVersion</span><span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV9ConstantsV13updateMessageSSvpZ"></a>
<a name="//apple_ref/swift/Variable/updateMessage" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV13updateMessageSSvpZ">updateMessage</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="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">updateMessage</span><span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV9ConstantsV11updateTitleSSvpZ"></a>
<a name="//apple_ref/swift/Variable/updateTitle" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV11updateTitleSSvpZ">updateTitle</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="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">updateTitle</span><span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV9ConstantsV9updateNowSSvpZ"></a>
<a name="//apple_ref/swift/Variable/updateNow" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV9updateNowSSvpZ">updateNow</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="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">updateNow</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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
+136
View File
@@ -0,0 +1,136 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>SirenError 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/SirenError" class="dashAnchor"></a>
<a title="SirenError 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" />
SirenError 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>SirenError</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">SirenError</span> <span class="p">:</span> <span class="kt">LocalizedError</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:5Siren0A5ErrorV5KnownO"></a>
<a name="//apple_ref/swift/Enum/Known" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO">Known</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/Known.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">Known</span> <span class="p">:</span> <span class="kt">Error</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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
+369
View File
@@ -0,0 +1,369 @@
<!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>
<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>
<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>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO33appStoreDataRetrievalEmptyResultsA2EmF"></a>
<a name="//apple_ref/swift/Element/appStoreDataRetrievalEmptyResults" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO33appStoreDataRetrievalEmptyResultsA2EmF">appStoreDataRetrievalEmptyResults</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">appStoreDataRetrievalEmptyResults</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<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>
<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>
<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>
<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>
<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>
<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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
+28 -1
View File
@@ -1 +1,28 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" 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="128" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h93v20H0z"/><path fill="#dfb317" d="M93 0h35v20H93z"/><path fill="url(#b)" d="M0 0h128v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><text x="46.5" y="15" fill="#010101" fill-opacity=".3">documentation</text><text x="46.5" y="14">documentation</text><text x="109.5" y="15" fill="#010101" fill-opacity=".3">55%</text><text x="109.5" y="14">55%</text></g></svg>
<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: 808 B

After

Width:  |  Height:  |  Size: 1.1 KiB

+5
View File
@@ -164,6 +164,11 @@ header {
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; }
@@ -3,11 +3,11 @@
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>com.jazzy.siren</string>
<string>com.jazzy.</string>
<key>CFBundleName</key>
<string>Siren</string>
<string></string>
<key>DocSetPlatformFamily</key>
<string>siren</string>
<string></string>
<key>isDashDocset</key>
<true/>
<key>dashIndexFilePath</key>
@@ -10,16 +10,16 @@
</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> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">Siren Reference</a>
<a href="index.html"> Reference</a>
<img id="carat" src="img/carat.png" />
Classes Reference
</p>
@@ -44,6 +44,14 @@
</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">
@@ -52,6 +60,23 @@
</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">
@@ -74,9 +99,9 @@
<li class="item">
<div>
<code>
<a name="/s:C5Siren5Siren"></a>
<a name="/c:@M@Siren@objc(cs)Siren"></a>
<a name="//apple_ref/swift/Class/Siren" class="dashAnchor"></a>
<a class="token" href="#/s:C5Siren5Siren">Siren</a>
<a class="token" href="#/c:@M@Siren@objc(cs)Siren">Siren</a>
</code>
</div>
<div class="height-container">
@@ -84,7 +109,7 @@
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The Siren Class. A singleton that is initialized using the shared() method.</p>
<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>
@@ -92,7 +117,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
@@ -104,8 +129,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
@@ -14,13 +14,12 @@
<a title="Siren Class Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">Siren Docs</a> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html">Siren Reference</a>
<a href="../index.html"> Reference</a>
<img id="carat" src="../img/carat.png" />
Siren Class Reference
</p>
@@ -45,6 +44,14 @@
</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">
@@ -53,6 +60,23 @@
</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">
@@ -61,11 +85,11 @@
<h1>Siren</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><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>
<p>The Siren Class. A singleton that is initialized using the shared() method.</p>
<p>The Siren Class. A singleton that is initialized using the <code>shared</code> constant.</p>
</section>
<section class="section task-group-section">
@@ -74,9 +98,9 @@
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren16SirenErrorDomainSS"></a>
<a name="/s:5SirenAAC0A11ErrorDomainSSvp"></a>
<a name="//apple_ref/swift/Property/SirenErrorDomain" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren16SirenErrorDomainSS">SirenErrorDomain</a>
<a class="token" href="#/s:5SirenAAC0A11ErrorDomainSSvp">SirenErrorDomain</a>
</code>
</div>
<div class="height-container">
@@ -91,7 +115,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
@@ -101,9 +125,9 @@
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren8delegateXwGSqPS_13SirenDelegate__"></a>
<a name="/s:5SirenAAC8delegateAA0A8Delegate_pSgXwvp"></a>
<a name="//apple_ref/swift/Property/delegate" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren8delegateXwGSqPS_13SirenDelegate__">delegate</a>
<a class="token" href="#/s:5SirenAAC8delegateAA0A8Delegate_pSgXwvp">delegate</a>
</code>
</div>
<div class="height-container">
@@ -113,21 +137,27 @@
<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
- sirenDidShowUpdateDialog(alertType: AlertType)
- sirenUserDidLaunchAppStore()
- sirenUserDidSkipVersion()
- sirenUserDidCancel()</p>
<p>When a user views or interacts with the alert</p>
<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:
- sirenDidDetectNewVersionWithoutAlert(message: String)</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"><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>
<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>
@@ -137,9 +167,9 @@
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren12debugEnabledSb"></a>
<a name="/s:5SirenAAC12debugEnabledSbvp"></a>
<a name="//apple_ref/swift/Property/debugEnabled" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren12debugEnabledSb">debugEnabled</a>
<a class="token" href="#/s:5SirenAAC12debugEnabledSbvp">debugEnabled</a>
</code>
</div>
<div class="height-container">
@@ -148,14 +178,14 @@
<div class="pointer"></div>
<div class="abstract">
<p>The debug flag, which is disabled by default.
When enabled, a stream of println() statements are logged to your console when a version check is performed.</p>
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"><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>
@@ -165,9 +195,9 @@ When enabled, a stream of println() statements are logged to your console when a
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren9alertTypeOS0_9AlertType"></a>
<a name="/s:5SirenAAC9alertTypeAB05AlertC0Ovp"></a>
<a name="//apple_ref/swift/Property/alertType" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren9alertTypeOS0_9AlertType">alertType</a>
<a class="token" href="#/s:5SirenAAC9alertTypeAB05AlertC0Ovp">alertType</a>
</code>
</div>
<div class="height-container">
@@ -183,7 +213,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"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">alertType</span> <span class="o">=</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></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>
@@ -193,9 +223,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren20majorUpdateAlertTypeOS0_9AlertType"></a>
<a name="/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/majorUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren20majorUpdateAlertTypeOS0_9AlertType">majorUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC20majorUpdateAlertTypeAB0dE0Ovp">majorUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -212,7 +242,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"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">majorUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></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>
@@ -222,9 +252,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren20minorUpdateAlertTypeOS0_9AlertType"></a>
<a name="/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/minorUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren20minorUpdateAlertTypeOS0_9AlertType">minorUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC20minorUpdateAlertTypeAB0dE0Ovp">minorUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -241,7 +271,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"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">minorUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></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>
@@ -251,9 +281,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren20patchUpdateAlertTypeOS0_9AlertType"></a>
<a name="/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/patchUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren20patchUpdateAlertTypeOS0_9AlertType">patchUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC20patchUpdateAlertTypeAB0dE0Ovp">patchUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -270,7 +300,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"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">patchUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></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>
@@ -280,9 +310,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren23revisionUpdateAlertTypeOS0_9AlertType"></a>
<a name="/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ovp"></a>
<a name="//apple_ref/swift/Property/revisionUpdateAlertType" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren23revisionUpdateAlertTypeOS0_9AlertType">revisionUpdateAlertType</a>
<a class="token" href="#/s:5SirenAAC23revisionUpdateAlertTypeAB0dE0Ovp">revisionUpdateAlertType</a>
</code>
</div>
<div class="height-container">
@@ -299,7 +329,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"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">revisionUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Classes/Siren/AlertType.html">AlertType</a></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>
@@ -309,9 +339,9 @@ See the Siren.AlertType enum for full details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren7appNameSS"></a>
<a name="/s:5SirenAAC7appNameSSvp"></a>
<a name="//apple_ref/swift/Property/appName" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren7appNameSS">appName</a>
<a class="token" href="#/s:5SirenAAC7appNameSSvp">appName</a>
</code>
</div>
<div class="height-container">
@@ -327,7 +357,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"><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="o">=</span> <span class="kt">Bundle</span><span class="o">.</span><span class="n">main</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>
@@ -337,9 +367,37 @@ 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:vC5Siren5Siren11countryCodeGSqSS_"></a>
<a name="/s:5SirenAAC14alertMessagingAA0a5AlertC0Vvp"></a>
<a name="//apple_ref/swift/Property/alertMessaging" class="dashAnchor"></a>
<a class="token" href="#/s:5SirenAAC14alertMessagingAA0a5AlertC0Vvp">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="p">:</span> <span class="kt"><a href="../Structs/SirenAlertMessaging.html">SirenAlertMessaging</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5SirenAAC11countryCodeSSSgvp"></a>
<a name="//apple_ref/swift/Property/countryCode" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren11countryCodeGSqSS_">countryCode</a>
<a class="token" href="#/s:5SirenAAC11countryCodeSSSgvp">countryCode</a>
</code>
</div>
<div class="height-container">
@@ -356,7 +414,7 @@ If your app is not available in the US App Store, set it to the identifier of at
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
<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>
@@ -366,9 +424,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:vC5Siren5Siren25forceLanguageLocalizationGSqOS0_12LanguageType_"></a>
<a name="/s:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgvp"></a>
<a name="//apple_ref/swift/Property/forceLanguageLocalization" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren25forceLanguageLocalizationGSqOS0_12LanguageType_">forceLanguageLocalization</a>
<a class="token" href="#/s:5SirenAAC25forceLanguageLocalizationAB0C4TypeOSgvp">forceLanguageLocalization</a>
</code>
</div>
<div class="height-container">
@@ -384,7 +442,7 @@ See the Siren.LanguageType enum for more details.</p>
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
<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>
@@ -394,9 +452,9 @@ See the Siren.LanguageType enum for more details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren24alertControllerTintColorGSqCSo7UIColor_"></a>
<a name="/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgvp"></a>
<a name="//apple_ref/swift/Property/alertControllerTintColor" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren24alertControllerTintColorGSqCSo7UIColor_">alertControllerTintColor</a>
<a class="token" href="#/s:5SirenAAC24alertControllerTintColorSo7UIColorCSgvp">alertControllerTintColor</a>
</code>
</div>
<div class="height-container">
@@ -411,7 +469,7 @@ See the Siren.LanguageType enum for more details.</p>
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
<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>
@@ -421,9 +479,9 @@ See the Siren.LanguageType enum for more details.</p>
<li class="item">
<div>
<code>
<a name="/s:vC5Siren5Siren50showAlertAfterCurrentVersionHasBeenReleasedForDaysSi"></a>
<a name="/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSivp"></a>
<a name="//apple_ref/swift/Property/showAlertAfterCurrentVersionHasBeenReleasedForDays" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren50showAlertAfterCurrentVersionHasBeenReleasedForDaysSi">showAlertAfterCurrentVersionHasBeenReleasedForDays</a>
<a class="token" href="#/s:5SirenAAC50showAlertAfterCurrentVersionHasBeenReleasedForDaysSivp">showAlertAfterCurrentVersionHasBeenReleasedForDays</a>
</code>
</div>
<div class="height-container">
@@ -431,7 +489,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>
@@ -439,7 +497,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"><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>
@@ -449,9 +507,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:vC5Siren5Siren22currentAppStoreVersionGSqSS_"></a>
<a name="/s:5SirenAAC22currentAppStoreVersionSSSgvp"></a>
<a name="//apple_ref/swift/Property/currentAppStoreVersion" class="dashAnchor"></a>
<a class="token" href="#/s:vC5Siren5Siren22currentAppStoreVersionGSqSS_">currentAppStoreVersion</a>
<a class="token" href="#/s:5SirenAAC22currentAppStoreVersionSSSgvp">currentAppStoreVersion</a>
</code>
</div>
<div class="height-container">
@@ -466,7 +524,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"><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>
<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>
@@ -476,9 +534,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:ZvC5Siren5Siren6sharedS0_"></a>
<a name="/s:5SirenAAC6sharedABvpZ"></a>
<a name="//apple_ref/swift/Variable/shared" class="dashAnchor"></a>
<a class="token" href="#/s:ZvC5Siren5Siren6sharedS0_">shared</a>
<a class="token" href="#/s:5SirenAAC6sharedABvpZ">shared</a>
</code>
</div>
<div class="height-container">
@@ -493,7 +551,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"><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>
@@ -503,9 +561,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:FC5Siren5Siren12checkVersionFT9checkTypeOS0_16VersionCheckType_T_"></a>
<a name="/s:5SirenAAC12checkVersionyAB0C9CheckTypeO0bE0_tF"></a>
<a name="//apple_ref/swift/Method/checkVersion(checkType:)" class="dashAnchor"></a>
<a class="token" href="#/s:FC5Siren5Siren12checkVersionFT9checkTypeOS0_16VersionCheckType_T_">checkVersion(checkType:)</a>
<a class="token" href="#/s:5SirenAAC12checkVersionyAB0C9CheckTypeO0bE0_tF">checkVersion(checkType:)</a>
</code>
</div>
<div class="height-container">
@@ -515,14 +573,14 @@ 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:vC5Siren5Siren11countryCodeGSqSS_">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">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
<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>
@@ -539,7 +597,6 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
<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>
@@ -549,16 +606,55 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
</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">
<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>
<code>
<a name="/s:OC5Siren5Siren9AlertType"></a>
<a name="/s:5SirenAAC9AlertTypeO"></a>
<a name="//apple_ref/swift/Enum/AlertType" class="dashAnchor"></a>
<a class="token" href="#/s:OC5Siren5Siren9AlertType">AlertType</a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO">AlertType</a>
</code>
</div>
<div class="height-container">
@@ -574,7 +670,7 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">enum</span> <span class="kt">AlertType</span></code></pre>
<pre class="highlight swift"><code><span class="kd">enum</span> <span class="kt">AlertType</span></code></pre>
</div>
</div>
@@ -584,9 +680,9 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
<li class="item">
<div>
<code>
<a name="/s:OC5Siren5Siren16VersionCheckType"></a>
<a name="/s:5SirenAAC16VersionCheckTypeO"></a>
<a name="//apple_ref/swift/Enum/VersionCheckType" class="dashAnchor"></a>
<a class="token" href="#/s:OC5Siren5Siren16VersionCheckType">VersionCheckType</a>
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO">VersionCheckType</a>
</code>
</div>
<div class="height-container">
@@ -602,7 +698,7 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
@@ -612,9 +708,9 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
<li class="item">
<div>
<code>
<a name="/s:OC5Siren5Siren12LanguageType"></a>
<a name="/s:5SirenAAC12LanguageTypeO"></a>
<a name="//apple_ref/swift/Enum/LanguageType" class="dashAnchor"></a>
<a class="token" href="#/s:OC5Siren5Siren12LanguageType">LanguageType</a>
<a class="token" href="#/s:5SirenAAC12LanguageTypeO">LanguageType</a>
</code>
</div>
<div class="height-container">
@@ -633,7 +729,7 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
@@ -645,8 +741,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>AlertType Enum Reference</title>
<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'>
@@ -11,18 +11,17 @@
</head>
<body>
<a name="//apple_ref/swift/Enum/AlertType" class="dashAnchor"></a>
<a title="AlertType Enum Reference"></a>
<a title="AlertType Enumeration Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../../index.html">Siren Docs</a> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../../index.html">Siren Reference</a>
<a href="../../index.html"> Reference</a>
<img id="carat" src="../../img/carat.png" />
AlertType Enum Reference
AlertType Enumeration Reference
</p>
</div>
<div class="content-wrapper">
@@ -45,6 +44,14 @@
</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">
@@ -53,6 +60,23 @@
</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">
@@ -61,7 +85,7 @@
<h1>AlertType</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">enum</span> <span class="kt">AlertType</span></code></pre>
<pre class="highlight swift"><code><span class="kd">enum</span> <span class="kt">AlertType</span></code></pre>
</div>
</div>
@@ -74,9 +98,9 @@
<li class="item">
<div>
<code>
<a name="/s:FOC5Siren5Siren9AlertType5forceFMS1_S1_"></a>
<a name="/s:5SirenAAC9AlertTypeO5forceA2DmF"></a>
<a name="//apple_ref/swift/Element/force" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren9AlertType5forceFMS1_S1_">force</a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO5forceA2DmF">force</a>
</code>
</div>
<div class="height-container">
@@ -91,23 +115,19 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">force</span></code></pre>
<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:FOC5Siren5Siren9AlertType6optionFMS1_S1_"></a>
<a name="/s:5SirenAAC9AlertTypeO6optionA2DmF"></a>
<a name="//apple_ref/swift/Element/option" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren9AlertType6optionFMS1_S1_">option</a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO6optionA2DmF">option</a>
</code>
</div>
<div class="height-container">
@@ -122,23 +142,19 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">option</span></code></pre>
<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:FOC5Siren5Siren9AlertType4skipFMS1_S1_"></a>
<a name="/s:5SirenAAC9AlertTypeO4skipA2DmF"></a>
<a name="//apple_ref/swift/Element/skip" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren9AlertType4skipFMS1_S1_">skip</a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO4skipA2DmF">skip</a>
</code>
</div>
<div class="height-container">
@@ -153,23 +169,19 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">skip</span></code></pre>
<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:FOC5Siren5Siren9AlertType4noneFMS1_S1_"></a>
<a name="/s:5SirenAAC9AlertTypeO4noneA2DmF"></a>
<a name="//apple_ref/swift/Element/none" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren9AlertType4noneFMS1_S1_">none</a>
<a class="token" href="#/s:5SirenAAC9AlertTypeO4noneA2DmF">none</a>
</code>
</div>
<div class="height-container">
@@ -185,7 +197,7 @@ for use in a custom UI within the sirenDidDetectNewVersionWithoutAlert() delegat
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="k">none</span></code></pre>
<pre class="highlight swift"><code><span class="k">case</span> <span class="k">none</span></code></pre>
</div>
</div>
@@ -197,8 +209,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>VersionCheckType Enum Reference</title>
<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'>
@@ -11,18 +11,17 @@
</head>
<body>
<a name="//apple_ref/swift/Enum/VersionCheckType" class="dashAnchor"></a>
<a title="VersionCheckType Enum Reference"></a>
<a title="VersionCheckType Enumeration Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../../index.html">Siren Docs</a> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../../index.html">Siren Reference</a>
<a href="../../index.html"> Reference</a>
<img id="carat" src="../../img/carat.png" />
VersionCheckType Enum Reference
VersionCheckType Enumeration Reference
</p>
</div>
<div class="content-wrapper">
@@ -45,6 +44,14 @@
</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">
@@ -53,6 +60,23 @@
</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">
@@ -61,7 +85,7 @@
<h1>VersionCheckType</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><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>
@@ -74,9 +98,9 @@
<li class="item">
<div>
<code>
<a name="/s:FOC5Siren5Siren16VersionCheckType11immediatelyFMS1_S1_"></a>
<a name="/s:5SirenAAC16VersionCheckTypeO11immediatelyA2DmF"></a>
<a name="//apple_ref/swift/Element/immediately" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren16VersionCheckType11immediatelyFMS1_S1_">immediately</a>
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO11immediatelyA2DmF">immediately</a>
</code>
</div>
<div class="height-container">
@@ -91,23 +115,19 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">immediately</span> <span class="o">=</span> <span class="mi">0</span></code></pre>
<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:FOC5Siren5Siren16VersionCheckType5dailyFMS1_S1_"></a>
<a name="/s:5SirenAAC16VersionCheckTypeO5dailyA2DmF"></a>
<a name="//apple_ref/swift/Element/daily" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren16VersionCheckType5dailyFMS1_S1_">daily</a>
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO5dailyA2DmF">daily</a>
</code>
</div>
<div class="height-container">
@@ -122,23 +142,19 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">daily</span> <span class="o">=</span> <span class="mi">1</span></code></pre>
<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:FOC5Siren5Siren16VersionCheckType6weeklyFMS1_S1_"></a>
<a name="/s:5SirenAAC16VersionCheckTypeO6weeklyA2DmF"></a>
<a name="//apple_ref/swift/Element/weekly" class="dashAnchor"></a>
<a class="token" href="#/s:FOC5Siren5Siren16VersionCheckType6weeklyFMS1_S1_">weekly</a>
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO6weeklyA2DmF">weekly</a>
</code>
</div>
<div class="height-container">
@@ -153,7 +169,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">case</span> <span class="n">weekly</span> <span class="o">=</span> <span class="mi">7</span></code></pre>
<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>
@@ -165,8 +181,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
@@ -0,0 +1,143 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Enumerations Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Section/Enumerations" class="dashAnchor"></a>
<a title="Enumerations Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> 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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -0,0 +1,251 @@
<!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>
<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>
<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>
<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>
<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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -10,16 +10,16 @@
</head>
<body>
<a name="//apple_ref/swift/Section/Protocols" class="dashAnchor"></a>
<a title="Protocols Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">Siren Docs</a> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">Siren Reference</a>
<a href="index.html"> Reference</a>
<img id="carat" src="img/carat.png" />
Protocols Reference
</p>
@@ -44,6 +44,14 @@
</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">
@@ -52,6 +60,23 @@
</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">
@@ -74,9 +99,9 @@
<li class="item">
<div>
<code>
<a name="/s:P5Siren13SirenDelegate"></a>
<a name="/s:5Siren0A8DelegateP"></a>
<a name="//apple_ref/swift/Protocol/SirenDelegate" class="dashAnchor"></a>
<a class="token" href="#/s:P5Siren13SirenDelegate">SirenDelegate</a>
<a class="token" href="#/s:5Siren0A8DelegateP">SirenDelegate</a>
</code>
</div>
<div class="height-container">
@@ -92,7 +117,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SirenDelegate</span><span class="p">:</span> <span class="kd">class</span></code></pre>
<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>
@@ -104,8 +129,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
@@ -14,13 +14,12 @@
<a title="SirenDelegate Protocol Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">Siren Docs</a> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html">Siren Reference</a>
<a href="../index.html"> Reference</a>
<img id="carat" src="../img/carat.png" />
SirenDelegate Protocol Reference
</p>
@@ -45,6 +44,14 @@
</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">
@@ -53,6 +60,23 @@
</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">
@@ -61,7 +85,7 @@
<h1>SirenDelegate</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SirenDelegate</span><span class="p">:</span> <span class="kd">class</span></code></pre>
<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>
@@ -74,9 +98,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate24sirenDidShowUpdateDialogFT9alertTypeOCS_5Siren9AlertType_T_"></a>
<a name="/s:5Siren0A8DelegateP24sirenDidShowUpdateDialogyA2AC9AlertTypeO05alertI0_tF"></a>
<a name="//apple_ref/swift/Method/sirenDidShowUpdateDialog(alertType:)" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate24sirenDidShowUpdateDialogFT9alertTypeOCS_5Siren9AlertType_T_">sirenDidShowUpdateDialog(alertType:)</a>
<a class="token" href="#/s:5Siren0A8DelegateP24sirenDidShowUpdateDialogyA2AC9AlertTypeO05alertI0_tF">sirenDidShowUpdateDialog(alertType:)</a>
</code>
<span class="declaration-note">
Default implementation
@@ -98,7 +122,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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>
<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>
@@ -108,9 +132,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate26sirenUserDidLaunchAppStoreFT_T_"></a>
<a name="/s:5Siren0A8DelegateP26sirenUserDidLaunchAppStoreyyF"></a>
<a name="//apple_ref/swift/Method/sirenUserDidLaunchAppStore()" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate26sirenUserDidLaunchAppStoreFT_T_">sirenUserDidLaunchAppStore()</a>
<a class="token" href="#/s:5Siren0A8DelegateP26sirenUserDidLaunchAppStoreyyF">sirenUserDidLaunchAppStore()</a>
</code>
<span class="declaration-note">
Default implementation
@@ -132,7 +156,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">sirenUserDidLaunchAppStore</span><span class="p">()</span></code></pre>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidLaunchAppStore</span><span class="p">()</span></code></pre>
</div>
</div>
@@ -142,9 +166,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate23sirenUserDidSkipVersionFT_T_"></a>
<a name="/s:5Siren0A8DelegateP23sirenUserDidSkipVersionyyF"></a>
<a name="//apple_ref/swift/Method/sirenUserDidSkipVersion()" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate23sirenUserDidSkipVersionFT_T_">sirenUserDidSkipVersion()</a>
<a class="token" href="#/s:5Siren0A8DelegateP23sirenUserDidSkipVersionyyF">sirenUserDidSkipVersion()</a>
</code>
<span class="declaration-note">
Default implementation
@@ -166,7 +190,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">sirenUserDidSkipVersion</span><span class="p">()</span></code></pre>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidSkipVersion</span><span class="p">()</span></code></pre>
</div>
</div>
@@ -176,9 +200,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate18sirenUserDidCancelFT_T_"></a>
<a name="/s:5Siren0A8DelegateP18sirenUserDidCancelyyF"></a>
<a name="//apple_ref/swift/Method/sirenUserDidCancel()" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate18sirenUserDidCancelFT_T_">sirenUserDidCancel()</a>
<a class="token" href="#/s:5Siren0A8DelegateP18sirenUserDidCancelyyF">sirenUserDidCancel()</a>
</code>
<span class="declaration-note">
Default implementation
@@ -200,7 +224,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">sirenUserDidCancel</span><span class="p">()</span></code></pre>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidCancel</span><span class="p">()</span></code></pre>
</div>
</div>
@@ -210,9 +234,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate24sirenDidFailVersionCheckFT5errorCSo7NSError_T_"></a>
<a name="/s:5Siren0A8DelegateP24sirenDidFailVersionCheckys5Error_p5error_tF"></a>
<a name="//apple_ref/swift/Method/sirenDidFailVersionCheck(error:)" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate24sirenDidFailVersionCheckFT5errorCSo7NSError_T_">sirenDidFailVersionCheck(error:)</a>
<a class="token" href="#/s:5Siren0A8DelegateP24sirenDidFailVersionCheckys5Error_p5error_tF">sirenDidFailVersionCheck(error:)</a>
</code>
<span class="declaration-note">
Default implementation
@@ -234,7 +258,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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">NSError</span><span class="p">)</span></code></pre>
<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>
@@ -244,9 +268,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate36sirenDidDetectNewVersionWithoutAlertFT7messageSS_T_"></a>
<a name="//apple_ref/swift/Method/sirenDidDetectNewVersionWithoutAlert(message:)" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate36sirenDidDetectNewVersionWithoutAlertFT7messageSS_T_">sirenDidDetectNewVersionWithoutAlert(message:)</a>
<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
@@ -268,7 +292,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><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></code></pre>
<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>
@@ -278,9 +302,9 @@
<li class="item">
<div>
<code>
<a name="/s:FP5Siren13SirenDelegate27sirenLatestVersionInstalledFT_T_"></a>
<a name="/s:5Siren0A8DelegateP27sirenLatestVersionInstalledyyF"></a>
<a name="//apple_ref/swift/Method/sirenLatestVersionInstalled()" class="dashAnchor"></a>
<a class="token" href="#/s:FP5Siren13SirenDelegate27sirenLatestVersionInstalledFT_T_">sirenLatestVersionInstalled()</a>
<a class="token" href="#/s:5Siren0A8DelegateP27sirenLatestVersionInstalledyyF">sirenLatestVersionInstalled()</a>
</code>
<span class="declaration-note">
Default implementation
@@ -302,7 +326,7 @@
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">sirenLatestVersionInstalled</span><span class="p">()</span></code></pre>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenLatestVersionInstalled</span><span class="p">()</span></code></pre>
</div>
</div>
@@ -314,8 +338,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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
@@ -0,0 +1,184 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Structures Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Section/Structures" class="dashAnchor"></a>
<a title="Structures Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> 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%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>
<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>
</section>
</section>
<section id="footer">
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -0,0 +1,242 @@
<!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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -0,0 +1,239 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Constants Structure Reference</title>
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
<meta charset='utf-8'>
<script src="../../js/jquery.min.js" defer></script>
<script src="../../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Struct/Constants" class="dashAnchor"></a>
<a title="Constants Structure Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../../index.html"> 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" />
Constants Structure Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../../Classes/Siren.html">Siren</a>
</li>
<li class="nav-group-task">
<a href="../../Classes/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>Constants</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">Constants</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:5Siren0A14AlertMessagingV9ConstantsV8nextTimeSSvpZ"></a>
<a name="//apple_ref/swift/Variable/nextTime" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV8nextTimeSSvpZ">nextTime</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="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">nextTime</span><span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV9ConstantsV11skipVersionSSvpZ"></a>
<a name="//apple_ref/swift/Variable/skipVersion" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV11skipVersionSSvpZ">skipVersion</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="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">skipVersion</span><span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV9ConstantsV13updateMessageSSvpZ"></a>
<a name="//apple_ref/swift/Variable/updateMessage" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV13updateMessageSSvpZ">updateMessage</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="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">updateMessage</span><span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV9ConstantsV11updateTitleSSvpZ"></a>
<a name="//apple_ref/swift/Variable/updateTitle" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV11updateTitleSSvpZ">updateTitle</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="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">updateTitle</span><span class="p">:</span> <span class="kt">String</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A14AlertMessagingV9ConstantsV9updateNowSSvpZ"></a>
<a name="//apple_ref/swift/Variable/updateNow" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A14AlertMessagingV9ConstantsV9updateNowSSvpZ">updateNow</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="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">updateNow</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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -0,0 +1,136 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>SirenError 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/SirenError" class="dashAnchor"></a>
<a title="SirenError 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" />
SirenError 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>SirenError</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">SirenError</span> <span class="p">:</span> <span class="kt">LocalizedError</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:5Siren0A5ErrorV5KnownO"></a>
<a name="//apple_ref/swift/Enum/Known" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO">Known</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/Known.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">Known</span> <span class="p">:</span> <span class="kt">Error</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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -0,0 +1,369 @@
<!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>
<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>
<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>
<li class="item">
<div>
<code>
<a name="/s:5Siren0A5ErrorV5KnownO33appStoreDataRetrievalEmptyResultsA2EmF"></a>
<a name="//apple_ref/swift/Element/appStoreDataRetrievalEmptyResults" class="dashAnchor"></a>
<a class="token" href="#/s:5Siren0A5ErrorV5KnownO33appStoreDataRetrievalEmptyResultsA2EmF">appStoreDataRetrievalEmptyResults</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">appStoreDataRetrievalEmptyResults</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<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>
<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>
<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>
<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>
<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>
<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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -164,6 +164,11 @@ header {
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; }

Before

Width:  |  Height:  |  Size: 274 B

After

Width:  |  Height:  |  Size: 274 B

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,97 @@
<!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-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</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 one or more lines are too long
Binary file not shown.
BIN
View File
Binary file not shown.
@@ -1,336 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Siren 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="Siren Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">Siren Docs</a> (55% documented)</p>
<p class="header-right"><a href="https://github.com/artsabintsev/siren"><img src="img/gh.png"/>View on GitHub</a></p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">Siren Reference</a>
<img id="carat" src="img/carat.png" />
Siren 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="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/SirenDelegate.html">SirenDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<a href='#siren' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h1 id='siren'>Siren</h1>
<a href='#notify-users-when-a-new-version-of-your-app-is-available-and-prompt-them-to-upgrade' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='notify-users-when-a-new-version-of-your-app-is-available-and-prompt-them-to-upgrade'>Notify users when a new version of your app is available and prompt them to upgrade.</h3>
<a href='#a-href-https-dashboard-buddybuild-com-apps-58c4d0d85601d40100c5c51d-build-latest-branch-master-img-src-https-dashboard-buddybuild-com-api-statusimage-appid-58c4d0d85601d40100c5c51d-branch-master-build-latest-alt-buddybuild-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-v-siren-svg-alt-cocoapods-a-a-href-https-github-com-carthage-carthage-img-src-https-img-shields-io-badge-carthage-compatible-4bc51d-svg-style-flat-alt-carthage-compatible-a-a-href-https-swift-org-package-manager-img-src-https-img-shields-io-badge-swiftpm-compatible-brightgreen-svg-alt-swiftpm-compatible-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-dt-siren-svg-alt-cocoapods-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-dm-siren-svg-alt-cocoapods-a' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='a-href-https-dashboard-buddybuild-com-apps-58c4d0d85601d40100c5c51d-build-latest-branch-master-img-src-https-dashboard-buddybuild-com-api-statusimage-appid-58c4d0d85601d40100c5c51d-branch-master-build-latest-alt-buddybuild-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-v-siren-svg-alt-cocoapods-a-a-href-https-github-com-carthage-carthage-img-src-https-img-shields-io-badge-carthage-compatible-4bc51d-svg-style-flat-alt-carthage-compatible-a-a-href-https-swift-org-package-manager-img-src-https-img-shields-io-badge-swiftpm-compatible-brightgreen-svg-alt-swiftpm-compatible-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-dt-siren-svg-alt-cocoapods-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-dm-siren-svg-alt-cocoapods-a'><a href="https://dashboard.buddybuild.com/apps/58c4d0d85601d40100c5c51d/build/latest?branch=master"><img src="https://dashboard.buddybuild.com/api/statusImage?appID=58c4d0d85601d40100c5c51d&branch=master&build=latest" alt="BuddyBuild"></a> <a href="https://cocoapods.org/pods/Siren"><img src="https://img.shields.io/cocoapods/v/Siren.svg" alt="CocoaPods"></a> <a href="https://github.com/Carthage/Carthage"><img src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat" alt="Carthage Compatible"></a> <a href="https://swift.org/package-manager/"><img src="https://img.shields.io/badge/SwiftPM-Compatible-brightgreen.svg" alt="SwiftPM Compatible"></a> <a href="https://cocoapods.org/pods/Siren"><img src="https://img.shields.io/cocoapods/dt/Siren.svg" alt="CocoaPods"></a> <a href="https://cocoapods.org/pods/Siren"><img src="https://img.shields.io/cocoapods/dm/Siren.svg" alt="CocoaPods"></a></h2>
<a href='#table-of-contents' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='table-of-contents'>Table of Contents</h2>
<ul>
<li><a href="https://github.com/ArtSabintsev/Siren#about">About</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#features">Features</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#screenshots">Screenshots</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#installation-instructions">Installation Instructions</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#example-code">Example Code</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#granular-version-update-management">Granular/Differentiated Version Management</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#optional-delegate-and-delegate-methods">Delegates (Optional)</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#localization">Localization</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#device-compatibility">Device Compatibility</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#testing-siren">Testing Siren</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#app-store-submissions">App Store Review &amp; Submissions</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#words-of-caution">Words of Caution</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#ports">Ports</a></li>
</ul>
<a href='#a-href-https-github-com-artsabintsev-siren-created-and-maintained-by-attribution-a' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='a-href-https-github-com-artsabintsev-siren-created-and-maintained-by-attribution-a'>- <a href="https://github.com/ArtSabintsev/Siren#created-and-maintained-by">Attribution</a></h2>
<a href='#about' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='about'>About</h2>
<p><strong>Siren</strong> checks a user&rsquo;s currently installed version of your iOS app against the version that is currently available in the App Store.</p>
<p>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.</p>
<ul>
<li>Siren is built to work with the <a href="http://semver.org/"><strong>Semantic Versioning</strong></a> system.
<ul>
<li>Semantic Versioning is a three number versioning system (e.g., 1.0.0)</li>
<li>Siren also supports two-number versioning (e.g., 1.0) and four-number versioning (e.g., 1.0.0.0)</li>
</ul></li>
<li>Siren is actively maintained by <a href="http://github.com/ArtSabintsev"><strong>Arthur Sabintsev</strong></a> and <a href="http://twitter.com/getaaron"><strong>Aaron Brager</strong></a></li>
</ul>
<a href='#readme-translations' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='readme-translations'>README Translations</h3>
<ul>
<li><a href="README.zh_CN.md"><strong>简体中文</strong></a> (by <a href="http://www.jianshu.com/u/d8bbc4831623"><strong>Daniel Hu</strong></a>)</li>
</ul>
<a href='#features' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='features'>Features</h2>
<ul>
<li>[x] CocoaPods Support</li>
<li>[x] Carthage Support</li>
<li>[x] Swift Package Manager Support</li>
<li>[x] Localized for 30+ languages (see <a href="https://github.com/ArtSabintsev/Siren#localization">Localization</a>)</li>
<li>[x] Pre-Update Device Compatibility Check (see <a href="https://github.com/ArtSabintsev/Siren#device-compatibility">Device Compatibility</a></li>
<li>[x] Three types of alerts (see <a href="https://github.com/ArtSabintsev/Siren#screenshots">Screenshots</a>)</li>
<li>[x] Optional delegate methods (see <a href="https://github.com/ArtSabintsev/Siren#optional-delegate-and-delegate-methods">Delegates (Optional)</a></li>
<li>[x] Unit Tests</li>
<li>[x] Documentation can be found at <a href="http://sabintsev.com/Siren">http://sabintsev.com/Siren</a>.</li>
</ul>
<a href='#screenshots' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='screenshots'>Screenshots</h2>
<ul>
<li>The <strong>left picture</strong> forces the user to update the app.</li>
<li>The <strong>center picture</strong> gives the user the option to update the app.</li>
<li>The <strong>right picture</strong> gives the user the option to skip the current update.</li>
<li>These options are controlled by the <code>SirenAlertType</code> enum.</li>
</ul>
<p><img src="https://github.com/ArtSabintsev/Siren/blob/master/Assets/picForcedUpdate.png?raw=true" height="480"><img src="https://github.com/ArtSabintsev/Siren/blob/master/Assets/picOptionalUpdate.png?raw=true" height="480"><img src="https://github.com/ArtSabintsev/Siren/blob/master/Assets/picSkippedUpdate.png?raw=true" height="480"></p>
<a href='#installation-instructions' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='installation-instructions'>Installation Instructions</h2>
<a href='#cocoapods' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='cocoapods'>CocoaPods</h3>
<p>For Swift 3 support:
<code>ruby
pod &#39;Siren&#39;
</code></p>
<p>For Swift 2.3 support:
<code>ruby
pod &#39;Siren&#39;, :git =&gt; &#39;https://github.com/ArtSabintsev/Siren.git&#39;, :branch =&gt; &#39;swift2.3&#39;
</code></p>
<p>For Swift 2.2 support:
<code>ruby
pod &#39;Siren&#39;, &#39;0.9.5&#39;
</code></p>
<a href='#carthage' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='carthage'>Carthage</h3>
<p>For Swift 3 support:</p>
<pre class="highlight swift"><code><span class="n">github</span> <span class="s">"ArtSabintsev/Siren"</span>
</code></pre>
<p>For Swift 2.3 support:</p>
<pre class="highlight swift"><code><span class="n">github</span> <span class="s">"ArtSabintsev/Siren"</span> <span class="s">"swift2.3"</span>
</code></pre>
<a href='#swift-package-manager' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='swift-package-manager'>Swift Package Manager</h3>
<pre class="highlight swift"><code><span class="o">.</span><span class="kt">Package</span><span class="p">(</span><span class="nv">url</span><span class="p">:</span> <span class="s">"https://github.com/ArtSabintsev/Siren.git"</span><span class="p">,</span> <span class="nv">majorVersion</span><span class="p">:</span> <span class="mi">2</span><span class="p">)</span>
</code></pre>
<a href='#example-code' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='example-code'>Example Code</h2>
<p>Below is some commented sample code. Adapt this to meet your app&rsquo;s needs.</p>
<p>For a full list of optional settings/preferences, please refer to <a href="https://github.com/ArtSabintsev/Siren/blob/master/SirenExample/SirenExample/AppDelegate.swift">https://github.com/ArtSabintsev/Siren/blob/master/SirenExample/SirenExample/AppDelegate.swift</a> in the Sample Project.</p>
<pre class="highlight plaintext"><code>func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -&gt; Bool {
/* Siren code should go below window?.makeKeyAndVisible() */
// Siren is a singleton
let siren = Siren.shared
// Optional: Defaults to .Option
siren.alertType = &lt;#SirenAlertType_Enum_Value#&gt;
// 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.
siren.checkVersion(checkType: .immediately)
return true
}
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(_:). */
Siren.shared.checkVersion(checkType: .daily)
}
func applicationWillEnterForeground(application: UIApplication) {
/*
Useful if user returns to your app from the background after being sent to the
App Store, but doesn't update their app before coming back to your app.
ONLY USE WITH SirenAlertType.Force
*/
Siren.shared.checkVersion(checkType: .immediately)
}
</code></pre>
<p>And you&rsquo;re all set!</p>
<a href='#prompting-for-updates-without-alerts' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='prompting-for-updates-without-alerts'>Prompting for Updates without Alerts</h3>
<p>Some developers may want to display a less obtrusive custom interface, like a banner or small icon. To accomplish this, you can disable alert presentation by doing the following:</p>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">application</span><span class="p">(</span><span class="nv">application</span><span class="p">:</span> <span class="kt">UIApplication</span><span class="p">,</span> <span class="n">didFinishLaunchingWithOptions</span> <span class="nv">launchOptions</span><span class="p">:</span> <span class="p">[</span><span class="kt">NSObject</span><span class="p">:</span> <span class="kt">AnyObject</span><span class="p">]?)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span> <span class="p">{</span>
<span class="o">...</span>
<span class="n">siren</span><span class="o">.</span><span class="n">delegate</span> <span class="o">=</span> <span class="k">self</span>
<span class="n">siren</span><span class="o">.</span><span class="n">alertType</span> <span class="o">=</span> <span class="o">.</span><span class="kt">None</span>
<span class="o">...</span>
<span class="p">}</span>
<span class="kd">extension</span> <span class="kt">AppDelegate</span><span class="p">:</span> <span class="kt">SirenDelegate</span> <span class="p">{</span>
<span class="c1">// Returns a localized message to this delegate method upon performing a successful version check</span>
<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="p">{</span>
<span class="nf">print</span><span class="p">(</span><span class="s">"</span><span class="se">\(</span><span class="n">message</span><span class="se">)</span><span class="s">"</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre>
<p>Siren will call the <code>sirenDidDetectNewVersionWithoutAlert(message: String)</code> delegate method, passing a localized, suggested update string suitable for display. Implement this method to display your own messaging, optionally using <code>message</code>.</p>
<a href='#granular-version-update-management' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='granular-version-update-management'>Granular Version Update Management</h2>
<p>If you would like to set a different type of alert for revision, patch, minor, and/or major updates, simply add one or all of the following <em>optional</em> lines to your setup <em>before</em> calling the <code>checkVersion()</code> method:</p>
<pre class="highlight swift"><code> <span class="cm">/* Siren defaults to SirenAlertType.Option for all updates */</span>
<span class="n">siren</span><span class="o">.</span><span class="n">shared</span><span class="o">.</span><span class="n">revisionUpdateAlertType</span> <span class="o">=</span> <span class="o">&lt;</span><span class="err">#</span><span class="kt">SirenAlertType_Enum_Value</span><span class="err">#</span><span class="o">&gt;</span>
<span class="n">siren</span><span class="o">.</span><span class="n">shared</span><span class="o">.</span><span class="n">patchUpdateAlertType</span> <span class="o">=</span> <span class="o">&lt;</span><span class="err">#</span><span class="kt">SirenAlertType_Enum_Value</span><span class="err">#</span><span class="o">&gt;</span>
<span class="n">siren</span><span class="o">.</span><span class="n">shared</span><span class="o">.</span><span class="n">minorUpdateAlertType</span> <span class="o">=</span> <span class="o">&lt;</span><span class="err">#</span><span class="kt">SirenAlertType_Enum_Value</span><span class="err">#</span><span class="o">&gt;</span>
<span class="n">siren</span><span class="o">.</span><span class="n">shared</span><span class="o">.</span><span class="n">majorUpdateAlertType</span> <span class="o">=</span> <span class="o">&lt;</span><span class="err">#</span><span class="kt">SirenAlertType_Enum_Value</span><span class="err">#</span><span class="o">&gt;</span>
</code></pre>
<a href='#optional-delegate-and-delegate-methods' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='optional-delegate-and-delegate-methods'>Optional Delegate and Delegate Methods</h2>
<p>Six delegate methods allow you to handle or track the user&rsquo;s behavior. Each method has a default, empty implementation, effectively making each of these methods optional.</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="kd">class</span> <span class="p">{</span>
<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">SirenAlertType</span><span class="p">)</span> <span class="c1">// User presented with update dialog</span>
<span class="kd">func</span> <span class="nf">sirenUserDidLaunchAppStore</span><span class="p">()</span> <span class="c1">// User did click on button that launched App Store.app</span>
<span class="kd">func</span> <span class="nf">sirenUserDidSkipVersion</span><span class="p">()</span> <span class="c1">// User did click on button that skips version update</span>
<span class="kd">func</span> <span class="nf">sirenUserDidCancel</span><span class="p">()</span> <span class="c1">// User did click on button that cancels update dialog</span>
<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">NSError</span><span class="p">)</span> <span class="c1">// Siren failed to perform version check (may return system-level error)</span>
<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="c1">// Siren performed version check and did not display alert</span>
<span class="p">}</span>
</code></pre>
<a href='#localization' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='localization'>Localization</h2>
<p>Siren is localized for
- Arabic
- Armenian
- Basque
- Chinese (Simplified and Traditional)
- Danish
- Dutch
- English
- Estonian
- Finnish
- French
- German
- Greek
- Hebrew
- Hungarian
- Indonesian
- Italian
- Japanese
- Korean
- Latvian
- Lithuanian
- Malay
- Norwegian (Bokmål)
- Polish
- Portuguese (Brazil and Portugal)
- Russian
- Serbian (Cyrillic and Latin)
- Slovenian
- Swedish
- Spanish
- Thai
- Turkish
- Vietnamese</p>
<p>You may want the update dialog to <em>always</em> appear in a certain language, ignoring iOS&rsquo;s language setting (e.g. apps released in a specific country).</p>
<p>You can enable it like so:</p>
<pre class="highlight swift"><code><span class="kt">Siren</span><span class="o">.</span><span class="n">shared</span><span class="o">.</span><span class="n">forceLanguageLocalization</span> <span class="o">=</span> <span class="kt">SirenLanguageType</span><span class="o">.&lt;</span><span class="err">#</span><span class="kt">SirenLanguageType_Enum_Value</span><span class="err">#</span><span class="o">&gt;</span>
</code></pre>
<a href='#device-compatibility' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='device-compatibility'>Device Compatibility</h2>
<p>If an app update is available, Siren checks to make sure that the version of iOS on the user&rsquo;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 <em>false positive</em> case regarding app updating.</p>
<a href='#testing-siren' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='testing-siren'>Testing Siren</h2>
<p>Temporarily change the version string in Xcode (within the <code>.xcodeproj</code>) to an older version than the one that&rsquo;s currently available in the App Store. Afterwards, build and run your app, and you should see the alert.</p>
<p>If you currently don&rsquo;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 <a href="https://itunes.apple.com/us/app/itunes-connect/id376771144?mt=8">iTunes Connect Mobile</a> app&rsquo;s bundleID: <code>com.apple.itunesconnect.mobile</code>.</p>
<p>For your convenience, you may turn on debugging statements by setting <code>self.debugEnabled = true</code> before calling the <code>checkVersion()</code> method.</p>
<a href='#app-store-submissions' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='app-store-submissions'>App Store Submissions</h2>
<p>The App Store reviewer will <strong>not</strong> see the alert. The version in the App Store will always be older than the version being reviewed.</p>
<a href='#words-of-caution' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='words-of-caution'>Words of Caution</h2>
<p>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 release, while no new binary is made available for download via the App Store. It is for this reason, I caution developers to not use the <code>Force</code> option unless you are controlling the <code>Force</code> option with a remote configuration file (e.g., enabling Siren remotely only after you have guaranteed that the app has propagated to the App Store).</p>
<p>Also, in even rarer situations, the iTunes JSON may fluctuate between multiple versions of your app shortly after pushing out a new version. This is extremely rare, and has only been reported once in the five years that Siren and Harpy have been around.</p>
<a href='#ports' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='ports'>Ports</h2>
<ul>
<li><strong>Objective-C (iOS)</strong>
<ul>
<li><a href="http://github.com/ArtSabintsev/Harpy"><strong>Harpy</strong></a></li>
<li>Siren was ported <em>from</em> Harpy, as Siren and Harpy are maintained by the same developer.</li>
</ul></li>
<li><strong>Java (Android)</strong>
<ul>
<li><a href="https://github.com/eggheadgames/Siren"><strong>Egghead Games&rsquo; Siren library</strong></a></li>
<li>The Siren Swift library inspired the Java library.</li>
</ul></li>
<li><strong>React Native (iOS)</strong>
<ul>
<li><a href="https://github.com/GantMan/react-native-siren"><strong>Gant Laborde&rsquo;s Siren library</strong></a></li>
<li>The Siren Swift library inspired the React Native library.</li>
</ul></li>
</ul>
<a href='#created-and-maintained-by' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='created-and-maintained-by'>Created and maintained by</h2>
<p><a href="http://www.sabintsev.com/">Arthur Ariel Sabintsev</a> &amp; <a href="http://twitter.com/getaaron">Aaron Brager</a></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.7.5</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 one or more lines are too long
@@ -1,257 +0,0 @@
{
"warnings": [
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 514,
"symbol": "Siren.LanguageType.Arabic",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 515,
"symbol": "Siren.LanguageType.Armenian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 516,
"symbol": "Siren.LanguageType.Basque",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 517,
"symbol": "Siren.LanguageType.ChineseSimplified",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 518,
"symbol": "Siren.LanguageType.ChineseTraditional",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 519,
"symbol": "Siren.LanguageType.Croatian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 520,
"symbol": "Siren.LanguageType.Danish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 521,
"symbol": "Siren.LanguageType.Dutch",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 522,
"symbol": "Siren.LanguageType.English",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 523,
"symbol": "Siren.LanguageType.Estonian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 524,
"symbol": "Siren.LanguageType.Finnish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 525,
"symbol": "Siren.LanguageType.French",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 526,
"symbol": "Siren.LanguageType.German",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 527,
"symbol": "Siren.LanguageType.Greek",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 528,
"symbol": "Siren.LanguageType.Hebrew",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 529,
"symbol": "Siren.LanguageType.Hungarian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 530,
"symbol": "Siren.LanguageType.Indonesian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 531,
"symbol": "Siren.LanguageType.Italian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 532,
"symbol": "Siren.LanguageType.Japanese",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 533,
"symbol": "Siren.LanguageType.Korean",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 534,
"symbol": "Siren.LanguageType.Latvian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 535,
"symbol": "Siren.LanguageType.Lithuanian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 536,
"symbol": "Siren.LanguageType.Malay",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 537,
"symbol": "Siren.LanguageType.Norwegian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 538,
"symbol": "Siren.LanguageType.Polish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 539,
"symbol": "Siren.LanguageType.PortugueseBrazil",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 540,
"symbol": "Siren.LanguageType.PortuguesePortugal",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 541,
"symbol": "Siren.LanguageType.Russian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 542,
"symbol": "Siren.LanguageType.SerbianCyrillic",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 543,
"symbol": "Siren.LanguageType.SerbianLatin",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 544,
"symbol": "Siren.LanguageType.Slovenian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 545,
"symbol": "Siren.LanguageType.Spanish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 546,
"symbol": "Siren.LanguageType.Swedish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 547,
"symbol": "Siren.LanguageType.Thai",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 548,
"symbol": "Siren.LanguageType.Turkish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 549,
"symbol": "Siren.LanguageType.Vietnamese",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
}
],
"source_directory": "/Users/Arthur/Documents/oss/siren"
}
Binary file not shown.
+33 -272
View File
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Siren Reference</title>
<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'>
@@ -10,18 +10,17 @@
</head>
<body>
<a title="Siren Reference"></a>
<a title=" Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">Siren Docs</a> (55% 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"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">Siren Reference</a>
<a href="index.html"> Reference</a>
<img id="carat" src="img/carat.png" />
Siren Reference
Reference
</p>
</div>
<div class="content-wrapper">
@@ -44,6 +43,14 @@
</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">
@@ -52,282 +59,36 @@
</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">
<a href='#siren' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h1 id='siren'>Siren</h1>
<a href='#notify-users-when-a-new-version-of-your-app-is-available-and-prompt-them-to-upgrade' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='notify-users-when-a-new-version-of-your-app-is-available-and-prompt-them-to-upgrade'>Notify users when a new version of your app is available and prompt them to upgrade.</h3>
<a href='#a-href-https-dashboard-buddybuild-com-apps-58c4d0d85601d40100c5c51d-build-latest-branch-master-img-src-https-dashboard-buddybuild-com-api-statusimage-appid-58c4d0d85601d40100c5c51d-branch-master-build-latest-alt-buddybuild-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-v-siren-svg-alt-cocoapods-a-a-href-https-github-com-carthage-carthage-img-src-https-img-shields-io-badge-carthage-compatible-4bc51d-svg-style-flat-alt-carthage-compatible-a-a-href-https-swift-org-package-manager-img-src-https-img-shields-io-badge-swiftpm-compatible-brightgreen-svg-alt-swiftpm-compatible-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-dt-siren-svg-alt-cocoapods-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-dm-siren-svg-alt-cocoapods-a' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='a-href-https-dashboard-buddybuild-com-apps-58c4d0d85601d40100c5c51d-build-latest-branch-master-img-src-https-dashboard-buddybuild-com-api-statusimage-appid-58c4d0d85601d40100c5c51d-branch-master-build-latest-alt-buddybuild-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-v-siren-svg-alt-cocoapods-a-a-href-https-github-com-carthage-carthage-img-src-https-img-shields-io-badge-carthage-compatible-4bc51d-svg-style-flat-alt-carthage-compatible-a-a-href-https-swift-org-package-manager-img-src-https-img-shields-io-badge-swiftpm-compatible-brightgreen-svg-alt-swiftpm-compatible-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-dt-siren-svg-alt-cocoapods-a-a-href-https-cocoapods-org-pods-siren-img-src-https-img-shields-io-cocoapods-dm-siren-svg-alt-cocoapods-a'><a href="https://dashboard.buddybuild.com/apps/58c4d0d85601d40100c5c51d/build/latest?branch=master"><img src="https://dashboard.buddybuild.com/api/statusImage?appID=58c4d0d85601d40100c5c51d&branch=master&build=latest" alt="BuddyBuild"></a> <a href="https://cocoapods.org/pods/Siren"><img src="https://img.shields.io/cocoapods/v/Siren.svg" alt="CocoaPods"></a> <a href="https://github.com/Carthage/Carthage"><img src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat" alt="Carthage Compatible"></a> <a href="https://swift.org/package-manager/"><img src="https://img.shields.io/badge/SwiftPM-Compatible-brightgreen.svg" alt="SwiftPM Compatible"></a> <a href="https://cocoapods.org/pods/Siren"><img src="https://img.shields.io/cocoapods/dt/Siren.svg" alt="CocoaPods"></a> <a href="https://cocoapods.org/pods/Siren"><img src="https://img.shields.io/cocoapods/dm/Siren.svg" alt="CocoaPods"></a></h2>
<a href='#table-of-contents' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='table-of-contents'>Table of Contents</h2>
<ul>
<li><a href="https://github.com/ArtSabintsev/Siren#about">About</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#features">Features</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#screenshots">Screenshots</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#installation-instructions">Installation Instructions</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#example-code">Example Code</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#granular-version-update-management">Granular/Differentiated Version Management</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#optional-delegate-and-delegate-methods">Delegates (Optional)</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#localization">Localization</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#device-compatibility">Device Compatibility</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#testing-siren">Testing Siren</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#app-store-submissions">App Store Review &amp; Submissions</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#words-of-caution">Words of Caution</a></li>
<li><a href="https://github.com/ArtSabintsev/Siren#ports">Ports</a></li>
</ul>
<a href='#a-href-https-github-com-artsabintsev-siren-created-and-maintained-by-attribution-a' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='a-href-https-github-com-artsabintsev-siren-created-and-maintained-by-attribution-a'>- <a href="https://github.com/ArtSabintsev/Siren#created-and-maintained-by">Attribution</a></h2>
<a href='#about' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='about'>About</h2>
<p><strong>Siren</strong> checks a user&rsquo;s currently installed version of your iOS app against the version that is currently available in the App Store.</p>
<p>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.</p>
<ul>
<li>Siren is built to work with the <a href="http://semver.org/"><strong>Semantic Versioning</strong></a> system.
<ul>
<li>Semantic Versioning is a three number versioning system (e.g., 1.0.0)</li>
<li>Siren also supports two-number versioning (e.g., 1.0) and four-number versioning (e.g., 1.0.0.0)</li>
</ul></li>
<li>Siren is actively maintained by <a href="http://github.com/ArtSabintsev"><strong>Arthur Sabintsev</strong></a> and <a href="http://twitter.com/getaaron"><strong>Aaron Brager</strong></a></li>
</ul>
<a href='#readme-translations' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='readme-translations'>README Translations</h3>
<ul>
<li><a href="README.zh_CN.md"><strong>简体中文</strong></a> (by <a href="http://www.jianshu.com/u/d8bbc4831623"><strong>Daniel Hu</strong></a>)</li>
</ul>
<a href='#features' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='features'>Features</h2>
<ul>
<li>[x] CocoaPods Support</li>
<li>[x] Carthage Support</li>
<li>[x] Swift Package Manager Support</li>
<li>[x] Localized for 30+ languages (see <a href="https://github.com/ArtSabintsev/Siren#localization">Localization</a>)</li>
<li>[x] Pre-Update Device Compatibility Check (see <a href="https://github.com/ArtSabintsev/Siren#device-compatibility">Device Compatibility</a></li>
<li>[x] Three types of alerts (see <a href="https://github.com/ArtSabintsev/Siren#screenshots">Screenshots</a>)</li>
<li>[x] Optional delegate methods (see <a href="https://github.com/ArtSabintsev/Siren#optional-delegate-and-delegate-methods">Delegates (Optional)</a></li>
<li>[x] Unit Tests</li>
<li>[x] Documentation can be found at <a href="http://sabintsev.com/Siren">http://sabintsev.com/Siren</a>.</li>
</ul>
<a href='#screenshots' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='screenshots'>Screenshots</h2>
<ul>
<li>The <strong>left picture</strong> forces the user to update the app.</li>
<li>The <strong>center picture</strong> gives the user the option to update the app.</li>
<li>The <strong>right picture</strong> gives the user the option to skip the current update.</li>
<li>These options are controlled by the <code>SirenAlertType</code> enum.</li>
</ul>
<p><img src="https://github.com/ArtSabintsev/Siren/blob/master/Assets/picForcedUpdate.png?raw=true" height="480"><img src="https://github.com/ArtSabintsev/Siren/blob/master/Assets/picOptionalUpdate.png?raw=true" height="480"><img src="https://github.com/ArtSabintsev/Siren/blob/master/Assets/picSkippedUpdate.png?raw=true" height="480"></p>
<a href='#installation-instructions' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='installation-instructions'>Installation Instructions</h2>
<a href='#cocoapods' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='cocoapods'>CocoaPods</h3>
<p>For Swift 3 support:
<code>ruby
pod &#39;Siren&#39;
</code></p>
<p>For Swift 2.3 support:
<code>ruby
pod &#39;Siren&#39;, :git =&gt; &#39;https://github.com/ArtSabintsev/Siren.git&#39;, :branch =&gt; &#39;swift2.3&#39;
</code></p>
<p>For Swift 2.2 support:
<code>ruby
pod &#39;Siren&#39;, &#39;0.9.5&#39;
</code></p>
<a href='#carthage' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='carthage'>Carthage</h3>
<p>For Swift 3 support:</p>
<pre class="highlight swift"><code><span class="n">github</span> <span class="s">"ArtSabintsev/Siren"</span>
</code></pre>
<p>For Swift 2.3 support:</p>
<pre class="highlight swift"><code><span class="n">github</span> <span class="s">"ArtSabintsev/Siren"</span> <span class="s">"swift2.3"</span>
</code></pre>
<a href='#swift-package-manager' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='swift-package-manager'>Swift Package Manager</h3>
<pre class="highlight swift"><code><span class="o">.</span><span class="kt">Package</span><span class="p">(</span><span class="nv">url</span><span class="p">:</span> <span class="s">"https://github.com/ArtSabintsev/Siren.git"</span><span class="p">,</span> <span class="nv">majorVersion</span><span class="p">:</span> <span class="mi">2</span><span class="p">)</span>
</code></pre>
<a href='#example-code' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='example-code'>Example Code</h2>
<p>Below is some commented sample code. Adapt this to meet your app&rsquo;s needs.</p>
<p>For a full list of optional settings/preferences, please refer to <a href="https://github.com/ArtSabintsev/Siren/blob/master/SirenExample/SirenExample/AppDelegate.swift">https://github.com/ArtSabintsev/Siren/blob/master/SirenExample/SirenExample/AppDelegate.swift</a> in the Sample Project.</p>
<pre class="highlight plaintext"><code>func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -&gt; Bool {
/* Siren code should go below window?.makeKeyAndVisible() */
// Siren is a singleton
let siren = Siren.shared
// Optional: Defaults to .Option
siren.alertType = &lt;#SirenAlertType_Enum_Value#&gt;
// 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.
siren.checkVersion(checkType: .immediately)
return true
}
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(_:). */
Siren.shared.checkVersion(checkType: .daily)
}
func applicationWillEnterForeground(application: UIApplication) {
/*
Useful if user returns to your app from the background after being sent to the
App Store, but doesn't update their app before coming back to your app.
ONLY USE WITH SirenAlertType.Force
*/
Siren.shared.checkVersion(checkType: .immediately)
}
</code></pre>
<p>And you&rsquo;re all set!</p>
<a href='#prompting-for-updates-without-alerts' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='prompting-for-updates-without-alerts'>Prompting for Updates without Alerts</h3>
<p>Some developers may want to display a less obtrusive custom interface, like a banner or small icon. To accomplish this, you can disable alert presentation by doing the following:</p>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">application</span><span class="p">(</span><span class="nv">application</span><span class="p">:</span> <span class="kt">UIApplication</span><span class="p">,</span> <span class="n">didFinishLaunchingWithOptions</span> <span class="nv">launchOptions</span><span class="p">:</span> <span class="p">[</span><span class="kt">NSObject</span><span class="p">:</span> <span class="kt">AnyObject</span><span class="p">]?)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span> <span class="p">{</span>
<span class="o">...</span>
<span class="n">siren</span><span class="o">.</span><span class="n">delegate</span> <span class="o">=</span> <span class="k">self</span>
<span class="n">siren</span><span class="o">.</span><span class="n">alertType</span> <span class="o">=</span> <span class="o">.</span><span class="kt">None</span>
<span class="o">...</span>
<span class="p">}</span>
<span class="kd">extension</span> <span class="kt">AppDelegate</span><span class="p">:</span> <span class="kt">SirenDelegate</span> <span class="p">{</span>
<span class="c1">// Returns a localized message to this delegate method upon performing a successful version check</span>
<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="p">{</span>
<span class="nf">print</span><span class="p">(</span><span class="s">"</span><span class="se">\(</span><span class="n">message</span><span class="se">)</span><span class="s">"</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre>
<p>Siren will call the <code>sirenDidDetectNewVersionWithoutAlert(message: String)</code> delegate method, passing a localized, suggested update string suitable for display. Implement this method to display your own messaging, optionally using <code>message</code>.</p>
<a href='#granular-version-update-management' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='granular-version-update-management'>Granular Version Update Management</h2>
<p>If you would like to set a different type of alert for revision, patch, minor, and/or major updates, simply add one or all of the following <em>optional</em> lines to your setup <em>before</em> calling the <code>checkVersion()</code> method:</p>
<pre class="highlight swift"><code> <span class="cm">/* Siren defaults to SirenAlertType.Option for all updates */</span>
<span class="n">siren</span><span class="o">.</span><span class="n">shared</span><span class="o">.</span><span class="n">revisionUpdateAlertType</span> <span class="o">=</span> <span class="o">&lt;</span><span class="err">#</span><span class="kt">SirenAlertType_Enum_Value</span><span class="err">#</span><span class="o">&gt;</span>
<span class="n">siren</span><span class="o">.</span><span class="n">shared</span><span class="o">.</span><span class="n">patchUpdateAlertType</span> <span class="o">=</span> <span class="o">&lt;</span><span class="err">#</span><span class="kt">SirenAlertType_Enum_Value</span><span class="err">#</span><span class="o">&gt;</span>
<span class="n">siren</span><span class="o">.</span><span class="n">shared</span><span class="o">.</span><span class="n">minorUpdateAlertType</span> <span class="o">=</span> <span class="o">&lt;</span><span class="err">#</span><span class="kt">SirenAlertType_Enum_Value</span><span class="err">#</span><span class="o">&gt;</span>
<span class="n">siren</span><span class="o">.</span><span class="n">shared</span><span class="o">.</span><span class="n">majorUpdateAlertType</span> <span class="o">=</span> <span class="o">&lt;</span><span class="err">#</span><span class="kt">SirenAlertType_Enum_Value</span><span class="err">#</span><span class="o">&gt;</span>
</code></pre>
<a href='#optional-delegate-and-delegate-methods' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='optional-delegate-and-delegate-methods'>Optional Delegate and Delegate Methods</h2>
<p>Six delegate methods allow you to handle or track the user&rsquo;s behavior. Each method has a default, empty implementation, effectively making each of these methods optional.</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="kd">class</span> <span class="p">{</span>
<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">SirenAlertType</span><span class="p">)</span> <span class="c1">// User presented with update dialog</span>
<span class="kd">func</span> <span class="nf">sirenUserDidLaunchAppStore</span><span class="p">()</span> <span class="c1">// User did click on button that launched App Store.app</span>
<span class="kd">func</span> <span class="nf">sirenUserDidSkipVersion</span><span class="p">()</span> <span class="c1">// User did click on button that skips version update</span>
<span class="kd">func</span> <span class="nf">sirenUserDidCancel</span><span class="p">()</span> <span class="c1">// User did click on button that cancels update dialog</span>
<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">NSError</span><span class="p">)</span> <span class="c1">// Siren failed to perform version check (may return system-level error)</span>
<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="c1">// Siren performed version check and did not display alert</span>
<span class="p">}</span>
</code></pre>
<a href='#localization' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='localization'>Localization</h2>
<p>Siren is localized for
- Arabic
- Armenian
- Basque
- Chinese (Simplified and Traditional)
- Danish
- Dutch
- English
- Estonian
- Finnish
- French
- German
- Greek
- Hebrew
- Hungarian
- Indonesian
- Italian
- Japanese
- Korean
- Latvian
- Lithuanian
- Malay
- Norwegian (Bokmål)
- Polish
- Portuguese (Brazil and Portugal)
- Russian
- Serbian (Cyrillic and Latin)
- Slovenian
- Swedish
- Spanish
- Thai
- Turkish
- Vietnamese</p>
<p>You may want the update dialog to <em>always</em> appear in a certain language, ignoring iOS&rsquo;s language setting (e.g. apps released in a specific country).</p>
<p>You can enable it like so:</p>
<pre class="highlight swift"><code><span class="kt">Siren</span><span class="o">.</span><span class="n">shared</span><span class="o">.</span><span class="n">forceLanguageLocalization</span> <span class="o">=</span> <span class="kt">SirenLanguageType</span><span class="o">.&lt;</span><span class="err">#</span><span class="kt">SirenLanguageType_Enum_Value</span><span class="err">#</span><span class="o">&gt;</span>
</code></pre>
<a href='#device-compatibility' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='device-compatibility'>Device Compatibility</h2>
<p>If an app update is available, Siren checks to make sure that the version of iOS on the user&rsquo;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 <em>false positive</em> case regarding app updating.</p>
<a href='#testing-siren' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='testing-siren'>Testing Siren</h2>
<p>Temporarily change the version string in Xcode (within the <code>.xcodeproj</code>) to an older version than the one that&rsquo;s currently available in the App Store. Afterwards, build and run your app, and you should see the alert.</p>
<p>If you currently don&rsquo;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 <a href="https://itunes.apple.com/us/app/itunes-connect/id376771144?mt=8">iTunes Connect Mobile</a> app&rsquo;s bundleID: <code>com.apple.itunesconnect.mobile</code>.</p>
<p>For your convenience, you may turn on debugging statements by setting <code>self.debugEnabled = true</code> before calling the <code>checkVersion()</code> method.</p>
<a href='#app-store-submissions' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='app-store-submissions'>App Store Submissions</h2>
<p>The App Store reviewer will <strong>not</strong> see the alert. The version in the App Store will always be older than the version being reviewed.</p>
<a href='#words-of-caution' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='words-of-caution'>Words of Caution</h2>
<p>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 release, while no new binary is made available for download via the App Store. It is for this reason, I caution developers to not use the <code>Force</code> option unless you are controlling the <code>Force</code> option with a remote configuration file (e.g., enabling Siren remotely only after you have guaranteed that the app has propagated to the App Store).</p>
<p>Also, in even rarer situations, the iTunes JSON may fluctuate between multiple versions of your app shortly after pushing out a new version. This is extremely rare, and has only been reported once in the five years that Siren and Harpy have been around.</p>
<a href='#ports' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='ports'>Ports</h2>
<ul>
<li><strong>Objective-C (iOS)</strong>
<ul>
<li><a href="http://github.com/ArtSabintsev/Harpy"><strong>Harpy</strong></a></li>
<li>Siren was ported <em>from</em> Harpy, as Siren and Harpy are maintained by the same developer.</li>
</ul></li>
<li><strong>Java (Android)</strong>
<ul>
<li><a href="https://github.com/eggheadgames/Siren"><strong>Egghead Games&rsquo; Siren library</strong></a></li>
<li>The Siren Swift library inspired the Java library.</li>
</ul></li>
<li><strong>React Native (iOS)</strong>
<ul>
<li><a href="https://github.com/GantMan/react-native-siren"><strong>Gant Laborde&rsquo;s Siren library</strong></a></li>
<li>The Siren Swift library inspired the React Native library.</li>
</ul></li>
</ul>
<a href='#created-and-maintained-by' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='created-and-maintained-by'>Created and maintained by</h2>
<p><a href="http://www.sabintsev.com/">Arthur Ariel Sabintsev</a> &amp; <a href="http://twitter.com/getaaron">Aaron Brager</a></p>
<h3 id='authors' class='heading'>Authors</h3>
</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.7.5</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
<p>&copy; 2018 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2018-04-23)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.2</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
+1 -1
View File
File diff suppressed because one or more lines are too long
+2 -253
View File
@@ -1,257 +1,6 @@
{
"warnings": [
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 514,
"symbol": "Siren.LanguageType.Arabic",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 515,
"symbol": "Siren.LanguageType.Armenian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 516,
"symbol": "Siren.LanguageType.Basque",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 517,
"symbol": "Siren.LanguageType.ChineseSimplified",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 518,
"symbol": "Siren.LanguageType.ChineseTraditional",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 519,
"symbol": "Siren.LanguageType.Croatian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 520,
"symbol": "Siren.LanguageType.Danish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 521,
"symbol": "Siren.LanguageType.Dutch",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 522,
"symbol": "Siren.LanguageType.English",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 523,
"symbol": "Siren.LanguageType.Estonian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 524,
"symbol": "Siren.LanguageType.Finnish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 525,
"symbol": "Siren.LanguageType.French",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 526,
"symbol": "Siren.LanguageType.German",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 527,
"symbol": "Siren.LanguageType.Greek",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 528,
"symbol": "Siren.LanguageType.Hebrew",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 529,
"symbol": "Siren.LanguageType.Hungarian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 530,
"symbol": "Siren.LanguageType.Indonesian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 531,
"symbol": "Siren.LanguageType.Italian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 532,
"symbol": "Siren.LanguageType.Japanese",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 533,
"symbol": "Siren.LanguageType.Korean",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 534,
"symbol": "Siren.LanguageType.Latvian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 535,
"symbol": "Siren.LanguageType.Lithuanian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 536,
"symbol": "Siren.LanguageType.Malay",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 537,
"symbol": "Siren.LanguageType.Norwegian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 538,
"symbol": "Siren.LanguageType.Polish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 539,
"symbol": "Siren.LanguageType.PortugueseBrazil",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 540,
"symbol": "Siren.LanguageType.PortuguesePortugal",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 541,
"symbol": "Siren.LanguageType.Russian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 542,
"symbol": "Siren.LanguageType.SerbianCyrillic",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 543,
"symbol": "Siren.LanguageType.SerbianLatin",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 544,
"symbol": "Siren.LanguageType.Slovenian",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 545,
"symbol": "Siren.LanguageType.Spanish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 546,
"symbol": "Siren.LanguageType.Swedish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 547,
"symbol": "Siren.LanguageType.Thai",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 548,
"symbol": "Siren.LanguageType.Turkish",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
},
{
"file": "/Users/Arthur/Documents/oss/siren/Sources/Siren.swift",
"line": 549,
"symbol": "Siren.LanguageType.Vietnamese",
"symbol_kind": "source.lang.swift.decl.enumelement",
"warning": "undocumented"
}
],
"source_directory": "/Users/Arthur/Documents/oss/siren"
"source_directory": "/Users/Arthur/Documents/oss/siren/SirenExample"
}