Compare commits
353 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6bd43afc0c | |||
| be49cd82ff | |||
| 06994a9408 | |||
| dc787a23d7 | |||
| a1d30353df | |||
| b19712d8da | |||
| 245fec5abc | |||
| 34683f71fb | |||
| 251c186ff3 | |||
| 5b18c1606c | |||
| e1257d9eb6 | |||
| 516e368e82 | |||
| de01c00d2e | |||
| eb278bc030 | |||
| 367092af09 | |||
| ef6d9ffa42 | |||
| 3375ae2552 | |||
| 234d558b31 | |||
| 3ff9fff4c4 | |||
| 7b2f451643 | |||
| eee3edc923 | |||
| d59fbf6e5f | |||
| f042d70762 | |||
| a034d842de | |||
| 7470bcd720 | |||
| 47b0b5381e | |||
| 5ef05950ed | |||
| 84e728d65c | |||
| dcfe7df5ea | |||
| a759b4b947 | |||
| 5f70d96b2c | |||
| f9bc4dfb4f | |||
| 6947b485a5 | |||
| cb1febdaf3 | |||
| 2284e63c36 | |||
| af16cbbe20 | |||
| 38f6d9d1b5 | |||
| f9abb391d0 | |||
| a22230707a | |||
| fc155c83d5 | |||
| 298155897f | |||
| c9fb91a3ed | |||
| 07aa46fd1d | |||
| 448657eefe | |||
| 195de7391e | |||
| 4b88e28a99 | |||
| a420119765 | |||
| 1e759f197b | |||
| 93113a4f2e | |||
| c7df74e190 | |||
| 2591c0b3d4 | |||
| e669f8f5c0 | |||
| 77caddd434 | |||
| 8a0c03627c | |||
| c8519ea5be | |||
| 5d8f4800e1 | |||
| 2a4e5ceda3 | |||
| a3c7cfa26d | |||
| 8477f5fbe6 | |||
| 3c036ce559 | |||
| 212e68969a | |||
| 56a834ee41 | |||
| df6174ba06 | |||
| a11b7f0600 | |||
| de971bf52f | |||
| 5f00463928 | |||
| cf4274fb16 | |||
| a2cd55d83b | |||
| 3c064ffa4e | |||
| 84301d4ba2 | |||
| e226f934c0 | |||
| 33b6e60862 | |||
| fc64e7aca7 | |||
| f976791460 | |||
| 2a948f0133 | |||
| 2253c339ff | |||
| 85a8a4141d | |||
| fc8d7d80d0 | |||
| 7167868002 | |||
| ced4415181 | |||
| d28f69d7bc | |||
| 790d771a2a | |||
| eed4b9ac41 | |||
| cde489c888 | |||
| 6c8a47fb17 | |||
| 40fbca14a2 | |||
| c31afc015a | |||
| c508279a0c | |||
| 7502760c6e | |||
| eabb29fc8b | |||
| cc3b7b6715 | |||
| 1503bcbb1c | |||
| 15872781a8 | |||
| 4286f34b1d | |||
| 78526b17cb | |||
| 217883dc34 | |||
| a492985dcf | |||
| 85c6867a70 | |||
| dbfe20032f | |||
| 168cc437c1 | |||
| b65d0d9c75 | |||
| aee7eeca8a | |||
| dc63e9ea2f | |||
| 121178a603 | |||
| d946ccbc1b | |||
| 608329ec30 | |||
| 8686a397dd | |||
| 4dd7941d22 | |||
| a43d87d0ae | |||
| 9a72fcc164 | |||
| 2b15eb55aa | |||
| 364ba7d755 | |||
| fb9633cf25 | |||
| 417caff8b1 | |||
| a66052c592 | |||
| d152dc4887 | |||
| 7ff3f21945 | |||
| 5b3742175c | |||
| 2e0b11d30a | |||
| 7176b45aed | |||
| 954ce02353 | |||
| a3fbdfaee0 | |||
| 92c8ac45cc | |||
| 63ed8219dc | |||
| 2b482d367c | |||
| cc639488b3 | |||
| 0772192629 | |||
| c2449e25a2 | |||
| da0b258863 | |||
| 58da2806a1 | |||
| 25ec41abbd | |||
| 1c9dd88d68 | |||
| dd0966b29b | |||
| 421eb6802e | |||
| 01c33f99d6 | |||
| de925dc477 | |||
| bdf15f9be8 | |||
| 8cb742d2a6 | |||
| 2168a4f1fc | |||
| 1febce77dd | |||
| 2197494481 | |||
| 74284809e3 | |||
| 841d04dafd | |||
| d4c7baf247 | |||
| 6f0b8f733c | |||
| f217d5cd73 | |||
| 7cfd6e788f | |||
| 1a215cc608 | |||
| 7e30501d1c | |||
| 6df36c9c8c | |||
| d7bbe9e8a6 | |||
| 62b51d52a5 | |||
| 6aa91d26c4 | |||
| beb19f19c0 | |||
| 6e504a84a0 | |||
| 129bffe9d8 | |||
| cd4328feee | |||
| 1ac84cafc8 | |||
| 36bff434f6 | |||
| 94b319573e | |||
| 43abfabe15 | |||
| 9ac0dea011 | |||
| 9721263f90 | |||
| 124fd715ef | |||
| 1c3aee01fd | |||
| fe3b0acb6d | |||
| 509b5c9ca3 | |||
| 9c00d90424 | |||
| b4bba84753 | |||
| 47b95c97e0 | |||
| fedee61c34 | |||
| 0c5c0fd1bf | |||
| f2929ef72b | |||
| f19075e6b4 | |||
| 4063d7e061 | |||
| 75bf43da3c | |||
| 556382e38e | |||
| de480f9cb8 | |||
| 0643cd318c | |||
| c7ffac16a1 | |||
| 0f85e4087a | |||
| 1bdffa86fc | |||
| 8ffc87556c | |||
| 43a5d734c1 | |||
| 4fad697cd5 | |||
| 7ab708edf6 | |||
| 094b218c1d | |||
| 3117731c00 | |||
| 3d7ebea02f | |||
| 53f32cd3d5 | |||
| af6a9825e1 | |||
| bc570b028e | |||
| c37cd6968f | |||
| ef8498a8e6 | |||
| 10ddcab12c | |||
| 8344ed8cb3 | |||
| d3668c8943 | |||
| 4def0e9441 | |||
| fa692a3912 | |||
| 80a449975b | |||
| 3fd2f93d21 | |||
| 13ad9ba3da | |||
| 31a59a4b3c | |||
| 19f303535c | |||
| cdfae11e70 | |||
| 676b125666 | |||
| 3032aed434 | |||
| a9a5be48e6 | |||
| 6999fefad4 | |||
| 7ef6584c14 | |||
| ecf41d965c | |||
| 4338a2dae2 | |||
| e80a073fe9 | |||
| a1404096bf | |||
| cef1a7f560 | |||
| 7ef618d402 | |||
| 4b32315ad1 | |||
| 2504f5efc0 | |||
| 2acc8ee0c0 | |||
| 2c833b84ee | |||
| fd5aaabb99 | |||
| 4eb31510d0 | |||
| 8bb784a16b | |||
| c98b124f73 | |||
| 5e12e74e9c | |||
| 04ad0f1682 | |||
| 87a58c65de | |||
| c2e278df55 | |||
| dee7bc8e5e | |||
| e7fc566b10 | |||
| a4ab45f772 | |||
| c72eaf234c | |||
| edb8906b4d | |||
| b7fb413814 | |||
| 0246ee905a | |||
| 853eed62c4 | |||
| 4725475cfc | |||
| 1d03dc16e1 | |||
| 1d3be00440 | |||
| 42c5ab103d | |||
| a82d13d1a2 | |||
| 77cda5f933 | |||
| a5bd175373 | |||
| a95766201b | |||
| 6a7901f443 | |||
| 97b23f2804 | |||
| e475b18892 | |||
| c41f146a2d | |||
| 12ec30958c | |||
| cdb05f36a1 | |||
| 8a85468354 | |||
| 54e91577a7 | |||
| 171250c580 | |||
| 1b07f76f59 | |||
| b7819acbd5 | |||
| 2c10d82f7f | |||
| d7514471ba | |||
| b918235b4e | |||
| 6d1e626036 | |||
| e235f46b3b | |||
| 17f9952d8b | |||
| 5abf8ede8d | |||
| 8caddf0f8c | |||
| f6219ccb90 | |||
| 21e5f579e2 | |||
| 7c7791c17a | |||
| b03b7d12bf | |||
| 01e439d523 | |||
| 1701df1c72 | |||
| 6d5070cdb4 | |||
| 9460160937 | |||
| afeadfddfa | |||
| d234e8c472 | |||
| ca33c8f2c8 | |||
| 51eb58d236 | |||
| a8311bd6b9 | |||
| f8aa3f5534 | |||
| eba3e056c2 | |||
| 321ba43a15 | |||
| 0b9bae5cbb | |||
| c6b3ece14e | |||
| 6203ff3e17 | |||
| f9f9b82668 | |||
| 59e4b9e113 | |||
| a5a1797cce | |||
| 9eeb265614 | |||
| 31c0109adb | |||
| df3a8fd14f | |||
| c51fcc851b | |||
| add692995a | |||
| 379d4b3d82 | |||
| c402feabf1 | |||
| 1d563f89bf | |||
| 3a4d7dd841 | |||
| 543a3cc1cb | |||
| f44a3ba879 | |||
| 54b1042b5c | |||
| a904ca08df | |||
| 6101b30b3e | |||
| 208f0ade0a | |||
| e285ded587 | |||
| f2dc07757c | |||
| 6d7613fa3e | |||
| 2352276947 | |||
| 28b789f28f | |||
| d14e0ad046 | |||
| d322afa41a | |||
| a5a95c43af | |||
| a6a521c8d1 | |||
| 18a56fa45e | |||
| 278d9e863e | |||
| ba2bc03263 | |||
| 28aba0f794 | |||
| e8ac4b78e1 | |||
| daaa063c60 | |||
| f339fab54d | |||
| 69d49689ce | |||
| bd4b17fafc | |||
| 950830d94d | |||
| 11bfdca77a | |||
| 3e1aa263cb | |||
| 628ff9bb8d | |||
| 4dd92112eb | |||
| 7c5f153e1f | |||
| 3717686bf8 | |||
| 404e61bcf2 | |||
| 4d4fb66fd1 | |||
| 43232c3e94 | |||
| 04ecdc5d86 | |||
| c14ffbeaca | |||
| c6dd2e38d9 | |||
| f37197e2d6 | |||
| 1301d13b19 | |||
| 868fd61abb | |||
| fd3160ead2 | |||
| bbf166c41e | |||
| fa410383fb | |||
| 28f7595712 | |||
| d49d41a147 | |||
| 4a329bafff | |||
| 4569b1352c | |||
| 2632a9b661 | |||
| 74f266aaf0 | |||
| 7a66d39eaa | |||
| 5ee91398b4 | |||
| 2238ed76d9 | |||
| 77fec7c466 | |||
| 95b35eb045 | |||
| cf99475842 | |||
| dee148be33 | |||
| cb3e865e96 | |||
| ef8f6e1a8e | |||
| 98dd98b8b5 |
@@ -0,0 +1 @@
|
||||
docs/* linguist-vendored
|
||||
@@ -0,0 +1 @@
|
||||
* @artsabintsev
|
||||
@@ -1,10 +1,28 @@
|
||||
======
|
||||
Before posting an issue, please make sure your issue has not already been resolved or answered elsehwere.
|
||||
## If you're experiencing a problem integrating Siren into your app, please provide the following information when posting a new issue:
|
||||
|
||||
Common Issue:
|
||||
> "Error retrieving iOS version number as there was no data returned."
|
||||
- **Are you using the [latest version](https://github.com/ArtSabintsev/Siren/releases) of Siren?**:
|
||||
- **What is your app's Bundle ID?**:
|
||||
- **When was the latest version of your app published to the App Store?**:
|
||||
- **Is your app published in the US App Store? If not, what App Store is it published in?**:
|
||||
- **Does Siren work if you plugin your app's `BundleID` (and `countryCode`, if necessary) into the Example app?**:
|
||||
|
||||
Check if your app is available in the US App Store, otherwise add the corresponding country code when setting up Siren: https://github.com/ArtSabintsev/Siren/blob/master/Siren/Siren.swift#L198
|
||||
---
|
||||
|
||||
Please delete this text before submitting a new issue.
|
||||
======
|
||||
## Before posting an issue, please make sure your issue has not already been resolved or answered elsewhere.
|
||||
|
||||
### Common Issue #1:
|
||||
>"Error retrieving iOS version number as there was no data returned."
|
||||
|
||||
Check if your app is available in the US App Store, otherwise add the corresponding country code when setting up Siren.
|
||||
|
||||
### Common Issue #2:
|
||||
> "Support for macOS App Store."
|
||||
|
||||
Siren does not and will not support the macOS App Store.
|
||||
|
||||
### Common Issue #3:
|
||||
> "Support for prompting TestFlight users to update to the newest beta build."
|
||||
|
||||
Siren does not support this functionality. There is no publicly accessible TestFlight API akin to that of the public App Store API that Siren can utilize to provide this functionality.
|
||||
|
||||
# Please delete this text before submitting a new issue.
|
||||
|
||||
@@ -17,11 +17,3 @@ DerivedData
|
||||
*.ipa
|
||||
*.xcuserstate
|
||||
.DS_Store
|
||||
|
||||
# CocoaPods
|
||||
#
|
||||
# We recommend against adding the Pods directory to your .gitignore. However
|
||||
# you should judge for yourself, the pros and cons are mentioned at:
|
||||
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
|
||||
#
|
||||
# Pods/
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
module: Siren
|
||||
author: Arthur Ariel Sabintsev
|
||||
author_url: http://www.sabintsev.com
|
||||
github_url: https://github.com/artsabintsev/siren
|
||||
copyright: "© 2015-2017 [Arthur Ariel Sabintsev](http://www.sabintsev.com)"
|
||||
clean: true
|
||||
podspec: Siren.podspec
|
||||
@@ -0,0 +1 @@
|
||||
ruby-2.6.0
|
||||
@@ -1 +0,0 @@
|
||||
3.0
|
||||
+7
-2
@@ -1,10 +1,15 @@
|
||||
reporter: "xcode"
|
||||
|
||||
included:
|
||||
- ../Sources/
|
||||
|
||||
disabled_rules:
|
||||
- cyclomatic_complexity
|
||||
- file_length
|
||||
- line_length
|
||||
- nesting
|
||||
- unused_optional_binding
|
||||
- variable_name
|
||||
|
||||
reporter: "xcode"
|
||||
# Specialized Rules
|
||||
file_length:
|
||||
- 500
|
||||
|
||||
Generated
Executable → Regular
+1
-1
@@ -2,6 +2,6 @@
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:/Users/Arthur/Documents/oss/siren/Sample App/SirenExample.xcodeproj">
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
language: swift
|
||||
osx_image: xcode11
|
||||
notifications:
|
||||
email: false
|
||||
|
||||
before_install:
|
||||
- brew update
|
||||
- gem install bundler
|
||||
env:
|
||||
- LC_CTYPE=en_US.UTF-8 LANG=en_US.UTF-8
|
||||
script:
|
||||
- set -o pipefail
|
||||
- xcodebuild -project Example/Example.xcodeproj -scheme Example -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 156 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 158 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 169 KiB |
@@ -1,63 +0,0 @@
|
||||
### Creators
|
||||
[Arthur Ariel Sabintsev](http://www.sabintsev.com/) and [Aaron Brager](http://twitter.com/GetAaron)
|
||||
|
||||
### Siren Project Contributors
|
||||
- [Dmitry Bespalov](https://github.com/diamondsky) for [Pull Request #7](https://github.com/ArtSabintsev/Siren/pull/7)
|
||||
- [Daniel Bauke](https://github.com/bonkey) for [Pull Request #8](https://github.com/ArtSabintsev/Siren/pull/8)
|
||||
- [ipedro](https://github.com/ipedro) for [Pull Request #76 (Harpy)](https://github.com/ArtSabintsev/Harpy/pull/76)
|
||||
- [Michael Graff](http://github.com/skandragon) for [Pull Request #15](https://github.com/ArtSabintsev/Siren/pull/15)
|
||||
- [Jaroslav_](https://github.com/jaroslavas) for [Pull Request #83 (Harpy)](https://github.com/ArtSabintsev/Harpy/pull/83)
|
||||
- [Dylan Bettermann](https://github.com/dbettermann) for [Pull Request #18](https://github.com/ArtSabintsev/Siren/pull/18)
|
||||
- [Daniel](https://github.com/Daniel) for [Pull Request #21](https://github.com/ArtSabintsev/Siren/pull/21)
|
||||
- [nagaho](https://github.com/nagaho) for [Pull Request #22](https://github.com/ArtSabintsev/Siren/pull/22)
|
||||
- [Parnsind Hantrakool](https://github.com/kong707) for [Pull Request #91 (Harpy)](https://github.com/ArtSabintsev/Harpy/issues/91)
|
||||
- [Tibor Molnár](https://github.com/fatalaa) for [Pull Request #96 (Harpy)](https://github.com/ArtSabintsev/Harpy/issues/96)
|
||||
- [Tanel Suurhans](https://github.com/tanelsuurhans) and [Jaroslav_](https://github.com/jaroslavas) for [Pull Request #99 (Harpy)](https://github.com/ArtSabintsev/Harpy/issues/99)
|
||||
- [Zaid M. Said](https://github.com/SentulAsia) for [Pull Request #36](https://github.com/ArtSabintsev/Siren/pull/36)
|
||||
- [Vahan Margaryan](https://github.com/VahanMargaryan) for [Pull Request #37](https://github.com/ArtSabintsev/Siren/pull/37)
|
||||
- [Justus Kandzi](https://github.com/jkandzi) for [Pull Request #108 (Harpy)](https://github.com/ArtSabintsev/Harpy/pull/108)
|
||||
- [Maxim-Inv](https://github.com/Maxim-Inv) for [Pull Request #40](https://github.com/ArtSabintsev/Siren/pull/40)
|
||||
- [Dirk van Oosterbosch](https://github.com/irlabs) for [Pull Request #54](https://github.com/ArtSabintsev/Siren/pull/54) and [Pull Request #55](https://github.com/ArtSabintsev/Siren/pull/55)
|
||||
- [pavankataria](https://github.com/pavankataria) for [Pull Request #63](https://github.com/ArtSabintsev/Siren/pull/63)
|
||||
- [attilat85](https://github.com/attilat85) for [Pull Request #124 (Harpy)](https://github.com/ArtSabintsev/Harpy/pull/124)
|
||||
- [Vahan Margaryan](https://github.com/VahanMargaryan) for [Pull Request #71](https://github.com/ArtSabintsev/Siren/pull/71)
|
||||
- [Josip Injic](https://github.com/jinjic) for [Pull Request #73](https://github.com/ArtSabintsev/Siren/pull/73)
|
||||
- [Thi](https://github.com/thii) for [Pull Request #78](https://github.com/ArtSabintsev/Siren/pull/78)
|
||||
- [Ilija Puaca](https://github.com/ilijapuaca) for [Pull Request #141 (Harpy)](https://github.com/ArtSabintsev/Harpy/pull/141)
|
||||
- [thii](https://github.com/ilijapuaca) for [Pull Request #83](https://github.com/ArtSabintsev/Siren/pull/83)
|
||||
- [Kristaps Grinbergs](https://github.com/fassko) for [Pull Request #90](https://github.com/ArtSabintsev/Siren/pull/90)
|
||||
- [Luciano Nascimento](https://github.com/@lucianocn) for [Pull Request #146 (Harpy)](https://github.com/ArtSabintsev/Harpy/pull/146)
|
||||
- [Stefan Kieleithner](https://github.com/steviki) for [Pull Request #97](https://github.com/ArtSabintsev/Siren/pull/97)
|
||||
- [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)
|
||||
|
||||
### 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.
|
||||
|
||||
A huge **Thank You** to the following developers:
|
||||
|
||||
- [Borut Tomažin](https://github.com/borut-t)
|
||||
- [Bertie Liu](https://github.com/https://github.com/aceisScope)
|
||||
- [Burakkilic](https://github.com/burakkilic)
|
||||
- [Claas Lange](https://github.com/claaslange)
|
||||
- [Daniel](https://github.com/danieltskv)
|
||||
- [David Keegan](https://github.com/kgn)
|
||||
- [Erick](https://github.com/dexcell0)
|
||||
- [Ercillagorka](https://github.com/ercillagorka)
|
||||
- [Jamie Ly](http://github,com/jamiely)
|
||||
- [Jon Andersen](https://github.com/jonandersen)
|
||||
- [Josh T. Brown](https://github.com/joshuatbrown)
|
||||
- [Mark Rickert](https://github.com/markrickert)
|
||||
- [Patrick Debois](https://github.com/jedi4ever)
|
||||
- [Pius Uzamere](https://github.com/pius)
|
||||
- [Rahul Jiresal](https://github.com/rahuljiresal)
|
||||
- [Rui Peres](https://github.com/RuiAAPeres)
|
||||
- [Thomas Hempel](https://github.com/thomashempel)
|
||||
- [TrentW](https://github.com/trentw)
|
||||
|
||||
### Special Thanks
|
||||
Finally, a massive **Thank You** to [Aaron Brager](http://twitter.com/GetAaron) for the dev-work and issue-moderation he's done on Harpy since 2012. A Swift port could not have happened without him.
|
||||
Executable
+811
@@ -0,0 +1,811 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
8E1635A91E6A0B9C0060CE27 /* SirenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EE6C74C1E6A0AE100DBE454 /* SirenTests.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 */; };
|
||||
8EF9F879224EACB200B20545 /* APIManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F861224EACB100B20545 /* APIManager.swift */; };
|
||||
8EF9F87A224EACB200B20545 /* RulesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F862224EACB100B20545 /* RulesManager.swift */; };
|
||||
8EF9F87B224EACB200B20545 /* PresentationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F863224EACB100B20545 /* PresentationManager.swift */; };
|
||||
8EF9F87C224EACB200B20545 /* AlertAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F865224EACB100B20545 /* AlertAction.swift */; };
|
||||
8EF9F87D224EACB200B20545 /* AlertConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F866224EACB100B20545 /* AlertConstants.swift */; };
|
||||
8EF9F87E224EACB200B20545 /* Localization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F867224EACB100B20545 /* Localization.swift */; };
|
||||
8EF9F87F224EACB200B20545 /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F868224EACB100B20545 /* Model.swift */; };
|
||||
8EF9F880224EACB200B20545 /* APIModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F869224EACB100B20545 /* APIModel.swift */; };
|
||||
8EF9F881224EACB200B20545 /* Rules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F86A224EACB100B20545 /* Rules.swift */; };
|
||||
8EF9F882224EACB200B20545 /* PerformCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F86B224EACB100B20545 /* PerformCheck.swift */; };
|
||||
8EF9F883224EACB200B20545 /* UpdateResults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F86C224EACB100B20545 /* UpdateResults.swift */; };
|
||||
8EF9F884224EACB200B20545 /* Siren.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F86D224EACB100B20545 /* Siren.swift */; };
|
||||
8EF9F885224EACB200B20545 /* UIAlertControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F86F224EACB100B20545 /* UIAlertControllerExtension.swift */; };
|
||||
8EF9F886224EACB200B20545 /* BundleExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F870224EACB100B20545 /* BundleExtension.swift */; };
|
||||
8EF9F887224EACB200B20545 /* UserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F871224EACB100B20545 /* UserDefaultsExtension.swift */; };
|
||||
8EF9F888224EACB200B20545 /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F872224EACB100B20545 /* DateExtension.swift */; };
|
||||
8EF9F889224EACB200B20545 /* DataParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F874224EACB200B20545 /* DataParser.swift */; };
|
||||
8EF9F88A224EACB200B20545 /* KnownError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F875224EACB200B20545 /* KnownError.swift */; };
|
||||
8EF9F88B224EACB200B20545 /* Siren.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8EF9F876224EACB200B20545 /* Siren.bundle */; };
|
||||
8EF9F88C224EACB200B20545 /* SirenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EF9F878224EACB200B20545 /* SirenViewController.swift */; };
|
||||
8EF9F88E224EB00100B20545 /* Siren.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8EF9F853224EACA500B20545 /* Siren.framework */; };
|
||||
8EF9F88F224EB00100B20545 /* Siren.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8EF9F853224EACA500B20545 /* Siren.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
8E3A6C091D07CB6F00A8B7CF /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 8EC391791A58B465001C121E /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 8EC391801A58B465001C121E;
|
||||
remoteInfo = "Sample App";
|
||||
};
|
||||
8EF9F890224EB00100B20545 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 8EC391791A58B465001C121E /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 8EF9F852224EACA500B20545;
|
||||
remoteInfo = Siren;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
8EF9F892224EB00200B20545 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
8EF9F88F224EB00100B20545 /* Siren.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
55EC364A1E6BB98A00726F13 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = ../../Siren/Info.plist; sourceTree = "<group>"; };
|
||||
8E3A6C041D07CB6F00A8B7CF /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8EACA9661F37F2D3003134CA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
8EACA9681F37F2D3003134CA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
|
||||
8EACA96A1F37F2D3003134CA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
8EACA96B1F37F2D3003134CA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||
8EACA96C1F37F2D3003134CA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
8EACA96D1F37F2D3003134CA /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||
8EC391811A58B465001C121E /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8EE6C74B1E6A0AE100DBE454 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
8EE6C74C1E6A0AE100DBE454 /* SirenTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenTests.swift; sourceTree = "<group>"; };
|
||||
8EF9F853224EACA500B20545 /* Siren.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Siren.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8EF9F856224EACA500B20545 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
8EF9F861224EACB100B20545 /* APIManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIManager.swift; sourceTree = "<group>"; };
|
||||
8EF9F862224EACB100B20545 /* RulesManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RulesManager.swift; sourceTree = "<group>"; };
|
||||
8EF9F863224EACB100B20545 /* PresentationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationManager.swift; sourceTree = "<group>"; };
|
||||
8EF9F865224EACB100B20545 /* AlertAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlertAction.swift; sourceTree = "<group>"; };
|
||||
8EF9F866224EACB100B20545 /* AlertConstants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlertConstants.swift; sourceTree = "<group>"; };
|
||||
8EF9F867224EACB100B20545 /* Localization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Localization.swift; sourceTree = "<group>"; };
|
||||
8EF9F868224EACB100B20545 /* Model.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Model.swift; sourceTree = "<group>"; };
|
||||
8EF9F869224EACB100B20545 /* APIModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIModel.swift; sourceTree = "<group>"; };
|
||||
8EF9F86A224EACB100B20545 /* Rules.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Rules.swift; sourceTree = "<group>"; };
|
||||
8EF9F86B224EACB100B20545 /* PerformCheck.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PerformCheck.swift; sourceTree = "<group>"; };
|
||||
8EF9F86C224EACB100B20545 /* UpdateResults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateResults.swift; sourceTree = "<group>"; };
|
||||
8EF9F86D224EACB100B20545 /* Siren.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Siren.swift; path = ../../Sources/Siren.swift; sourceTree = "<group>"; };
|
||||
8EF9F86F224EACB100B20545 /* UIAlertControllerExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIAlertControllerExtension.swift; sourceTree = "<group>"; };
|
||||
8EF9F870224EACB100B20545 /* BundleExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BundleExtension.swift; sourceTree = "<group>"; };
|
||||
8EF9F871224EACB100B20545 /* UserDefaultsExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserDefaultsExtension.swift; sourceTree = "<group>"; };
|
||||
8EF9F872224EACB100B20545 /* DateExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = "<group>"; };
|
||||
8EF9F874224EACB200B20545 /* DataParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataParser.swift; sourceTree = "<group>"; };
|
||||
8EF9F875224EACB200B20545 /* KnownError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KnownError.swift; sourceTree = "<group>"; };
|
||||
8EF9F876224EACB200B20545 /* Siren.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Siren.bundle; path = ../../Sources/Siren.bundle; sourceTree = "<group>"; };
|
||||
8EF9F878224EACB200B20545 /* SirenViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SirenViewController.swift; sourceTree = "<group>"; };
|
||||
8EF9F88D224EACBF00B20545 /* Siren.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Siren.h; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
8E3A6C011D07CB6F00A8B7CF /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8EC3917E1A58B465001C121E /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8EF9F88E224EB00100B20545 /* Siren.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8EF9F850224EACA500B20545 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
8E641D2420C8B44B00908555 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EACA9651F37F2D3003134CA /* Example */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EACA9661F37F2D3003134CA /* AppDelegate.swift */,
|
||||
8EACA96E1F37F2DD003134CA /* Supporting Files */,
|
||||
);
|
||||
path = Example;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EACA96E1F37F2DD003134CA /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EACA9671F37F2D3003134CA /* LaunchScreen.xib */,
|
||||
8EACA9691F37F2D3003134CA /* Main.storyboard */,
|
||||
8EACA96B1F37F2D3003134CA /* Images.xcassets */,
|
||||
8EACA96C1F37F2D3003134CA /* Info.plist */,
|
||||
8EACA96D1F37F2D3003134CA /* ViewController.swift */,
|
||||
55EC364A1E6BB98A00726F13 /* Info.plist */,
|
||||
);
|
||||
path = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EC391781A58B465001C121E = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EACA9651F37F2D3003134CA /* Example */,
|
||||
8EE6C74A1E6A0AE100DBE454 /* Tests */,
|
||||
8EF9F854224EACA500B20545 /* Siren */,
|
||||
8EC391821A58B465001C121E /* Products */,
|
||||
8E641D2420C8B44B00908555 /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EC391821A58B465001C121E /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EC391811A58B465001C121E /* Example.app */,
|
||||
8E3A6C041D07CB6F00A8B7CF /* Tests.xctest */,
|
||||
8EF9F853224EACA500B20545 /* Siren.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EE6C74A1E6A0AE100DBE454 /* Tests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EE6C74B1E6A0AE100DBE454 /* Info.plist */,
|
||||
8EE6C74C1E6A0AE100DBE454 /* SirenTests.swift */,
|
||||
);
|
||||
path = Tests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EF9F854224EACA500B20545 /* Siren */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EF9F86D224EACB100B20545 /* Siren.swift */,
|
||||
8EF9F876224EACB200B20545 /* Siren.bundle */,
|
||||
8EF9F86E224EACB100B20545 /* Extensions */,
|
||||
8EF9F860224EACB100B20545 /* Managers */,
|
||||
8EF9F864224EACB100B20545 /* Models */,
|
||||
8EF9F873224EACB200B20545 /* Utilities */,
|
||||
8EF9F877224EACB200B20545 /* View Controllers */,
|
||||
8EF9F88D224EACBF00B20545 /* Siren.h */,
|
||||
8EF9F856224EACA500B20545 /* Info.plist */,
|
||||
);
|
||||
path = Siren;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EF9F860224EACB100B20545 /* Managers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EF9F861224EACB100B20545 /* APIManager.swift */,
|
||||
8EF9F862224EACB100B20545 /* RulesManager.swift */,
|
||||
8EF9F863224EACB100B20545 /* PresentationManager.swift */,
|
||||
);
|
||||
name = Managers;
|
||||
path = ../../Sources/Managers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EF9F864224EACB100B20545 /* Models */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EF9F865224EACB100B20545 /* AlertAction.swift */,
|
||||
8EF9F866224EACB100B20545 /* AlertConstants.swift */,
|
||||
8EF9F869224EACB100B20545 /* APIModel.swift */,
|
||||
8EF9F867224EACB100B20545 /* Localization.swift */,
|
||||
8EF9F868224EACB100B20545 /* Model.swift */,
|
||||
8EF9F86A224EACB100B20545 /* Rules.swift */,
|
||||
8EF9F86B224EACB100B20545 /* PerformCheck.swift */,
|
||||
8EF9F86C224EACB100B20545 /* UpdateResults.swift */,
|
||||
);
|
||||
name = Models;
|
||||
path = ../../Sources/Models;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EF9F86E224EACB100B20545 /* Extensions */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EF9F86F224EACB100B20545 /* UIAlertControllerExtension.swift */,
|
||||
8EF9F870224EACB100B20545 /* BundleExtension.swift */,
|
||||
8EF9F871224EACB100B20545 /* UserDefaultsExtension.swift */,
|
||||
8EF9F872224EACB100B20545 /* DateExtension.swift */,
|
||||
);
|
||||
name = Extensions;
|
||||
path = ../../Sources/Extensions;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EF9F873224EACB200B20545 /* Utilities */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EF9F874224EACB200B20545 /* DataParser.swift */,
|
||||
8EF9F875224EACB200B20545 /* KnownError.swift */,
|
||||
);
|
||||
name = Utilities;
|
||||
path = ../../Sources/Utilities;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EF9F877224EACB200B20545 /* View Controllers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EF9F878224EACB200B20545 /* SirenViewController.swift */,
|
||||
);
|
||||
name = "View Controllers";
|
||||
path = "../../Sources/View Controllers";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
8EF9F84E224EACA500B20545 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
8E3A6C031D07CB6F00A8B7CF /* Tests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8E3A6C0D1D07CB6F00A8B7CF /* Build configuration list for PBXNativeTarget "Tests" */;
|
||||
buildPhases = (
|
||||
8E3A6C001D07CB6F00A8B7CF /* Sources */,
|
||||
8E3A6C011D07CB6F00A8B7CF /* Frameworks */,
|
||||
8E3A6C021D07CB6F00A8B7CF /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
8E3A6C0A1D07CB6F00A8B7CF /* PBXTargetDependency */,
|
||||
);
|
||||
name = Tests;
|
||||
productName = SirenTests;
|
||||
productReference = 8E3A6C041D07CB6F00A8B7CF /* Tests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
8EC391801A58B465001C121E /* Example */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8EC391A01A58B466001C121E /* Build configuration list for PBXNativeTarget "Example" */;
|
||||
buildPhases = (
|
||||
8EC3917D1A58B465001C121E /* Sources */,
|
||||
8EC3917E1A58B465001C121E /* Frameworks */,
|
||||
8EE3A3F81E6A0E470010BDCE /* SwiftLint */,
|
||||
8EC3917F1A58B465001C121E /* Resources */,
|
||||
8EF9F892224EB00200B20545 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
8EF9F891224EB00100B20545 /* PBXTargetDependency */,
|
||||
);
|
||||
name = Example;
|
||||
productName = Siren;
|
||||
productReference = 8EC391811A58B465001C121E /* Example.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
8EF9F852224EACA500B20545 /* Siren */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8EF9F85C224EACA500B20545 /* Build configuration list for PBXNativeTarget "Siren" */;
|
||||
buildPhases = (
|
||||
8EF9F84E224EACA500B20545 /* Headers */,
|
||||
8EF9F84F224EACA500B20545 /* Sources */,
|
||||
8EF9F850224EACA500B20545 /* Frameworks */,
|
||||
8EF9F851224EACA500B20545 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Siren;
|
||||
productName = Siren;
|
||||
productReference = 8EF9F853224EACA500B20545 /* Siren.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
8EC391791A58B465001C121E /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftMigration = 0700;
|
||||
LastSwiftUpdateCheck = 0730;
|
||||
LastUpgradeCheck = 1020;
|
||||
ORGANIZATIONNAME = "Sabintsev iOS Projects";
|
||||
TargetAttributes = {
|
||||
8E3A6C031D07CB6F00A8B7CF = {
|
||||
CreatedOnToolsVersion = 7.3.1;
|
||||
LastSwiftMigration = 1020;
|
||||
TestTargetID = 8EC391801A58B465001C121E;
|
||||
};
|
||||
8EC391801A58B465001C121E = {
|
||||
CreatedOnToolsVersion = 6.1.1;
|
||||
DevelopmentTeam = HT94948NDD;
|
||||
DevelopmentTeamName = "Arthur Sabintsev";
|
||||
LastSwiftMigration = 1020;
|
||||
SystemCapabilities = {
|
||||
com.apple.BackgroundModes = {
|
||||
enabled = 0;
|
||||
};
|
||||
com.apple.InAppPurchase = {
|
||||
enabled = 0;
|
||||
};
|
||||
com.apple.Push = {
|
||||
enabled = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
8EF9F852224EACA500B20545 = {
|
||||
CreatedOnToolsVersion = 10.2;
|
||||
DevelopmentTeam = HT94948NDD;
|
||||
LastSwiftMigration = 1020;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 8EC3917C1A58B465001C121E /* Build configuration list for PBXProject "Example" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 8EC391781A58B465001C121E;
|
||||
productRefGroup = 8EC391821A58B465001C121E /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8EC391801A58B465001C121E /* Example */,
|
||||
8E3A6C031D07CB6F00A8B7CF /* Tests */,
|
||||
8EF9F852224EACA500B20545 /* Siren */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
8E3A6C021D07CB6F00A8B7CF /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8EC3917F1A58B465001C121E /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8EACA9711F380294003134CA /* LaunchScreen.xib in Resources */,
|
||||
8EACA9721F380294003134CA /* Main.storyboard in Resources */,
|
||||
8EACA9731F380294003134CA /* Images.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8EF9F851224EACA500B20545 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8EF9F88B224EACB200B20545 /* Siren.bundle in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
8EE3A3F81E6A0E470010BDCE /* SwiftLint */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = SwiftLint;
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "if which swiftlint >/dev/null; then\nswiftlint lint --config ../.swiftlint.yml\nelse\necho \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8E3A6C001D07CB6F00A8B7CF /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8E1635A91E6A0B9C0060CE27 /* SirenTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8EC3917D1A58B465001C121E /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8EACA9741F38029B003134CA /* AppDelegate.swift in Sources */,
|
||||
8EACA9751F38029B003134CA /* ViewController.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8EF9F84F224EACA500B20545 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8EF9F882224EACB200B20545 /* PerformCheck.swift in Sources */,
|
||||
8EF9F87F224EACB200B20545 /* Model.swift in Sources */,
|
||||
8EF9F885224EACB200B20545 /* UIAlertControllerExtension.swift in Sources */,
|
||||
8EF9F88C224EACB200B20545 /* SirenViewController.swift in Sources */,
|
||||
8EF9F886224EACB200B20545 /* BundleExtension.swift in Sources */,
|
||||
8EF9F87D224EACB200B20545 /* AlertConstants.swift in Sources */,
|
||||
8EF9F881224EACB200B20545 /* Rules.swift in Sources */,
|
||||
8EF9F889224EACB200B20545 /* DataParser.swift in Sources */,
|
||||
8EF9F879224EACB200B20545 /* APIManager.swift in Sources */,
|
||||
8EF9F87E224EACB200B20545 /* Localization.swift in Sources */,
|
||||
8EF9F880224EACB200B20545 /* APIModel.swift in Sources */,
|
||||
8EF9F888224EACB200B20545 /* DateExtension.swift in Sources */,
|
||||
8EF9F884224EACB200B20545 /* Siren.swift in Sources */,
|
||||
8EF9F887224EACB200B20545 /* UserDefaultsExtension.swift in Sources */,
|
||||
8EF9F87B224EACB200B20545 /* PresentationManager.swift in Sources */,
|
||||
8EF9F883224EACB200B20545 /* UpdateResults.swift in Sources */,
|
||||
8EF9F87C224EACB200B20545 /* AlertAction.swift in Sources */,
|
||||
8EF9F88A224EACB200B20545 /* KnownError.swift in Sources */,
|
||||
8EF9F87A224EACB200B20545 /* RulesManager.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
8E3A6C0A1D07CB6F00A8B7CF /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 8EC391801A58B465001C121E /* Example */;
|
||||
targetProxy = 8E3A6C091D07CB6F00A8B7CF /* PBXContainerItemProxy */;
|
||||
};
|
||||
8EF9F891224EB00100B20545 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 8EF9F852224EACA500B20545 /* Siren */;
|
||||
targetProxy = 8EF9F890224EB00100B20545 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
8EACA9671F37F2D3003134CA /* LaunchScreen.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
8EACA9681F37F2D3003134CA /* Base */,
|
||||
);
|
||||
name = LaunchScreen.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EACA9691F37F2D3003134CA /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
8EACA96A1F37F2D3003134CA /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
8E3A6C0B1D07CB6F00A8B7CF /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = Tests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.sabintsev.SirenTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8E3A6C0C1D07CB6F00A8B7CF /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = Tests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.sabintsev.SirenTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
8EC3919E1A58B466001C121E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
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;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 4.2;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8EC3919F1A58B466001C121E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
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;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_VERSION = 4.2;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
8EC391A11A58B466001C121E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
DEVELOPMENT_TEAM = HT94948NDD;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Siren/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.apple.AppStoreConnect;
|
||||
PRODUCT_NAME = Example;
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8EC391A21A58B466001C121E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
DEVELOPMENT_TEAM = HT94948NDD;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Siren/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.apple.AppStoreConnect;
|
||||
PRODUCT_NAME = Example;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
8EF9F85D224EACA500B20545 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = HT94948NDD;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
INFOPLIST_FILE = Siren/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.Sabintsev.Siren;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8EF9F85E224EACA500B20545 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = HT94948NDD;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
INFOPLIST_FILE = Siren/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.Sabintsev.Siren;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
8E3A6C0D1D07CB6F00A8B7CF /* Build configuration list for PBXNativeTarget "Tests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
8E3A6C0B1D07CB6F00A8B7CF /* Debug */,
|
||||
8E3A6C0C1D07CB6F00A8B7CF /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
8EC3917C1A58B465001C121E /* Build configuration list for PBXProject "Example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
8EC3919E1A58B466001C121E /* Debug */,
|
||||
8EC3919F1A58B466001C121E /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
8EC391A01A58B466001C121E /* Build configuration list for PBXNativeTarget "Example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
8EC391A11A58B466001C121E /* Debug */,
|
||||
8EC391A21A58B466001C121E /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
8EF9F85C224EACA500B20545 /* Build configuration list for PBXNativeTarget "Siren" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
8EF9F85D224EACA500B20545 /* Debug */,
|
||||
8EF9F85E224EACA500B20545 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 8EC391791A58B465001C121E /* Project object */;
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:/Users/Arthur/Documents/oss/siren/SirenExample/Example.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
+16
-16
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0820"
|
||||
LastUpgradeVersion = "1020"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@@ -15,9 +15,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8EC391801A58B465001C121E"
|
||||
BuildableName = "SirenExample.app"
|
||||
BlueprintName = "SirenExample"
|
||||
ReferencedContainer = "container:SirenExample.xcodeproj">
|
||||
BuildableName = "Example.app"
|
||||
BlueprintName = "Example"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
@@ -33,9 +33,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8E3A6C031D07CB6F00A8B7CF"
|
||||
BuildableName = "SirenExampleTests.xctest"
|
||||
BlueprintName = "SirenExampleTests"
|
||||
ReferencedContainer = "container:SirenExample.xcodeproj">
|
||||
BuildableName = "Tests.xctest"
|
||||
BlueprintName = "Tests"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
@@ -43,9 +43,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8EC391801A58B465001C121E"
|
||||
BuildableName = "SirenExample.app"
|
||||
BlueprintName = "SirenExample"
|
||||
ReferencedContainer = "container:SirenExample.xcodeproj">
|
||||
BuildableName = "Example.app"
|
||||
BlueprintName = "Example"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
@@ -66,9 +66,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8EC391801A58B465001C121E"
|
||||
BuildableName = "SirenExample.app"
|
||||
BlueprintName = "SirenExample"
|
||||
ReferencedContainer = "container:SirenExample.xcodeproj">
|
||||
BuildableName = "Example.app"
|
||||
BlueprintName = "Example"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
@@ -85,9 +85,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8EC391801A58B465001C121E"
|
||||
BuildableName = "SirenExample.app"
|
||||
BlueprintName = "SirenExample"
|
||||
ReferencedContainer = "container:SirenExample.xcodeproj">
|
||||
BuildableName = "Example.app"
|
||||
BlueprintName = "Example"
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
+7
-7
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0820"
|
||||
LastUpgradeVersion = "1020"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@@ -14,10 +14,10 @@
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "55EC36461E6BB98A00726F13"
|
||||
BlueprintIdentifier = "8EF9F852224EACA500B20545"
|
||||
BuildableName = "Siren.framework"
|
||||
BlueprintName = "Siren"
|
||||
ReferencedContainer = "container:SirenExample.xcodeproj">
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
@@ -45,10 +45,10 @@
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "55EC36461E6BB98A00726F13"
|
||||
BlueprintIdentifier = "8EF9F852224EACA500B20545"
|
||||
BuildableName = "Siren.framework"
|
||||
BlueprintName = "Siren"
|
||||
ReferencedContainer = "container:SirenExample.xcodeproj">
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
@@ -63,10 +63,10 @@
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "55EC36461E6BB98A00726F13"
|
||||
BlueprintIdentifier = "8EF9F852224EACA500B20545"
|
||||
BuildableName = "Siren.framework"
|
||||
BlueprintName = "Siren"
|
||||
ReferencedContainer = "container:SirenExample.xcodeproj">
|
||||
ReferencedContainer = "container:Example.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
Executable
+268
@@ -0,0 +1,268 @@
|
||||
//
|
||||
// AppDelegate.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 1/3/15.
|
||||
// Copyright (c) 2015 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Siren
|
||||
import UIKit
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
var window: UIWindow?
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
|
||||
window?.makeKeyAndVisible()
|
||||
|
||||
/// - Warning:
|
||||
/// Siren should ONLY be placed in UIApplication.didFinishLaunchingWithOptions and only after the `window?.makeKeyAndVisible()` call.
|
||||
/// Siren initializes a listener on `didBecomeActiveNotification` to perform version checks.
|
||||
|
||||
// defaultExample()
|
||||
// defaultExampleUsingCompletionHandler()
|
||||
// manualExampleWithCompletionHandler()
|
||||
// minimalCustomizationPresentationExample()
|
||||
// forceLocalizationCustomizationPresentationExample()
|
||||
// customMessagingPresentationExample()
|
||||
annoyingRuleExample()
|
||||
// hyperCriticalRulesExample()
|
||||
// updateSpecificRulesExample()
|
||||
// customAlertRulesExample()
|
||||
// appStoreCountryChangeExample()
|
||||
// complexExample()
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
// Examples on how to use Siren
|
||||
|
||||
private extension AppDelegate {
|
||||
|
||||
/// The simplest implementation of Siren.
|
||||
/// All default rules are implemented and the
|
||||
/// results of the completion handler are ignored.
|
||||
func defaultExample() {
|
||||
Siren.shared.wail()
|
||||
}
|
||||
|
||||
/// The simplest implementation of Siren.
|
||||
/// All default rules are implemented and the
|
||||
/// results of the completion handler are returned or an error is returned.
|
||||
func defaultExampleUsingCompletionHandler() {
|
||||
Siren.shared.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Rather than waiting for `didBecomeActive` state changes (e.g., app launching/relaunching),
|
||||
/// Siren's version checking and alert presentation methods will be triggered each time this method is called.
|
||||
func manualExampleWithCompletionHandler() {
|
||||
Siren.shared.wail(performCheck: .onDemand) { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Minor customization to Siren's update alert presentation.
|
||||
func minimalCustomizationPresentationExample() {
|
||||
let siren = Siren.shared
|
||||
siren.presentationManager = PresentationManager(alertTintColor: .purple,
|
||||
appName: "Siren Example App Override!")
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Forcing the language of the update alert to a specific localization (e.g., Russian is force in this function.
|
||||
func forceLocalizationCustomizationPresentationExample() {
|
||||
let siren = Siren.shared
|
||||
siren.presentationManager = PresentationManager(forceLanguageLocalization: .russian)
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Example on how to change specific strings in the update alert.
|
||||
func customMessagingPresentationExample() {
|
||||
let siren = Siren.shared
|
||||
siren.presentationManager = PresentationManager(alertTitle: "Update Now, OK?",
|
||||
nextTimeButtonTitle: "Next time, please!?")
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// How to present an alert every time the app is foregrounded.
|
||||
func annoyingRuleExample() {
|
||||
let siren = Siren.shared
|
||||
siren.rulesManager = RulesManager(globalRules: .annoying)
|
||||
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// How to present an alert every time the app is foregrounded.
|
||||
/// This will block the user from using the app until they update the app.
|
||||
/// Setting `showAlertAfterCurrentVersionHasBeenReleasedForDays` to `0` IS NOT RECOMMENDED
|
||||
/// as it will cause the user to go into an endless loop to the App Store if the JSON results
|
||||
/// update faster than the App Store CDN.
|
||||
///
|
||||
/// The `0` value is illustrated in this app as an example on how to change how quickly an alert is presented.
|
||||
func hyperCriticalRulesExample() {
|
||||
let siren = Siren.shared
|
||||
siren.rulesManager = RulesManager(globalRules: .critical,
|
||||
showAlertAfterCurrentVersionHasBeenReleasedForDays: 0)
|
||||
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Major, Minor, Patch, and Revision specific rules implementations.
|
||||
func updateSpecificRulesExample() {
|
||||
let siren = Siren.shared
|
||||
siren.rulesManager = RulesManager(majorUpdateRules: .critical,
|
||||
minorUpdateRules: .annoying,
|
||||
patchUpdateRules: .default,
|
||||
revisionUpdateRules: Rules(promptFrequency: .weekly, forAlertType: .option))
|
||||
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// An example on how to present your own custom alert using Siren's localized Strings and version checking cadence.
|
||||
func customAlertRulesExample() {
|
||||
let siren = Siren.shared
|
||||
// The key for using custom alerts is to set the `alertType` to `.none`.
|
||||
// The `Results` type will return localized strings for your app's custom modal presentation.
|
||||
// The `promptFrequency` allows you to customize how often Siren performs the version check before returning a non-error result back into your app, prompting your custom alert functionality.
|
||||
let rules = Rules(promptFrequency: .immediately, forAlertType: .none)
|
||||
siren.rulesManager = RulesManager(globalRules: rules)
|
||||
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// An example on how to change the App Store region that your app in which your app is available.
|
||||
// This should only be used if your app is not available in the US App Store.
|
||||
// This example function illustrates how this can be done by checking against the Russian App Store.
|
||||
func appStoreCountryChangeExample() {
|
||||
let siren = Siren.shared
|
||||
siren.apiManager = APIManager(countryCode: "RU")
|
||||
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// An example on how to customize multiple managers at once.
|
||||
func complexExample() {
|
||||
let siren = Siren.shared
|
||||
siren.presentationManager = PresentationManager(alertTintColor: .brown,
|
||||
appName: "Siren's Complex Rule Example App",
|
||||
alertTitle: "Please, Update Now!",
|
||||
skipButtonTitle: "Click here to skip!",
|
||||
forceLanguageLocalization: .spanish)
|
||||
siren.rulesManager = RulesManager(majorUpdateRules: .critical,
|
||||
minorUpdateRules: .annoying,
|
||||
patchUpdateRules: .default,
|
||||
revisionUpdateRules: .relaxed)
|
||||
|
||||
siren.wail { results in
|
||||
switch results {
|
||||
case .success(let updateResults):
|
||||
print("AlertAction ", updateResults.alertAction)
|
||||
print("Localization ", updateResults.localization)
|
||||
print("Model ", updateResults.model)
|
||||
print("UpdateType ", updateResults.updateType)
|
||||
case .failure(let error):
|
||||
print(error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
-6
@@ -1,21 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="vXZ-lx-hvc">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="vXZ-lx-hvc">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="ufC-wZ-h7g">
|
||||
<objects>
|
||||
<viewController id="vXZ-lx-hvc" customClass="ViewController" customModule="Sample_App" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<viewController id="vXZ-lx-hvc" customClass="ViewController" customModule="Example" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
|
||||
+15
@@ -1,5 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
@@ -29,6 +39,11 @@
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"size" : "1024x1024",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
@@ -15,9 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
@@ -3,7 +3,7 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
@@ -15,10 +15,8 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -2,8 +2,8 @@
|
||||
// Siren.h
|
||||
// Siren
|
||||
//
|
||||
// Created by Sabintsev, Arthur on 3/4/17.
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
// Created by Arthur Sabintsev on 3/29/19.
|
||||
// Copyright © 2019 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
@@ -16,8 +16,6 @@
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
@@ -0,0 +1,811 @@
|
||||
//
|
||||
// SirenTests.swift
|
||||
// SirenTests
|
||||
//
|
||||
// Created by Arthur Sabintsev on 6/7/16.
|
||||
// Copyright © 2016 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import Siren
|
||||
|
||||
final class SirenTests: XCTestCase {
|
||||
|
||||
var siren: Siren = Siren.shared
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Updates
|
||||
|
||||
extension SirenTests {
|
||||
|
||||
func testSingleDigitVersionUpdate() {
|
||||
siren.currentInstalledVersion = "1"
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0.0"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0.0.0"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.9"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.0.9"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.0.0.9"))
|
||||
}
|
||||
|
||||
func testDoubleDigitVersionUpdate() {
|
||||
siren.currentInstalledVersion = "1.0"
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0.0"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0.0.0"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.9"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.0.9"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.0.0.9"))
|
||||
}
|
||||
|
||||
func testTripleDigitVersionUpdate() {
|
||||
siren.currentInstalledVersion = "1.0.0"
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0.0"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0.0.0"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.9"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.0.9"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.0.0.9"))
|
||||
}
|
||||
|
||||
func testQuadrupleDigitVersionUpdate() {
|
||||
siren.currentInstalledVersion = "1.0.0"
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0.0"))
|
||||
|
||||
XCTAssertTrue(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "2.0.0.0"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.9"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.0.9"))
|
||||
|
||||
XCTAssertFalse(DataParser.isAppStoreVersionNewer(installedVersion: siren.currentInstalledVersion,
|
||||
appStoreVersion: "0.0.0.9"))
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Localization
|
||||
|
||||
extension SirenTests {
|
||||
|
||||
func testArabicLocalization() {
|
||||
let language: Localization.Language = .arabic
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "التحديث متوفر")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "المرة التالية")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "تخطى عن هذه النسخة")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "تحديث")
|
||||
}
|
||||
|
||||
func testArmenianLocalization() {
|
||||
let language: Localization.Language = .armenian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Թարմացումը հասանելի Է")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Հաջորդ անգամ")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Բաց թողնել այս տարբերակը")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Թարմացնել")
|
||||
}
|
||||
|
||||
func testBasqueLocalization() {
|
||||
let language: Localization.Language = .basque
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Eguneratzea erabilgarri")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Hurrengo batean")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Bertsio honetatik jauzi egin")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Eguneratu")
|
||||
}
|
||||
|
||||
func testChineseSimplifiedLocalization() {
|
||||
let language: Localization.Language = .chineseSimplified
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "更新可用")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "下一次")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "跳过此版本")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "更新")
|
||||
}
|
||||
|
||||
func testChineseTraditionalLocalization() {
|
||||
let language: Localization.Language = .chineseTraditional
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "有更新可用")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "下次")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "跳過此版本")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "更新")
|
||||
}
|
||||
|
||||
func testCroatianLocalization() {
|
||||
let language: Localization.Language = .croatian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Nova ažuriranje je stigla")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Sljedeći put")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Preskoči ovu verziju")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Ažuriraj")
|
||||
}
|
||||
|
||||
func testCzechLocalization() {
|
||||
let language: Localization.Language = .czech
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Aktualizace dostupná")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Příště")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Přeskočit tuto verzi")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Aktualizovat")
|
||||
}
|
||||
|
||||
func testDanishLocalization() {
|
||||
let language: Localization.Language = .danish
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Tilgængelig opdatering")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Næste gang")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Spring denne version over")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Opdater")
|
||||
}
|
||||
|
||||
func testDutchLocalization() {
|
||||
let language: Localization.Language = .dutch
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Update beschikbaar")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Volgende keer")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Sla deze versie over")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Updaten")
|
||||
}
|
||||
|
||||
func testEstonianLocalization() {
|
||||
let language: Localization.Language = .estonian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Uuendus saadaval")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Järgmisel korral")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Jäta see version vahele")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Uuenda")
|
||||
}
|
||||
|
||||
func testFinnishLocalization() {
|
||||
let language: Localization.Language = .finnish
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Päivitys saatavilla")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Ensi kerralla")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Jätä tämä versio väliin")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Päivitys")
|
||||
}
|
||||
|
||||
func testFrenchLocalization() {
|
||||
let language: Localization.Language = .french
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Mise à jour disponible")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "La prochaine fois")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Sauter cette version")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Mettre à jour")
|
||||
}
|
||||
|
||||
func testGermanLocalization() {
|
||||
let language: Localization.Language = .german
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Update erhältlich")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Später")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Diese Version überspringen")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Update")
|
||||
}
|
||||
|
||||
func testGreekLocalization() {
|
||||
let language: Localization.Language = .greek
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Διαθέσιμη Ενημέρωση")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Άλλη φορά")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Αγνόησε αυτήν την έκδοση")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Αναβάθμιση")
|
||||
}
|
||||
|
||||
func testHebrewLocalization() {
|
||||
let language: Localization.Language = .hebrew
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "עדכון זמין")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "בפעם הבאה")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "דלג על גרסה זו")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "עדכן")
|
||||
}
|
||||
|
||||
func testHungarianLocalization() {
|
||||
let language: Localization.Language = .hungarian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Új frissítés érhető el")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Később")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Ennél a verziónál ne figyelmeztessen")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Frissítés")
|
||||
}
|
||||
|
||||
func testIndonesianLocalization() {
|
||||
let language: Localization.Language = .indonesian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Pembaruan Tersedia")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Lain kali")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Lewati versi ini")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Perbarui")
|
||||
}
|
||||
|
||||
func testItalianLocalization() {
|
||||
let language: Localization.Language = .italian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Aggiornamento disponibile")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "La prossima volta")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Salta questa versione")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Aggiorna")
|
||||
}
|
||||
|
||||
func testJapaneseLocalization() {
|
||||
let language: Localization.Language = .japanese
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "アップデートのお知らせ")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "次回")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "このバージョンをスキップ")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "アップデート")
|
||||
}
|
||||
|
||||
func testKoreanLocalization() {
|
||||
let language: Localization.Language = .korean
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "업데이트 가능")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "다음에")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "이 버전 건너뜀")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "업데이트")
|
||||
}
|
||||
|
||||
func testLatvianLocalization() {
|
||||
let language: Localization.Language = .latvian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Atjauninājums pieejams")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Nākamreiz")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Izlaist šo versiju")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Atjaunināt")
|
||||
}
|
||||
|
||||
func testLithuanianLocalization() {
|
||||
let language: Localization.Language = .lithuanian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Atnaujinimas")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Kitą kartą")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Praleisti šią versiją")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Atnaujinti")
|
||||
}
|
||||
|
||||
func testMalayLocalization() {
|
||||
let language: Localization.Language = .malay
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Versi Terkini")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Lain kali")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Langkau versi ini")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Muat turun")
|
||||
}
|
||||
|
||||
func testNorwegianLocalization() {
|
||||
let language: Localization.Language = .norwegian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Oppdatering tilgjengelig")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Neste gang")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Hopp over denne versjonen")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Oppdater")
|
||||
}
|
||||
|
||||
func testPersianLocalization() {
|
||||
let language: Localization.Language = .persian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "بروزرسانی در دسترس")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "دفعه بعد")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "رد این نسخه")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "بروزرسانی")
|
||||
}
|
||||
|
||||
func testPersianAfghanistanLocalization() {
|
||||
let language: Localization.Language = .persianAfghanistan
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "بروزرسانی در دسترس")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "دگر بار")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "رد این نسخه")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "بروزرسانی")
|
||||
}
|
||||
|
||||
func testPersianIranLocalization() {
|
||||
let language: Localization.Language = .persianIran
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "بروزرسانی در دسترس")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "دفعه بعد")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "رد این نسخه")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "بروزرسانی")
|
||||
}
|
||||
|
||||
func testPolishLocalization() {
|
||||
let language: Localization.Language = .polish
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Aktualizacja dostępna")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Następnym razem")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Pomiń wersję")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Zaktualizuj")
|
||||
}
|
||||
|
||||
func testPortugueseBrazilLocalization() {
|
||||
let language: Localization.Language = .portugueseBrazil
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Atualização disponível")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Próxima vez")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Ignorar esta versão")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Atualizar")
|
||||
}
|
||||
|
||||
func testPortuguesePortugalLocalization() {
|
||||
let language: Localization.Language = .portuguesePortugal
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Nova actualização disponível")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Próxima vez")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Ignorar esta versão")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Actualizar")
|
||||
}
|
||||
|
||||
func testRomanianLocalization() {
|
||||
let language: Localization.Language = .romanian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Actualizare disponibilă")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Data viitoare")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Ignor această versiune")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Actualizare")
|
||||
}
|
||||
|
||||
func testRussianLocalization() {
|
||||
let language: Localization.Language = .russian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Доступно обновление")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "В следующий раз")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Пропустить эту версию")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Обновить")
|
||||
}
|
||||
|
||||
func testSerbianCyrillicLocalization() {
|
||||
let language: Localization.Language = .serbianCyrillic
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Ажурирање доступно")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Следећи пут")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Прескочи ову верзију")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Ажурирај")
|
||||
}
|
||||
|
||||
func testSerbianLatinLocalization() {
|
||||
let language: Localization.Language = .serbianLatin
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Ažuriranje dostupno")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Sledeći put")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Preskoči ovu verziju")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Ažuriraj")
|
||||
}
|
||||
|
||||
func testSlovenianLocalization() {
|
||||
let language: Localization.Language = .slovenian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Posodobitev aplikacije")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Naslednjič")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Ne želim")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Namesti")
|
||||
}
|
||||
|
||||
func testSpanishLocalization() {
|
||||
let language: Localization.Language = .spanish
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Actualización disponible")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "La próxima vez")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Saltar esta versión")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Actualizar")
|
||||
}
|
||||
|
||||
func testSwedishLocalization() {
|
||||
let language: Localization.Language = .swedish
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Tillgänglig uppdatering")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Nästa gång")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Hoppa över den här versionen")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Uppdatera")
|
||||
}
|
||||
|
||||
func testThaiLocalization() {
|
||||
let language: Localization.Language = .thai
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "มีการอัพเดท")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "ไว้คราวหน้า")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "ข้ามเวอร์ชั่นนี้")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "อัพเดท")
|
||||
}
|
||||
|
||||
func testTurkishLocalization() {
|
||||
let language: Localization.Language = .turkish
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Güncelleme Mevcut")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Daha sonra")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Boşver")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Güncelle")
|
||||
}
|
||||
|
||||
func testUkrainianLocalization() {
|
||||
let language: Localization.Language = .ukrainian
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Доступне Оновлення")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Наступного разу")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Пропустити версію")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Оновити")
|
||||
}
|
||||
|
||||
func testUrduLocalization() {
|
||||
let language: Localization.Language = .urdu
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "نیا اپڈیٹ")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "اگلی مرتبہ")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "اس ورزن کو چھوڑ دیں")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "اپڈیٹ کریں")
|
||||
}
|
||||
|
||||
func testVietnameseLocalization() {
|
||||
let language: Localization.Language = .vietnamese
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update Available", andForceLocalization: language), "Cập nhật mới")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Next time", andForceLocalization: language), "Lần tới")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Skip this version", andForceLocalization: language), "Bỏ qua phiên bản này")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle.localizedString(forKey: "Update", andForceLocalization: language), "Cập nhật")
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
# A sample Gemfile
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "cocoapods", "1.2.0"
|
||||
gem "jazzy"
|
||||
gem "cocoapods"
|
||||
gem "jazzy", :git => "https://www.github.com/realm/jazzy.git"
|
||||
gem "rubygems-bundler"
|
||||
|
||||
+70
-54
@@ -1,92 +1,108 @@
|
||||
GIT
|
||||
remote: https://www.github.com/realm/jazzy.git
|
||||
revision: 9b907b33aea078d82975abd590637fa647663805
|
||||
specs:
|
||||
jazzy (0.11.0)
|
||||
cocoapods (~> 1.5)
|
||||
mustache (~> 1.1)
|
||||
open4
|
||||
redcarpet (~> 3.4)
|
||||
rouge (>= 2.0.6, < 4.0)
|
||||
sassc (~> 2.1)
|
||||
sqlite3 (~> 1.3)
|
||||
xcinvoke (~> 0.3.0)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (2.3.5)
|
||||
activesupport (4.2.8)
|
||||
CFPropertyList (3.0.1)
|
||||
activesupport (4.2.11.1)
|
||||
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.3)
|
||||
bundler-unload (1.0.2)
|
||||
claide (1.0.3)
|
||||
cocoapods (1.7.5)
|
||||
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.7.5)
|
||||
cocoapods-deintegrate (>= 1.0.3, < 2.0)
|
||||
cocoapods-downloader (>= 1.2.2, < 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.1, < 2.0)
|
||||
cocoapods-try (>= 1.1.0, < 2.0)
|
||||
colored (~> 1.2)
|
||||
colored2 (~> 3.1)
|
||||
escape (~> 0.0.4)
|
||||
fourflusher (~> 2.0.1)
|
||||
fourflusher (>= 2.3.0, < 3.0)
|
||||
gh_inspector (~> 1.0)
|
||||
molinillo (~> 0.5.5)
|
||||
molinillo (~> 0.6.6)
|
||||
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.4)
|
||||
xcodeproj (>= 1.10.0, < 2.0)
|
||||
cocoapods-core (1.7.5)
|
||||
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.4)
|
||||
cocoapods-downloader (1.2.2)
|
||||
cocoapods-plugins (1.0.0)
|
||||
nap
|
||||
cocoapods-search (1.0.0)
|
||||
cocoapods-stats (1.0.0)
|
||||
cocoapods-trunk (1.1.2)
|
||||
cocoapods-stats (1.1.0)
|
||||
cocoapods-trunk (1.4.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.1.5)
|
||||
escape (0.0.4)
|
||||
fourflusher (2.0.1)
|
||||
executable-hooks (1.6.0)
|
||||
ffi (1.11.1)
|
||||
fourflusher (2.3.1)
|
||||
fuzzy_match (2.0.4)
|
||||
gh_inspector (1.0.3)
|
||||
i18n (0.8.1)
|
||||
jazzy (0.7.4)
|
||||
cocoapods (~> 1.0)
|
||||
mustache (~> 0.99)
|
||||
open4
|
||||
redcarpet (~> 3.2)
|
||||
rouge (~> 1.5)
|
||||
sass (~> 3.4)
|
||||
sqlite3 (~> 1.3)
|
||||
xcinvoke (~> 0.3.0)
|
||||
gh_inspector (1.1.3)
|
||||
i18n (0.9.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
liferaft (0.0.6)
|
||||
minitest (5.10.1)
|
||||
molinillo (0.5.7)
|
||||
mustache (0.99.8)
|
||||
nanaimo (0.2.3)
|
||||
minitest (5.11.3)
|
||||
molinillo (0.6.6)
|
||||
mustache (1.1.0)
|
||||
nanaimo (0.2.6)
|
||||
nap (1.1.0)
|
||||
netrc (0.7.8)
|
||||
netrc (0.11.0)
|
||||
open4 (1.3.4)
|
||||
redcarpet (3.4.0)
|
||||
rouge (1.11.1)
|
||||
ruby-macho (0.2.6)
|
||||
sass (3.4.23)
|
||||
sqlite3 (1.3.13)
|
||||
redcarpet (3.5.0)
|
||||
rouge (3.10.0)
|
||||
ruby-macho (1.4.0)
|
||||
rubygems-bundler (1.4.5)
|
||||
bundler-unload (>= 1.0.2)
|
||||
executable-hooks (>= 1.5.0)
|
||||
sassc (2.2.0)
|
||||
ffi (~> 1.9)
|
||||
sqlite3 (1.4.1)
|
||||
thread_safe (0.3.6)
|
||||
tzinfo (1.2.2)
|
||||
tzinfo (1.2.5)
|
||||
thread_safe (~> 0.1)
|
||||
xcinvoke (0.3.0)
|
||||
liferaft (~> 0.0.6)
|
||||
xcodeproj (1.4.2)
|
||||
CFPropertyList (~> 2.3.3)
|
||||
activesupport (>= 3)
|
||||
claide (>= 1.0.1, < 2.0)
|
||||
colored (~> 1.2)
|
||||
nanaimo (~> 0.2.3)
|
||||
xcodeproj (1.12.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
nanaimo (~> 0.2.6)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
cocoapods (= 1.2.0)
|
||||
jazzy
|
||||
cocoapods
|
||||
jazzy!
|
||||
rubygems-bundler
|
||||
|
||||
BUNDLED WITH
|
||||
1.14.5
|
||||
2.0.2
|
||||
|
||||
+4
-1
@@ -1,5 +1,8 @@
|
||||
// swift-tools-version:5.1
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "Siren"
|
||||
name: "Siren",
|
||||
products: [.library(name: "Siren", targets: ["Siren"])],
|
||||
targets: [.target(name: "Siren", path: "Sources")]
|
||||
)
|
||||
|
||||
@@ -1,236 +1,226 @@
|
||||
# Siren
|
||||
# Siren 🚨
|
||||
|
||||
### Notify users when a new version of your app is available and prompt them to upgrade.
|
||||
|
||||
[](https://cocoapods.org/pods/Siren) [](https://github.com/Carthage/Carthage) [](https://swift.org/package-manager/) [](https://cocoapods.org/pods/Siren) [](https://cocoapods.org/pods/Siren)
|
||||
[](https://travis-ci.org/ArtSabintsev/Siren)  
|
||||
|
||||
[](https://cocoapods.org/pods/Siren) [](https://github.com/Carthage/Carthage) [](https://github.com/JamitLabs/Accio) [](https://swift.org/package-manager/)
|
||||
|
||||
---
|
||||
|
||||
# Table of Contents
|
||||
- [**Meta**](https://github.com/ArtSabintsev/Siren#meta)
|
||||
- [About](https://github.com/ArtSabintsev/Siren#about)
|
||||
- [Features](https://github.com/ArtSabintsev/Siren#features)
|
||||
- [Screenshots](https://github.com/ArtSabintsev/Siren#screenshots)
|
||||
- [Ports](https://github.com/ArtSabintsev/Siren#ports)
|
||||
- [**Installation and Integration**](https://github.com/ArtSabintsev/Siren#installation-and-integration)
|
||||
- [Installation Instructions](https://github.com/ArtSabintsev/Siren#installation-instructions)
|
||||
- [Implementation Examples](https://github.com/ArtSabintsev/Siren#implementation-examples)
|
||||
- [**Device-Specific Checks**](https://github.com/ArtSabintsev/Siren#device-specific-checks)
|
||||
- [Localization](https://github.com/ArtSabintsev/Siren#localization)
|
||||
- [Device Compatibility](https://github.com/ArtSabintsev/Siren#device-compatibility)
|
||||
- [**Testing**](https://github.com/ArtSabintsev/Siren#testing)
|
||||
- [Testing Siren Locally](https://github.com/ArtSabintsev/Siren#testing-siren-locally)
|
||||
- [Words of Caution](https://github.com/ArtSabintsev/Siren#words-of-caution)
|
||||
- [**App Submission**](https://github.com/ArtSabintsev/Siren#app-submission)
|
||||
- [App Store Review](https://github.com/ArtSabintsev/Siren#app-store-review)
|
||||
- [Phased Releases](https://github.com/ArtSabintsev/Siren#phased-releases)
|
||||
- [**Attribution**](https://github.com/ArtSabintsev/Siren#attribution)
|
||||
- [Special Thanks](https://github.com/ArtSabintsev/Siren#special-thanks)
|
||||
- [Creator](https://github.com/ArtSabintsev/Siren#creator)
|
||||
|
||||
---
|
||||
|
||||
# Meta
|
||||
|
||||
## About
|
||||
**Siren** checks a user's currently installed version of your iOS app against the version that is currently available in the App Store.
|
||||
|
||||
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.
|
||||
If a new version is available, a language localized 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 through alternative means, such as a custom user interface.
|
||||
|
||||
- Siren is built to work with the [**Semantic Versioning**](http://semver.org/) system.
|
||||
- Semantic Versioning is a three number versioning system (e.g., 1.0.0)
|
||||
- Siren also supports two-number versioning (e.g., 1.0) and four-number versioning (e.g., 1.0.0.0)
|
||||
- Siren is actively maintained by [**Arthur Sabintsev**](http://github.com/ArtSabintsev) and [**Aaron Brager**](http://twitter.com/getaaron)
|
||||
|
||||
## README Translations
|
||||
- [**简体中文**](README.zh_CN.md) (by [**Daniel Hu**](http://www.jianshu.com/u/d8bbc4831623))
|
||||
|
||||
## Ports
|
||||
- Siren is a Swift language port of [**Harpy**](http://github.com/ArtSabintsev/Harpy), an Objective-C library that achieves the same functionality.
|
||||
- Siren and Harpy are maintained by the same developers.
|
||||
- This library was the inspiration for [**Egghead Games' Siren library**](https://github.com/eggheadgames/Siren), which achieves the same functionality with the Google Play store on the Android platform.
|
||||
- This library was the inspiration for [**Gant Laborde's Siren library**](https://github.com/GantMan/react-native-siren), which achieves the same functionality for React Native projects (iOS/Android).
|
||||
Siren is built to work with the [**Semantic Versioning**](https://semver.org/) system.
|
||||
- Canonical Semantic Versioning uses a three number versioning system (e.g., 1.0.0)
|
||||
- Siren also supports two-number versioning (e.g., 1.0) and four-number versioning (e.g., 1.0.0.0)
|
||||
|
||||
## Features
|
||||
- [x] CocoaPods Support
|
||||
- [x] Carthage Support
|
||||
- [x] Swift Package Manager Support
|
||||
- [x] Localized for 30+ languages (See **Localization**)
|
||||
- [x] Pre-Update Device Compatibility Check (See **Device Compatibility**)
|
||||
- [x] Three types of alerts (see **Screenshots**)
|
||||
- [x] Optional delegate methods (see **Optional Delegate**)
|
||||
- [x] Unit Tests!
|
||||
|
||||
### Current Features
|
||||
- [x] CocoaPods, Carthage, and Swift Package Manager Support (see [Installation Instructions](https://github.com/ArtSabintsev/Siren#installation-instructions))
|
||||
- [x] Three Types of Alerts (see [Screenshots](https://github.com/ArtSabintsev/Siren#screenshots))
|
||||
- [x] Highly Customizable Presentation Rules (see [Implementation Examples](https://github.com/ArtSabintsev/Siren#implementation-examples))
|
||||
- [x] Localized for 40+ Languages (see [Localization](https://github.com/ArtSabintsev/Siren#localization))
|
||||
- [x] Device Compatibility Check (see [Device Compatibility](https://github.com/ArtSabintsev/Siren#device-compatibility))
|
||||
- [x] 100% Documentation Coverage (see https://sabintsev.com/Siren)
|
||||
|
||||
### Future Features
|
||||
A list of future development work can be found on [Siren's Kanban Board](https://github.com/ArtSabintsev/Siren/projects/1).
|
||||
|
||||
---
|
||||
|
||||
## Screenshots
|
||||
|
||||
- The **left picture** forces the user to update the app.
|
||||
- The **center picture** gives the user the option to update the app.
|
||||
- The **right picture** gives the user the option to skip the current update.
|
||||
- These options are controlled by the `SirenAlertType` enum.
|
||||
- These options are controlled by the `Rules.AlertType` enum.
|
||||
|
||||
<img src="https://github.com/ArtSabintsev/Harpy/blob/master/Assets/picForcedUpdate.png?raw=true" height=480">
|
||||
<img src="https://github.com/ArtSabintsev/Harpy/blob/master/Assets/picOptionalUpdate.png?raw=true" height=480">
|
||||
<img src="https://github.com/ArtSabintsev/Harpy/blob/master/Assets/picSkippedUpdate.png?raw=true" height=480">
|
||||
<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">
|
||||
|
||||
## Ports
|
||||
- **Objective-C (iOS)**
|
||||
- [**Harpy**](https://github.com/ArtSabintsev/Harpy)
|
||||
- Siren was ported _from_ Harpy, as Siren and Harpy are maintained by the same developer.
|
||||
- As of December 2018, Harpy has been deprecated in favor of Siren.
|
||||
- **Java (Android)**
|
||||
- [**Egghead Games' Siren library**](https://github.com/eggheadgames/Siren)
|
||||
- The Siren Swift library inspired the Java library.
|
||||
- **React Native (iOS)**
|
||||
- [**Gant Laborde's Siren library**](https://github.com/GantMan/react-native-siren)
|
||||
- The Siren Swift library inspired the React Native library.
|
||||
|
||||
---
|
||||
|
||||
# Installation and Integration
|
||||
|
||||
## Installation Instructions
|
||||
|
||||
| Swift Version | Branch Name | Will Continue to Receive Updates?
|
||||
| ------------- | ------------- | -------------
|
||||
| 5.1 | master | **Yes**
|
||||
| 5.0 | swift5.0 | No
|
||||
| 4.2 | swift4.2 | No
|
||||
| 4.1 | swift4.1 | No
|
||||
| 3.2 | swift3.2 | No
|
||||
| 3.1 | swift3.1 | No
|
||||
| 2.3 | swift2.3 | No
|
||||
|
||||
### CocoaPods
|
||||
For Swift 3 support:
|
||||
```ruby
|
||||
pod 'Siren'
|
||||
```
|
||||
|
||||
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'
|
||||
pod 'Siren' # Swift 5.1
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift5.0' # Swift 5.0
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift4.2' # Swift 4.2
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift4.1' # Swift 4.1
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.2' # Swift 3.2
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.1' # Swift 3.1
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift2.3' # Swift 2.3
|
||||
```
|
||||
|
||||
### Carthage
|
||||
For Swift 3 support:
|
||||
|
||||
``` swift
|
||||
github "ArtSabintsev/Siren"
|
||||
```
|
||||
|
||||
For Swift 2.3 support:
|
||||
|
||||
``` swift
|
||||
github "ArtSabintsev/Siren" "swift2.3"
|
||||
```swift
|
||||
github "ArtSabintsev/Siren" // Swift 5.0
|
||||
github "ArtSabintsev/Siren" "swift5.0" // Swift 5.0
|
||||
github "ArtSabintsev/Siren" "swift4.2" // Swift 4.2
|
||||
github "ArtSabintsev/Siren" "swift4.1" // Swift 4.1
|
||||
github "ArtSabintsev/Siren" "swift3.2" // Swift 3.2
|
||||
github "ArtSabintsev/Siren" "swift3.1" // Swift 3.1
|
||||
github "ArtSabintsev/Siren" "swift2.3" // Swift 2.3
|
||||
```
|
||||
|
||||
### Swift Package Manager
|
||||
```swift
|
||||
.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 1)
|
||||
.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 5)
|
||||
```
|
||||
|
||||
## Setup
|
||||
|
||||
Here's some commented sample code. Adapt this to meet your app's needs. For a full list of optional settings/preferences, please refer to https://github.com/ArtSabintsev/Siren/blob/master/Sample%20App/Sample%20App/AppDelegate.swift in the Sample Project.
|
||||
|
||||
Full documentation can be found at http://sabintsev.com/Siren.
|
||||
|
||||
```Swift
|
||||
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
|
||||
/* Siren code should go below window?.makeKeyAndVisible() */
|
||||
|
||||
// Siren is a singleton
|
||||
let siren = Siren.shared
|
||||
|
||||
// Optional: Defaults to .Option
|
||||
siren.alertType = <#SirenAlertType_Enum_Value#>
|
||||
|
||||
/*
|
||||
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)
|
||||
}
|
||||
```
|
||||
|
||||
And you're all set!
|
||||
|
||||
### Prompting for Updates without Alerts
|
||||
|
||||
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:
|
||||
## Implementation Examples
|
||||
Implementing Siren is as easy as adding two lines of code to your app in **either** `AppDelegate.swift` or `SceneDelegate.swift`:
|
||||
|
||||
### AppDelegate.swift Example
|
||||
```swift
|
||||
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
|
||||
...
|
||||
siren.delegate = self
|
||||
siren.alertType = .None
|
||||
...
|
||||
}
|
||||
import Siren // Line 1
|
||||
import UIKit
|
||||
|
||||
extension AppDelegate: SirenDelegate {
|
||||
// Returns a localized message to this delegate method upon performing a successful version check
|
||||
func sirenDidDetectNewVersionWithoutAlert(message: String) {
|
||||
print("\(message)")
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
var window: UIWindow?
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
|
||||
window?.makeKeyAndVisible()
|
||||
|
||||
Siren.shared.wail() // Line 2
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Siren will call the `sirenDidDetectNewVersionWithoutAlert(message: String)` delegate method, passing a localized, suggested update string suitable for display. Implement this method to display your own messaging, optionally using `message`.
|
||||
|
||||
## Differentiated Alerts for Revision, Patch, Minor, and Major Updates
|
||||
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 *optional* lines to your setup *before* calling the `checkVersion()` method:
|
||||
|
||||
### SceneDelegate.swift Example
|
||||
```swift
|
||||
/* Siren defaults to SirenAlertType.Option for all updates */
|
||||
siren.shared.revisionUpdateAlertType = <#SirenAlertType_Enum_Value#>
|
||||
siren.shared.patchUpdateAlertType = <#SirenAlertType_Enum_Value#>
|
||||
siren.shared.minorUpdateAlertType = <#SirenAlertType_Enum_Value#>
|
||||
siren.shared.majorUpdateAlertType = <#SirenAlertType_Enum_Value#>
|
||||
```
|
||||
import Siren // Line 1
|
||||
import UIKit
|
||||
|
||||
## Optional Delegate and Delegate Methods
|
||||
Six delegate methods allow you to handle or track the user's behavior. Each method has a default, empty implementation, effectively making each of these methods optional.
|
||||
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
|
||||
|
||||
``` swift
|
||||
public protocol SirenDelegate: class {
|
||||
func sirenDidShowUpdateDialog(alertType: SirenAlertType) // 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
|
||||
var window: UIWindow?
|
||||
|
||||
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
|
||||
window?.makeKeyAndVisible()
|
||||
|
||||
Siren.shared.wail() // Line 2
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Siren also has plenty of customization options. All examples can be found in the Example Project's [**AppDelegate**](https://github.com/ArtSabintsev/Siren/blob/master/Example/Example/AppDelegate.swift) file. Uncomment the example you'd like to test.
|
||||
|
||||
---
|
||||
|
||||
# Device-Specific Checks
|
||||
|
||||
## Localization
|
||||
Siren is localized for
|
||||
- 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
|
||||
Siren is localized for the following languages:
|
||||
|
||||
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).
|
||||
Arabic, Armenian, Basque, Chinese (Simplified and Traditional), Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hebrew, Hungarian, Indonesian, Italian, Japanese, Korean, Latvian, Lithuanian, Malay, Norwegian (Bokmål), Persian (Afghanistan, Iran, Persian), Polish, Portuguese (Brazil and Portugal), Romanian, Russian, Serbian (Cyrillic and Latin), Slovenian, Spanish, Swedish, Thai, Turkish, Ukrainian, Urdu, Vietnamese
|
||||
|
||||
You can enable it like this:
|
||||
If your user's device is set to one of the supported locales, an update message will appear in that language. If a locale is not supported, than the message will appear in English.
|
||||
|
||||
You may want the update dialog to *always* appear in a certain language, ignoring the user's device-specific setting. You can enable it like so:
|
||||
|
||||
```swift
|
||||
Siren.shared.forceLanguageLocalization = SirenLanguageType.<#SirenLanguageType_Enum_Value#>
|
||||
// In this example, we force the `Russian` language.
|
||||
Siren.shared.presentationManager = PresentationManager(forceLanguageLocalization: .russian)
|
||||
```
|
||||
|
||||
## Device Compatibility
|
||||
If an app update is available, Siren checks to make sure that the version of iOS on the user's device is compatible the one that is required by the app update. For example, if a user has iOS 9 installed on their device, but the app update requires iOS 10, an alert will not be shown. This takes care of the *false positive* case regarding app updating.
|
||||
If an app update is available, Siren checks to make sure that the version of iOS on the user's device is compatible with the one that is required by the app update. For example, if a user has iOS 11 installed on their device, but the app update requires iOS 12, an alert will not be shown. This takes care of the *false positive* case regarding app updating.
|
||||
|
||||
## Testing Siren
|
||||
Temporarily change the version string in Xcode (within the `.xcodeproj`) to an older version than the one that's currently available in the App Store. Afterwards, build and run your app, and you should see the alert.
|
||||
---
|
||||
|
||||
If you currently don't have an app in the store, change your bundleID to one that is already in the store. In the sample app packaged with this library, we use the [iTunes Connect Mobile](https://itunes.apple.com/us/app/itunes-connect/id376771144?mt=8) app's bundleID: `com.apple.itunesconnect.mobile`.
|
||||
# Testing
|
||||
|
||||
For your convenience, you may turn on debugging statements by setting `self.debugEnabled = true` before calling the `checkVersion()` method.
|
||||
## Testing Siren Locally
|
||||
Temporarily change the version string in Xcode (within the `.xcodeproj` file) to an older version than the one that's currently available in the App Store. Afterwards, build and run your app, and you should see the alert.
|
||||
|
||||
## App Store Submissions
|
||||
If you currently don't have an app in the store, change your bundleID to one that is already in the store. In the sample app packaged with this library, we use the [App Store Connect](https://itunes.apple.com/app/id1234793120) app's bundleID: `com.apple.AppStoreConnect`.
|
||||
|
||||
## Words of Caution
|
||||
Occasionally, the iTunes JSON will update faster than the App Store CDN, meaning the JSON may state that the new version of the app has been released, while no new binary is made available for download via the App Store. It is for this reason that Siren will, by default, wait 1 day (24 hours) after the JSON has been updated to prompt the user to update. To change the default setting, please modify the value of `showAlertAfterCurrentVersionHasBeenReleasedForDays`.
|
||||
|
||||
---
|
||||
|
||||
# App Submission
|
||||
|
||||
## App Store Review
|
||||
The App Store reviewer will **not** see the alert. The version in the App Store will always be older than the version being reviewed.
|
||||
|
||||
## Created and maintained by
|
||||
[Arthur Ariel Sabintsev](http://www.sabintsev.com/) & [Aaron Brager](http://twitter.com/getaaron)
|
||||
## Phased Releases
|
||||
In 2017, Apple announced the [ability to rollout app updates gradually (a.k.a. Phased Releases)](https://itunespartner.apple.com/en/apps/faq/Managing%20Your%20Apps_Submission%20Process). Siren will continue to work as it has in the past, presenting an update modal to _all_ users. If you opt-in to a phased rollout for a specific version, you have a few choices:
|
||||
|
||||
- You can leave Siren configured as normal. Phased rollout will continue to auto-update apps. Since all users can still manually update your app directly from the App Store, Siren will ignore the phased rollout and will prompt users to update.
|
||||
- You can set `showAlertAfterCurrentVersionHasBeenReleasedForDays` to `7`, and Siren will not prompt any users until the latest version is 7 days old, after the phased rollout is complete.
|
||||
- You can remotely disable Siren until the rollout is done using your own API / backend logic.
|
||||
|
||||
---
|
||||
|
||||
# Attribution
|
||||
|
||||
## Special Thanks
|
||||
A massive shout-out and thank you goes to the following folks:
|
||||
|
||||
- [Aaron Brager](https://twitter.com/@getaaron) for motivating me and assisting me in building the initial proof-of-concept of Siren (based on [Harpy](https:github.com/ArtSabintsev/Harpy)) back in 2015. Without him, Siren may never have been built.
|
||||
- All of [Harpy's Contributors](https://github.com/ArtSabintsev/Harpy/graphs/contributors) for helping building the feature set from 2012-2015 that was used as the basis for the first version of Siren.
|
||||
- All of [Siren's Contributors](https://github.com/ArtSabintsev/Siren/graphs/contributors) for helping make Siren as powerful and bug-free as it currently is today.
|
||||
|
||||
## Creator
|
||||
[Arthur Ariel Sabintsev](http://www.sabintsev.com/)
|
||||
|
||||
-232
@@ -1,232 +0,0 @@
|
||||
# Siren [English](README.md)
|
||||
|
||||
### 当您的 app 有新版本可用时提示用户进行更新。
|
||||
|
||||
[](https://travis-ci.org/ArtSabintsev/Siren) [](https://cocoapods.org/pods/Siren) [](https://github.com/Carthage/Carthage) [](https://swift.org/package-manager/) [](https://cocoapods.org/pods/Siren) [](https://cocoapods.org/pods/Siren)
|
||||
---
|
||||
|
||||
## 关于
|
||||
**Siren** 用于检测用户当前安装版本是否是 App Store 上的最新可用版本。
|
||||
|
||||
当 app 有更新时,Siren 会弹出提示框,用户可根据提示框提供的选项进行更新。或者您也可以根据 Siren 发出的消息来自定义通知用户的方式,比如您可以提供一个自定义的提示框。
|
||||
|
||||
- Siren 可配合 [**Semantic Versioning**](http://semver.org/) 系统使用
|
||||
- Semantic 版本系统由三位数字标识 (比如,1.0.0)
|
||||
- Siren 同时支持两位数字标识 (比如,1.0)
|
||||
- Siren 同时支持四位数字标识 (比如,1.0.0.0)
|
||||
- Siren 当前处于活跃维护状态,由[**Arthur Sabintsev**](http://github.com/ArtSabintsev) 和 [**Aaron Brager**](http://twitter.com/getaaron) 进行维护。
|
||||
|
||||
|
||||
## Ports
|
||||
- [**Harpy**](http://github.com/ArtSabintsev/Harpy) 是 Objective-C 实现的版本更新检查库,Siren 是 Harpy 的 swift 版本。
|
||||
- Siren 和 Harpy 是由相同的开发者维护。
|
||||
- 安卓平台 Play Store 上的 [**Egghead Games' Siren library**](https://github.com/eggheadgames/Siren) 库使用了和 Siren 相同的原理实现了版本更新检测。
|
||||
- 针对 React Native 项目 (iOS/Android) 的 [**Gant Laborde's Siren library**](https://github.com/GantMan/react-native-siren) 库使用了和 Siren 相同的原理实现了版本更新检测。
|
||||
|
||||
## 特点
|
||||
- [x] 支持 Cocoapods
|
||||
- [x] 支持 Carthage
|
||||
- [x] 支持 Swift 包管理器
|
||||
- [x] 30+ 语言本地化 (查看**本地化**)
|
||||
- [x] 设备兼容性检测 (查看**设备兼容性**)
|
||||
- [x] 三种类型的弹出提示框 (查看**截图**)
|
||||
- [x] 可选代理方法 (查看**可选代理**)
|
||||
- [x] 单元测试!
|
||||
|
||||
## 截图
|
||||
|
||||
- **左图** 强制用户更新
|
||||
- **中间** 给用户提供更新选项
|
||||
- **右图** 给用户提供更新和跳过更新选项
|
||||
- 这些选项对应着 `SirenAlertType` 枚举类型
|
||||
|
||||
<img src="https://github.com/ArtSabintsev/Harpy/blob/master/samplePictures/picForcedUpdate.png?raw=true" height=480">
|
||||
<img src="https://github.com/ArtSabintsev/Harpy/blob/master/samplePictures/picOptionalUpdate.png?raw=true" height=480">
|
||||
<img src="https://github.com/ArtSabintsev/Harpy/blob/master/samplePictures/picSkippedUpdate.png?raw=true" height=480">
|
||||
|
||||
## 安装指南
|
||||
|
||||
### CocoaPods
|
||||
Swift 3 版本:
|
||||
```ruby
|
||||
pod 'Siren'
|
||||
```
|
||||
|
||||
Swift 2.3 版本:
|
||||
|
||||
```ruby
|
||||
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift2.3'
|
||||
```
|
||||
|
||||
Swift 2.2 版本:
|
||||
|
||||
```ruby
|
||||
pod 'Siren', '0.9.5'
|
||||
```
|
||||
|
||||
### Carthage
|
||||
FSwift 3 版本:
|
||||
|
||||
``` swift
|
||||
github "ArtSabintsev/Siren"
|
||||
```
|
||||
|
||||
Swift 2.3 版本:
|
||||
|
||||
``` swift
|
||||
github "ArtSabintsev/Siren" "swift2.3"
|
||||
```
|
||||
|
||||
### Swift 包管理器
|
||||
```swift
|
||||
.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 1)
|
||||
```
|
||||
|
||||
## 使用
|
||||
下面是一些示例代码。请根据您的需求进行修改。更详细的使用说明请参考示例项目中的 https://github.com/ArtSabintsev/Siren/blob/master/Sample%20App/Sample%20App/AppDelegate.swift。
|
||||
|
||||
```Swift
|
||||
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
|
||||
/* Siren code should go below window?.makeKeyAndVisible() */
|
||||
|
||||
// Siren is a singleton
|
||||
let siren = Siren.sharedInstance
|
||||
|
||||
// Optional: Defaults to .Option
|
||||
siren.alertType = <#SirenAlertType_Enum_Value#>
|
||||
|
||||
/*
|
||||
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.sharedInstance.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.sharedInstance.checkVersion(checkType: .immediately)
|
||||
}
|
||||
```
|
||||
|
||||
### 使用非弹出提示框进行提示
|
||||
|
||||
您可以使用顶部条幅等更友好的方式进行提示。首先,您需要通过下面代码禁用弹出提示框:
|
||||
|
||||
```swift
|
||||
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
|
||||
...
|
||||
siren.delegate = self
|
||||
siren.alertType = .None
|
||||
...
|
||||
}
|
||||
|
||||
extension AppDelegate: SirenDelegate {
|
||||
// 当检测到有更新可用时向该代理方法传递一个本地化的提示信息
|
||||
func sirenDidDetectNewVersionWithoutAlert(message: String) {
|
||||
print("\(message)")
|
||||
}
|
||||
}
|
||||
```
|
||||
Siren 会调用 `sirenDidDetectNewVersionWithoutAlert(message: String)` 代理方法,该方法传递了一个本地化的更新提示信息作为参数。您可以使用该参数作为提示信息,也可以使用自定义的提示信息。
|
||||
|
||||
## 为修订版,补丁,小版本,大版本设置不同的提示框类型
|
||||
您可以为修订版,补丁,小版本,大版本等设置不同提示框类型,只需要在 `checkVersion()` 方法前调用进行如下设置即可:
|
||||
|
||||
```swift
|
||||
/* Siren defaults to SirenAlertType.Option for all updates */
|
||||
siren.sharedInstance().revisionUpdateAlertType = <#SirenAlertType_Enum_Value#>
|
||||
siren.sharedInstance().patchUpdateAlertType = <#SirenAlertType_Enum_Value#>
|
||||
siren.sharedInstance().minorUpdateAlertType = <#SirenAlertType_Enum_Value#>
|
||||
siren.sharedInstance().majorUpdateAlertType = <#SirenAlertType_Enum_Value#>
|
||||
```
|
||||
|
||||
##可选代理和代理方法
|
||||
您可以通过下面六个代理方法跟踪用户进行的操作。
|
||||
|
||||
``` swift
|
||||
public protocol SirenDelegate: class {
|
||||
func sirenDidShowUpdateDialog(alertType: SirenAlertType) // 弹出更新提示框
|
||||
func sirenUserDidLaunchAppStore() // 用户点击去 app store 更新
|
||||
func sirenUserDidSkipVersion() // 用户点击跳过此次更新
|
||||
func sirenUserDidCancel() // 用户点击取消更新
|
||||
func sirenDidFailVersionCheck(error: NSError) // 检查更新失败(可能返回系统级别的错误)
|
||||
func sirenDidDetectNewVersionWithoutAlert(message: String) // 检测到更新但不弹出提示框
|
||||
}
|
||||
```
|
||||
|
||||
## 本地化
|
||||
Siren 为以下国家做了本地化
|
||||
- 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
|
||||
|
||||
您可以通过以下代码忽略 iOS 系统语言设置,为弹出框设置固定语言。
|
||||
|
||||
```swift
|
||||
Siren.sharedInstance.forceLanguageLocalization = SirenLanguageType.<#SirenLanguageType_Enum_Value#>
|
||||
```
|
||||
|
||||
## 设备兼容性
|
||||
当有更新可用时,Siren 会检测用户的 iOS 版本号是否符合更新需求。比如,用户的系统是 iOS 9,但此次更新只针对 iOS 10,这时是不会出现弹出提示框。
|
||||
|
||||
## 测试
|
||||
测试时,需要暂时将 Xcode 里(`.xcodeproj` 文件) 的版本号修改为比当前苹果商店中的可用版本号大。这样编译运行 app 时,您就可以看到弹出提示框。
|
||||
|
||||
如果您尚未发布过 App,把 bundleID 修改为一个 app store 已经存在的 bundleID。在示例项目中,我们使用了 [iTunes Connect Mobile](https://itunes.apple.com/us/app/itunes-connect/id376771144?mt=8) 的 bundleID:`com.apple.itunesconnect.mobile`。
|
||||
|
||||
为方便调试,您可以在调用 `checkVersion()` 方法前通过 `self.debugEnabled = true` 来开启调试模式。
|
||||
|
||||
## 提交至 App Store
|
||||
因为商店里的可用版本总是比提交审核的版本老,所以苹果商店审核人员在审核时是**不会**弹出提示框的。
|
||||
|
||||
##创建维护人员
|
||||
[Arthur Ariel Sabintsev](http://www.sabintsev.com/) & [Aaron Brager](http://twitter.com/getaaron)
|
||||
|
||||
## 翻译人员
|
||||
[Daniel Hu](http://www.jianshu.com/u/d8bbc4831623)
|
||||
+13
-13
@@ -1,22 +1,22 @@
|
||||
Pod::Spec.new do |s|
|
||||
# Version
|
||||
s.version = "5.2.2"
|
||||
s.swift_version = "5.1"
|
||||
|
||||
# Meta
|
||||
s.name = "Siren"
|
||||
s.version = "1.2.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 user’s currently installed version of your iOS app against the version that is currently available in the App Store. If a new version is available, an instance of UIAlertController can be presented to the user informing them of the newer version, and giving them the option to update the application. Alternatively, Siren can notify your app programmatically, enabling you to inform the user through alternative means, such as a custom interface.
|
||||
|
||||
Siren is built to work with the Semantic Versioning system.
|
||||
Siren is a Swift port of Harpy, an Objective-C library that achieves the same functionality.
|
||||
Siren is actively maintained by Arthur Sabintsev and Aaron Brager.
|
||||
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.authors = { "Arthur Ariel Sabintsev" => "arthur@sabintsev.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/Siren.swift'
|
||||
s.source_files = 'Sources/**/*.swift'
|
||||
s.resources = 'Sources/Siren.bundle'
|
||||
s.requires_arc = true
|
||||
|
||||
|
||||
@@ -1,627 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
55EC364B1E6BB98A00726F13 /* Siren.h in Headers */ = {isa = PBXBuildFile; fileRef = 55EC36491E6BB98A00726F13 /* Siren.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
55EC364E1E6BB98A00726F13 /* Siren.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55EC36471E6BB98A00726F13 /* Siren.framework */; };
|
||||
55EC364F1E6BB98A00726F13 /* Siren.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 55EC36471E6BB98A00726F13 /* Siren.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
55EC36601E6BB99B00726F13 /* Siren.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 55EC365E1E6BB99B00726F13 /* Siren.bundle */; };
|
||||
55EC36611E6BB99B00726F13 /* Siren.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55EC365F1E6BB99B00726F13 /* Siren.swift */; };
|
||||
8E1635A91E6A0B9C0060CE27 /* SirenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EE6C74C1E6A0AE100DBE454 /* SirenTests.swift */; };
|
||||
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 */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
55EC364C1E6BB98A00726F13 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 8EC391791A58B465001C121E /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 55EC36461E6BB98A00726F13;
|
||||
remoteInfo = Siren;
|
||||
};
|
||||
8E3A6C091D07CB6F00A8B7CF /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 8EC391791A58B465001C121E /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 8EC391801A58B465001C121E;
|
||||
remoteInfo = "Sample App";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
558455D81C6690B4004BE492 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
55EC364F1E6BB98A00726F13 /* Siren.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
55EC36471E6BB98A00726F13 /* Siren.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Siren.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
55EC36491E6BB98A00726F13 /* Siren.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Siren.h; sourceTree = "<group>"; };
|
||||
55EC364A1E6BB98A00726F13 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
55EC365D1E6BB98C00726F13 /* Siren copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Siren copy-Info.plist"; path = "/Users/sabintseva/Documents/oss/siren/SirenExample/Siren copy-Info.plist"; sourceTree = "<absolute>"; };
|
||||
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>"; };
|
||||
8E3A6C041D07CB6F00A8B7CF /* SirenExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SirenExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
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; };
|
||||
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 */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
55EC36431E6BB98A00726F13 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8E3A6C011D07CB6F00A8B7CF /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8EC3917E1A58B465001C121E /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
55EC364E1E6BB98A00726F13 /* Siren.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
55EC36481E6BB98A00726F13 /* Siren */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
55EC365E1E6BB99B00726F13 /* Siren.bundle */,
|
||||
55EC365F1E6BB99B00726F13 /* Siren.swift */,
|
||||
55EC36491E6BB98A00726F13 /* Siren.h */,
|
||||
55EC364A1E6BB98A00726F13 /* Info.plist */,
|
||||
);
|
||||
path = Siren;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8E1005DE1A5DD02300509B14 /* SirenExample */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EE6C7411E6A0AA500DBE454 /* AppDelegate.swift */,
|
||||
8EE6C7421E6A0AA500DBE454 /* ViewController.swift */,
|
||||
8EBDF8211E6A0C41006C87B4 /* LaunchScreen.xib */,
|
||||
8EBDF8231E6A0C41006C87B4 /* Main.storyboard */,
|
||||
8EE6C7461E6A0AB800DBE454 /* Images.xcassets */,
|
||||
8EE6C7471E6A0AB800DBE454 /* Info.plist */,
|
||||
);
|
||||
name = SirenExample;
|
||||
path = "Sample App";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EC391781A58B465001C121E = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8E1005DE1A5DD02300509B14 /* SirenExample */,
|
||||
8EE6C74A1E6A0AE100DBE454 /* SirenExampleTests */,
|
||||
55EC36481E6BB98A00726F13 /* Siren */,
|
||||
8EC391821A58B465001C121E /* Products */,
|
||||
55EC365D1E6BB98C00726F13 /* Siren copy-Info.plist */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EC391821A58B465001C121E /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EC391811A58B465001C121E /* SirenExample.app */,
|
||||
8E3A6C041D07CB6F00A8B7CF /* SirenExampleTests.xctest */,
|
||||
55EC36471E6BB98A00726F13 /* Siren.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EE6C74A1E6A0AE100DBE454 /* SirenExampleTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8EE6C74B1E6A0AE100DBE454 /* Info.plist */,
|
||||
8EE6C74C1E6A0AE100DBE454 /* SirenTests.swift */,
|
||||
);
|
||||
path = SirenExampleTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
55EC36441E6BB98A00726F13 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
55EC364B1E6BB98A00726F13 /* Siren.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
55EC36461E6BB98A00726F13 /* Siren */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 55EC36521E6BB98A00726F13 /* Build configuration list for PBXNativeTarget "Siren" */;
|
||||
buildPhases = (
|
||||
55EC36421E6BB98A00726F13 /* Sources */,
|
||||
55EC36431E6BB98A00726F13 /* Frameworks */,
|
||||
55EC36441E6BB98A00726F13 /* Headers */,
|
||||
55EC36451E6BB98A00726F13 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Siren;
|
||||
productName = Siren;
|
||||
productReference = 55EC36471E6BB98A00726F13 /* Siren.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
8E3A6C031D07CB6F00A8B7CF /* SirenExampleTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8E3A6C0D1D07CB6F00A8B7CF /* Build configuration list for PBXNativeTarget "SirenExampleTests" */;
|
||||
buildPhases = (
|
||||
8E3A6C001D07CB6F00A8B7CF /* Sources */,
|
||||
8E3A6C011D07CB6F00A8B7CF /* Frameworks */,
|
||||
8E3A6C021D07CB6F00A8B7CF /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
8E3A6C0A1D07CB6F00A8B7CF /* PBXTargetDependency */,
|
||||
);
|
||||
name = SirenExampleTests;
|
||||
productName = SirenTests;
|
||||
productReference = 8E3A6C041D07CB6F00A8B7CF /* SirenExampleTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
8EC391801A58B465001C121E /* SirenExample */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8EC391A01A58B466001C121E /* Build configuration list for PBXNativeTarget "SirenExample" */;
|
||||
buildPhases = (
|
||||
8EC3917D1A58B465001C121E /* Sources */,
|
||||
8EC3917E1A58B465001C121E /* Frameworks */,
|
||||
8EE3A3F81E6A0E470010BDCE /* SwiftLint */,
|
||||
8EC3917F1A58B465001C121E /* Resources */,
|
||||
558455D81C6690B4004BE492 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
55EC364D1E6BB98A00726F13 /* PBXTargetDependency */,
|
||||
);
|
||||
name = SirenExample;
|
||||
productName = Siren;
|
||||
productReference = 8EC391811A58B465001C121E /* SirenExample.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
8EC391791A58B465001C121E /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftMigration = 0700;
|
||||
LastSwiftUpdateCheck = 0730;
|
||||
LastUpgradeCheck = 0820;
|
||||
ORGANIZATIONNAME = "Sabintsev iOS Projects";
|
||||
TargetAttributes = {
|
||||
55EC36461E6BB98A00726F13 = {
|
||||
CreatedOnToolsVersion = 8.2.1;
|
||||
LastSwiftMigration = 0820;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
8E3A6C031D07CB6F00A8B7CF = {
|
||||
CreatedOnToolsVersion = 7.3.1;
|
||||
LastSwiftMigration = 0800;
|
||||
TestTargetID = 8EC391801A58B465001C121E;
|
||||
};
|
||||
8EC391801A58B465001C121E = {
|
||||
CreatedOnToolsVersion = 6.1.1;
|
||||
DevelopmentTeam = HT94948NDD;
|
||||
DevelopmentTeamName = "Arthur Sabintsev";
|
||||
LastSwiftMigration = 0800;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 8EC3917C1A58B465001C121E /* Build configuration list for PBXProject "SirenExample" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 8EC391781A58B465001C121E;
|
||||
productRefGroup = 8EC391821A58B465001C121E /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8EC391801A58B465001C121E /* SirenExample */,
|
||||
8E3A6C031D07CB6F00A8B7CF /* SirenExampleTests */,
|
||||
55EC36461E6BB98A00726F13 /* Siren */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
55EC36451E6BB98A00726F13 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
55EC36601E6BB99B00726F13 /* Siren.bundle in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8E3A6C021D07CB6F00A8B7CF /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8EC3917F1A58B465001C121E /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8EBDF8261E6A0C41006C87B4 /* Main.storyboard in Resources */,
|
||||
8EBDF8251E6A0C41006C87B4 /* LaunchScreen.xib in Resources */,
|
||||
8EE6C7481E6A0AB800DBE454 /* Images.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
8EE3A3F81E6A0E470010BDCE /* SwiftLint */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = SwiftLint;
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "if which swiftlint >/dev/null; then\nswiftlint lint --config ../.swiftlint.yml\nelse\necho \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
55EC36421E6BB98A00726F13 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
55EC36611E6BB99B00726F13 /* Siren.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8E3A6C001D07CB6F00A8B7CF /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8E1635A91E6A0B9C0060CE27 /* SirenTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8EC3917D1A58B465001C121E /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8EE6C7431E6A0AA500DBE454 /* AppDelegate.swift in Sources */,
|
||||
8EE6C7441E6A0AA500DBE454 /* ViewController.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
55EC364D1E6BB98A00726F13 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 55EC36461E6BB98A00726F13 /* Siren */;
|
||||
targetProxy = 55EC364C1E6BB98A00726F13 /* PBXContainerItemProxy */;
|
||||
};
|
||||
8E3A6C0A1D07CB6F00A8B7CF /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 8EC391801A58B465001C121E /* SirenExample */;
|
||||
targetProxy = 8E3A6C091D07CB6F00A8B7CF /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
8EBDF8211E6A0C41006C87B4 /* LaunchScreen.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
8EBDF8221E6A0C41006C87B4 /* Base */,
|
||||
);
|
||||
name = LaunchScreen.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8EBDF8231E6A0C41006C87B4 /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
8EBDF8241E6A0C41006C87B4 /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
55EC36501E6BB98A00726F13 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Siren/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.sabintsev.Siren;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
55EC36511E6BB98A00726F13 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Siren/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.sabintsev.Siren;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
8E3A6C0B1D07CB6F00A8B7CF /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = SirenExampleTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.sabintsev.SirenTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SirenExample.app/SirenExample";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8E3A6C0C1D07CB6F00A8B7CF /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = SirenExampleTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.sabintsev.SirenTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SirenExample.app/SirenExample";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
8EC3919E1A58B466001C121E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = 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_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8EC3919F1A58B466001C121E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = 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_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
8EC391A11A58B466001C121E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/SirenExample/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;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8EC391A21A58B466001C121E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/SirenExample/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;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
55EC36521E6BB98A00726F13 /* Build configuration list for PBXNativeTarget "Siren" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
55EC36501E6BB98A00726F13 /* Debug */,
|
||||
55EC36511E6BB98A00726F13 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
8E3A6C0D1D07CB6F00A8B7CF /* Build configuration list for PBXNativeTarget "SirenExampleTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
8E3A6C0B1D07CB6F00A8B7CF /* Debug */,
|
||||
8E3A6C0C1D07CB6F00A8B7CF /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
8EC3917C1A58B465001C121E /* Build configuration list for PBXProject "SirenExample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
8EC3919E1A58B466001C121E /* Debug */,
|
||||
8EC3919F1A58B466001C121E /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
8EC391A01A58B466001C121E /* Build configuration list for PBXNativeTarget "SirenExample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
8EC391A11A58B466001C121E /* Debug */,
|
||||
8EC391A21A58B466001C121E /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 8EC391791A58B465001C121E /* Project object */;
|
||||
}
|
||||
@@ -1,100 +0,0 @@
|
||||
//
|
||||
// AppDelegate.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 1/3/15.
|
||||
// Copyright (c) 2015 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import Siren
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
|
||||
window?.makeKeyAndVisible()
|
||||
|
||||
setupSiren()
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func setupSiren() {
|
||||
let siren = Siren.shared
|
||||
|
||||
// Optional
|
||||
siren.delegate = self
|
||||
|
||||
// Optional
|
||||
siren.debugEnabled = true
|
||||
|
||||
// Optional
|
||||
siren.appName = "Test App Name"
|
||||
|
||||
// Optional - Defaults to .Option
|
||||
// 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
|
||||
siren.minorUpdateAlertType = .option
|
||||
siren.patchUpdateAlertType = .option
|
||||
siren.revisionUpdateAlertType = .option
|
||||
|
||||
// Optional - Sets all messages to appear in Russian. Siren supports many other languages, not just English and Russian.
|
||||
// siren.forceLanguageLocalization = .Russian
|
||||
|
||||
// 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
|
||||
// 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. The number 5 is used as an example.
|
||||
// siren.showAlertAfterCurrentVersionHasBeenReleasedForDays = 5
|
||||
|
||||
// Required
|
||||
siren.checkVersion(checkType: .immediately)
|
||||
}
|
||||
|
||||
func applicationWillEnterForeground(_ application: UIApplication) {
|
||||
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
|
||||
Siren.shared.checkVersion(checkType: .immediately)
|
||||
}
|
||||
|
||||
func applicationDidBecomeActive(_ application: UIApplication) {
|
||||
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
|
||||
Siren.shared.checkVersion(checkType: .daily)
|
||||
}
|
||||
}
|
||||
|
||||
extension AppDelegate: SirenDelegate
|
||||
{
|
||||
func sirenDidShowUpdateDialog(alertType: SirenAlertType) {
|
||||
print(#function, alertType)
|
||||
}
|
||||
|
||||
func sirenUserDidCancel() {
|
||||
print(#function)
|
||||
}
|
||||
|
||||
func sirenUserDidSkipVersion() {
|
||||
print(#function)
|
||||
}
|
||||
|
||||
func sirenUserDidLaunchAppStore() {
|
||||
print(#function)
|
||||
}
|
||||
|
||||
func sirenDidFailVersionCheck(error: NSError) {
|
||||
print(#function, error)
|
||||
}
|
||||
|
||||
func sirenLatestVersionInstalled() {
|
||||
print(#function, "Latest version of app is installed")
|
||||
}
|
||||
|
||||
// This delegate method is only hit when alertType is initialized to .none
|
||||
func sirenDidDetectNewVersionWithoutAlert(message: String) {
|
||||
print(#function, "\(message)")
|
||||
}
|
||||
}
|
||||
@@ -1,736 +0,0 @@
|
||||
//
|
||||
// SirenTests.swift
|
||||
// SirenTests
|
||||
//
|
||||
// Created by Arthur Sabintsev on 6/7/16.
|
||||
// Copyright © 2016 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import Siren
|
||||
|
||||
class SirenTests: XCTestCase {
|
||||
|
||||
let siren = Siren.shared
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Updates
|
||||
|
||||
extension SirenTests {
|
||||
|
||||
func testSingleDigitVersionUpdate() {
|
||||
siren.testSetCurrentInstalledVersion(version: "1")
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0.0.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.0.0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
}
|
||||
|
||||
func testDoubleDigitVersionUpdate() {
|
||||
siren.testSetCurrentInstalledVersion(version: "1.0")
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0.0.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.0.0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
}
|
||||
|
||||
func testTripleDigitVersionUpdate() {
|
||||
siren.testSetCurrentInstalledVersion(version: "1.0.0")
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0.0.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.0.0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
}
|
||||
|
||||
func testQuadrupleDigitVersionUpdate() {
|
||||
siren.testSetCurrentInstalledVersion(version: "1.0.0")
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "2.0.0.0")
|
||||
XCTAssertTrue(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
|
||||
siren.testSetAppStoreVersion(version: "0.0.0.9")
|
||||
XCTAssertFalse(siren.testIsAppStoreVersionNewer())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// MARK: - Localization
|
||||
|
||||
extension SirenTests {
|
||||
|
||||
func testArabicLocalization() {
|
||||
let language: SirenLanguageType = .Arabic
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "التجديد متوفر")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "المرة التالية")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "تخطى عن هذه النسخة")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "تجديد")
|
||||
}
|
||||
|
||||
func testArmenianLocalization() {
|
||||
let language: SirenLanguageType = .Armenian
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Թարմացումը հասանելի Է")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Հաջորդ անգամ")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Բաց թողնել այս տարբերակը")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Թարմացնել")
|
||||
}
|
||||
|
||||
func testBasqueLocalization() {
|
||||
let language: SirenLanguageType = .Basque
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Eguneratzea erabilgarri")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Hurrengo batean")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Bertsio honetatik jauzi egin")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Eguneratu")
|
||||
}
|
||||
|
||||
func testChineseSimplifiedLocalization() {
|
||||
let language: SirenLanguageType = .ChineseSimplified
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "更新可用")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "下一次")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "跳过此版本")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "更新")
|
||||
}
|
||||
|
||||
func testChineseTraditionalLocalization() {
|
||||
let language: SirenLanguageType = .ChineseTraditional
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "有更新可用")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "下次")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "跳過此版本")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "更新")
|
||||
}
|
||||
|
||||
func testCroatianLocalization() {
|
||||
let language: SirenLanguageType = .Croatian
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Nova ažuriranje je stigla")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Sljedeći put")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Preskoči ovu verziju")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Ažuriraj")
|
||||
}
|
||||
|
||||
func testDanishLocalization() {
|
||||
let language: SirenLanguageType = .Danish
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Tilgængelig opdatering")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Næste gang")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Spring denne version over")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Opdater")
|
||||
}
|
||||
|
||||
func testDutchLocalization() {
|
||||
let language: SirenLanguageType = .Dutch
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Update Beschikbaar")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Volgende keer")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Sla deze versie over")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Updaten")
|
||||
}
|
||||
|
||||
func testEstonianLocalization() {
|
||||
let language: SirenLanguageType = .Estonian
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Uuendus saadaval")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Järgmisel korral")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Jäta see version vahele")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Uuenda")
|
||||
}
|
||||
|
||||
func testFinnishLocalization() {
|
||||
let language: SirenLanguageType = .Finnish
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Päivitys saatavilla")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "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")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Päivitys")
|
||||
}
|
||||
|
||||
func testFrenchLocalization() {
|
||||
let language: SirenLanguageType = .French
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Mise à jour disponible")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "La prochaine fois")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Sauter cette version")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Mettre à jour")
|
||||
}
|
||||
|
||||
func testGermanLocalization() {
|
||||
let language: SirenLanguageType = .German
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Update erhältlich")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Später")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Diese Version überspringen")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Update")
|
||||
}
|
||||
|
||||
func testGreekLocalization() {
|
||||
let language: SirenLanguageType = .Greek
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Διαθέσιμη Ενημέρωση")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Άλλη φορά")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Αγνόησε αυτήν την έκδοση")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Αναβάθμιση")
|
||||
}
|
||||
|
||||
func testHebrewLocalization() {
|
||||
let language: SirenLanguageType = .Hebrew
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "עדכון זמין")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "בפעם הבאה")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "דלג על גרסה זו")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "עדכן")
|
||||
}
|
||||
|
||||
func testHungarianLocalization() {
|
||||
let language: SirenLanguageType = .Hungarian
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Új frissítés érhető el")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "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")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Frissítés")
|
||||
}
|
||||
|
||||
func testIndonesianLocalization() {
|
||||
let language: SirenLanguageType = .Indonesian
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Pembaruan Tersedia")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Lain kali")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Lewati versi ini")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Perbarui")
|
||||
}
|
||||
|
||||
func testItalianLocalization() {
|
||||
let language: SirenLanguageType = .Italian
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Aggiornamento disponibile")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "La prossima volta")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Salta questa versione")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Aggiorna")
|
||||
}
|
||||
|
||||
func testJapaneseLocalization() {
|
||||
let language: SirenLanguageType = .Japanese
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "更新が利用可能")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "次回")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "このバージョンをスキップ")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "更新")
|
||||
}
|
||||
|
||||
func testKoreanLocalization() {
|
||||
let language: SirenLanguageType = .Korean
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "업데이트 가능")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "다음에")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "이 버전 건너뜀")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "업데이트")
|
||||
}
|
||||
|
||||
func testLatvianLocalization() {
|
||||
let language: SirenLanguageType = .Latvian
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Atjauninājums pieejams")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Nākamreiz")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Izlaist šo versiju")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Atjaunināt")
|
||||
}
|
||||
|
||||
func testLithuanianLocalization() {
|
||||
let language: SirenLanguageType = .Lithuanian
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Atnaujinimas")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Kitą kartą")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Praleisti šią versiją")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Atnaujinti")
|
||||
}
|
||||
|
||||
func testMalayLocalization() {
|
||||
let language: SirenLanguageType = .Malay
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Versi Terkini")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Lain kali")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Langkau versi ini")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Muat turun")
|
||||
}
|
||||
|
||||
func testNorwegianLocalization() {
|
||||
let language: SirenLanguageType = .Norwegian
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Oppdatering tilgjengelig")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Neste gang")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Hopp over denne versjonen")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Oppdater")
|
||||
}
|
||||
|
||||
func testPolishLocalization() {
|
||||
let language: SirenLanguageType = .Polish
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Aktualizacja dostępna")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Następnym razem")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Pomiń wersję")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Zaktualizuj")
|
||||
}
|
||||
|
||||
func testPortugueseBrazilLocalization() {
|
||||
let language: SirenLanguageType = .PortugueseBrazil
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Atualização disponível")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Próxima vez")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Ignorar esta versão")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Atualizar")
|
||||
}
|
||||
|
||||
func testPortuguesePortugalLocalization() {
|
||||
let language: SirenLanguageType = .PortuguesePortugal
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Nova actualização disponível")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Próxima vez")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Ignorar esta versão")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Actualizar")
|
||||
}
|
||||
|
||||
func testRussianLocalization() {
|
||||
let language: SirenLanguageType = .Russian
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Доступно обновление")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "В следующий раз")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Пропустить эту версию")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Обновить")
|
||||
}
|
||||
|
||||
func testSerbianCyrillicLocalization() {
|
||||
let language: SirenLanguageType = .SerbianCyrillic
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Ажурирање доступно")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Следећи пут")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Прескочи ову верзију")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Ажурирај")
|
||||
}
|
||||
|
||||
func testSerbianLatinLocalization() {
|
||||
let language: SirenLanguageType = .SerbianLatin
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Ažuriranje dostupno")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Sledeći put")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Preskoči ovu verziju")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Ažuriraj")
|
||||
}
|
||||
|
||||
func testSlovenianLocalization() {
|
||||
let language: SirenLanguageType = .Slovenian
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Posodobitev aplikacije")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Naslednjič")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Ne želim")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Namesti")
|
||||
}
|
||||
|
||||
func testSpanishLocalization() {
|
||||
let language: SirenLanguageType = .Spanish
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Actualización disponible")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "La próxima vez")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Saltar esta versión")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Actualizar")
|
||||
}
|
||||
|
||||
func testSwedishLocalization() {
|
||||
let language: SirenLanguageType = .Swedish
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Tillgänglig uppdatering")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "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")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Uppdatera")
|
||||
}
|
||||
|
||||
func testThaiLocalization() {
|
||||
let language: SirenLanguageType = .Thai
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "มีการอัพเดท")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "ไว้คราวหน้า")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "ข้ามเวอร์ชั่นนี้")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "อัพเดท")
|
||||
}
|
||||
|
||||
func testTurkishLocalization() {
|
||||
let language: SirenLanguageType = .Turkish
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Güncelleme Mevcut")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Next time", forceLanguageLocalization: language), "Daha sonra")
|
||||
|
||||
// Skip this version
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Skip this version", forceLanguageLocalization: language), "Boşver")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Güncelle")
|
||||
}
|
||||
|
||||
func testVietnameseLocalization() {
|
||||
let language: SirenLanguageType = .Vietnamese
|
||||
siren.forceLanguageLocalization = language
|
||||
|
||||
// Update Available
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update Available", forceLanguageLocalization: language), "Cập nhật mới")
|
||||
|
||||
// Next time
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "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")
|
||||
|
||||
// Update
|
||||
XCTAssertEqual(Bundle().testLocalizedString(stringKey: "Update", forceLanguageLocalization: language), "Cập nhật")
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
//
|
||||
// BundleExtension.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 3/17/17.
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
// `Bundle` Extension for Siren.
|
||||
extension Bundle {
|
||||
/// Constants used in the `Bundle` extension.
|
||||
struct Constants {
|
||||
/// Constant for the `.bundle` file extension.
|
||||
static let bundleExtension = "bundle"
|
||||
/// Constant for `CFBundleDisplayName`.
|
||||
static let displayName = "CFBundleDisplayName"
|
||||
/// Constant for the default US English localization.
|
||||
static let englishLocalization = "en"
|
||||
/// Constant for the project file extension.
|
||||
static let projectExtension = "lproj"
|
||||
/// Constant for `CFBundleShortVersionString`.
|
||||
static let shortVersionString = "CFBundleShortVersionString"
|
||||
/// Constant for the localization table.
|
||||
static let table = "SirenLocalizable"
|
||||
}
|
||||
|
||||
/// Fetches the current version of the app.
|
||||
///
|
||||
/// - Returns: The current installed version of the app.
|
||||
final class func version() -> String? {
|
||||
return Bundle.main.object(forInfoDictionaryKey: Constants.shortVersionString) as? String
|
||||
}
|
||||
|
||||
/// Returns the localized string for a given default string.
|
||||
///
|
||||
/// By default, the English language localization is used.
|
||||
/// If the device's localization is set to another locale, that local's language is used if it's supported by Siren.
|
||||
/// If `forcedLanguage` is set to `true`, the chosen language is shown for all devices, irrespective of their device's localization.
|
||||
///
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - key: The default string used to search the localization table for a specific translation.
|
||||
/// - forcedLanguage: Returns
|
||||
/// - Returns: The localized string for a given key.
|
||||
final class func localizedString(forKey key: String, andForceLocalization forcedLanguage: Localization.Language?) -> String {
|
||||
guard var path = sirenBundlePath() else {
|
||||
return key
|
||||
}
|
||||
|
||||
if let deviceLangauge = deviceLanguage(),
|
||||
let devicePath = sirenForcedBundlePath(forceLanguageLocalization: deviceLangauge) {
|
||||
path = devicePath
|
||||
}
|
||||
|
||||
if let forcedLanguage = forcedLanguage,
|
||||
let forcedPath = sirenForcedBundlePath(forceLanguageLocalization: forcedLanguage) {
|
||||
path = forcedPath
|
||||
}
|
||||
|
||||
return Bundle(path: path)?.localizedString(forKey: key, value: key, table: Constants.table) ?? key
|
||||
}
|
||||
|
||||
/// The appropriate name for the app to be displayed in the update alert.
|
||||
///
|
||||
/// Siren checks `CFBundleDisplayName` first. It then falls back to
|
||||
/// to `kCFBundleNameKey` and ultimately to an empty string
|
||||
/// if the aforementioned values are nil.
|
||||
///
|
||||
/// - Returns: The name of the app.
|
||||
final class func bestMatchingAppName() -> String {
|
||||
let bundleDisplayName = Bundle.main.object(forInfoDictionaryKey: Constants.displayName) as? String
|
||||
let bundleName = Bundle.main.object(forInfoDictionaryKey: kCFBundleNameKey as String) as? String
|
||||
|
||||
return bundleDisplayName ?? bundleName ?? ""
|
||||
}
|
||||
}
|
||||
|
||||
private extension Bundle {
|
||||
/// The path to Siren's localization `Bundle`.
|
||||
///
|
||||
/// - Returns: The bundle's path or `nil`.
|
||||
final class func sirenBundlePath() -> String? {
|
||||
return Bundle(for: Siren.self).path(forResource: "\(Siren.self)", ofType: Constants.bundleExtension)
|
||||
}
|
||||
|
||||
/// The path for a particular language localizationin Siren's localization `Bundle`.
|
||||
///
|
||||
/// - Parameter forceLanguageLocalization: The language localization that should be searched for in Siren's localization `bundle`.
|
||||
/// - Returns: The path to the forced language localization.
|
||||
final class func sirenForcedBundlePath(forceLanguageLocalization: Localization.Language) -> String? {
|
||||
guard let path = sirenBundlePath() else { return nil }
|
||||
let name = forceLanguageLocalization.rawValue
|
||||
|
||||
return Bundle(path: path)?.path(forResource: name, ofType: Constants.projectExtension)
|
||||
}
|
||||
|
||||
/// The user's preferred language based on their device's localization.
|
||||
///
|
||||
/// - Returns: The user's preferred language.
|
||||
final class func deviceLanguage() -> Localization.Language? {
|
||||
guard let preferredLocalization = Bundle.main.preferredLocalizations.first,
|
||||
preferredLocalization != Constants.englishLocalization,
|
||||
let preferredLanguage = Localization.Language(rawValue: preferredLocalization) else {
|
||||
return nil
|
||||
}
|
||||
|
||||
return preferredLanguage
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
//
|
||||
// DateExtension.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 3/21/17.
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
// `Date` Extension for Siren.
|
||||
extension Date {
|
||||
/// The amount of days passed from a specific source date.
|
||||
///
|
||||
/// - Parameter date: The source date.
|
||||
/// - Returns: The amount of days passed since the source date.
|
||||
static func days(since date: Date) -> Int {
|
||||
let calendar = Calendar.current
|
||||
let components = calendar.dateComponents([.day], from: date, to: Date())
|
||||
return components.day ?? 0
|
||||
}
|
||||
|
||||
/// The amount of days passed from a specific source date string.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - dateString: The source date string.
|
||||
/// - Returns: The amount of days passed since the source date.
|
||||
static func days(since dateString: String) -> Int? {
|
||||
let dateformatter = DateFormatter()
|
||||
dateformatter.locale = Locale(identifier: "en_US_POSIX")
|
||||
dateformatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'"
|
||||
dateformatter.timeZone = TimeZone(secondsFromGMT: 0)
|
||||
|
||||
guard let date = dateformatter.date(from: dateString) else {
|
||||
return nil
|
||||
}
|
||||
|
||||
return days(since: date)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
//
|
||||
// UIAlertControllerExtension.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 3/17/17.
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
// `UIAlertController` Extension for Siren.
|
||||
extension UIAlertController {
|
||||
/// Presents Siren's `UIAlertController` in a new `UIWindow`.
|
||||
///
|
||||
/// - Parameter window: The `UIWindow` that _should_ reference Siren's `UIAlertController`.
|
||||
func show(window: UIWindow) {
|
||||
guard !self.isBeingPresented else { return }
|
||||
window.makeKeyAndVisible()
|
||||
window.rootViewController?.present(self, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
/// Hides Siren's `UIAlertController` within a given window.
|
||||
///
|
||||
/// - Parameter window: The `UIWindow` that references Siren's `UIAlertController`.
|
||||
func hide(window: UIWindow) {
|
||||
window.isHidden = true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
//
|
||||
// UserDefaultsExtension.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 9/25/18.
|
||||
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
// `UserDefaults` Extension for Siren.
|
||||
extension UserDefaults {
|
||||
/// Siren-specific `UserDefaults` Keys
|
||||
private enum SirenKeys: String {
|
||||
/// Key that notifies Siren to perform a version check and present
|
||||
/// the Siren alert the next time the user launches the app.
|
||||
case PerformVersionCheckOnSubsequentLaunch
|
||||
|
||||
/// Key that stores the timestamp of the last version check.
|
||||
case StoredVersionCheckDate
|
||||
|
||||
/// Key that stores the version that a user decided to skip.
|
||||
case StoredSkippedVersion
|
||||
}
|
||||
|
||||
/// Sets and Gets a `UserDefault` around storing a version that the user wants to skip updating.
|
||||
static var storedSkippedVersion: String? {
|
||||
get {
|
||||
return standard.string(forKey: SirenKeys.StoredSkippedVersion.rawValue)
|
||||
} set {
|
||||
standard.set(newValue, forKey: SirenKeys.StoredSkippedVersion.rawValue)
|
||||
}
|
||||
}
|
||||
|
||||
/// Sets and Gets a `UserDefault` around the last time the user was presented a version update alert.
|
||||
static var alertPresentationDate: Date? {
|
||||
get {
|
||||
return standard.object(forKey: SirenKeys.StoredVersionCheckDate.rawValue) as? Date
|
||||
} set {
|
||||
standard.set(newValue, forKey: SirenKeys.StoredVersionCheckDate.rawValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
//
|
||||
// APIManager.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 11/24/18.
|
||||
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// APIManager for Siren
|
||||
public struct APIManager {
|
||||
/// Constants used in the `APIManager`.
|
||||
private struct Constants {
|
||||
/// Constant for the `bundleId` parameter in the iTunes Lookup API request.
|
||||
static let bundleID = "bundleId"
|
||||
/// Constant for the `country` parameter in the iTunes Lookup API request.
|
||||
static let country = "country"
|
||||
}
|
||||
|
||||
/// Return results or errors obtained from performing a version check with Siren.
|
||||
typealias CompletionHandler = (Result<APIModel, KnownError>) -> Void
|
||||
|
||||
/// The region or country of an App Store in which the app is available.
|
||||
/// By default, all version check requests are performed against the US App Store.
|
||||
/// If the app is not available in the US App Store, set it to the identifier of at least one App Store region within which it is available.
|
||||
///
|
||||
/// [List of country codes](https://help.apple.com/app-store-connect/#/dev997f9cf7c)
|
||||
///
|
||||
let countryCode: String?
|
||||
|
||||
/// Initializes `APIManager` to the region or country of an App Store in which the app is available.
|
||||
/// By default, all version check requests are performed against the US App Store.
|
||||
/// If the app is not available in the US App Store, set it to the identifier of at least one App Store region within which it is available.
|
||||
///
|
||||
/// [List of country codes](https://help.apple.com/app-store-connect/#/dev997f9cf7c)
|
||||
///
|
||||
/// - Parameter countryCode: The country code for the App Store in which the app is availabe. Defaults to nil (e.g., the US App Store)
|
||||
public init(countryCode: String? = nil) {
|
||||
self.countryCode = countryCode
|
||||
}
|
||||
|
||||
/// The default `APIManager`.
|
||||
///
|
||||
/// The version check is performed against the US App Store.
|
||||
public static let `default` = APIManager()
|
||||
}
|
||||
|
||||
extension APIManager {
|
||||
/// Creates and performs a URLRequest against the iTunes Lookup API.
|
||||
///
|
||||
/// - Parameter handler: The completion handler for the iTunes Lookup API request.
|
||||
func performVersionCheckRequest(completion handler: CompletionHandler?) {
|
||||
guard Bundle.main.bundleIdentifier != nil else {
|
||||
handler?(.failure(.missingBundleID))
|
||||
return
|
||||
}
|
||||
|
||||
do {
|
||||
let url = try makeITunesURL()
|
||||
let request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 30)
|
||||
URLSession.shared.dataTask(with: request) { (data, response, error) in
|
||||
URLCache.shared.removeCachedResponse(for: request)
|
||||
self.processVersionCheckResults(withData: data, response: response, error: error, completion: handler)
|
||||
}.resume()
|
||||
} catch {
|
||||
handler?(.failure(.malformedURL))
|
||||
}
|
||||
}
|
||||
|
||||
/// Parses and maps the the results from the iTunes Lookup API request.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - data: The JSON data returned from the request.
|
||||
/// - response: The response metadata returned from the request.
|
||||
/// - error: The error returned from the request.
|
||||
/// - handler: The completion handler to call once the results of the request has been processed.
|
||||
private func processVersionCheckResults(withData data: Data?,
|
||||
response: URLResponse?,
|
||||
error: Error?,
|
||||
completion handler: CompletionHandler?) {
|
||||
if let error = error {
|
||||
handler?(.failure(.appStoreDataRetrievalFailure(underlyingError: error)))
|
||||
} else {
|
||||
guard let data = data else {
|
||||
handler?(.failure(.appStoreDataRetrievalFailure(underlyingError: nil)))
|
||||
return
|
||||
}
|
||||
do {
|
||||
let apiModel = try JSONDecoder().decode(APIModel.self, from: data)
|
||||
|
||||
guard !apiModel.results.isEmpty else {
|
||||
handler?(.failure(.appStoreDataRetrievalEmptyResults))
|
||||
return
|
||||
}
|
||||
|
||||
DispatchQueue.main.async {
|
||||
handler?(.success(apiModel))
|
||||
}
|
||||
} catch {
|
||||
handler?(.failure(.appStoreJSONParsingFailure(underlyingError: error)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Creates the URL that points to the iTunes Lookup API.
|
||||
///
|
||||
/// - Returns: The iTunes Lookup API URL.
|
||||
/// - Throws: An error if the URL cannot be created.
|
||||
private func makeITunesURL() throws -> URL {
|
||||
var components = URLComponents()
|
||||
components.scheme = "https"
|
||||
components.host = "itunes.apple.com"
|
||||
components.path = "/lookup"
|
||||
|
||||
var items: [URLQueryItem] = [URLQueryItem(name: Constants.bundleID, value: Bundle.main.bundleIdentifier)]
|
||||
|
||||
if let countryCode = countryCode {
|
||||
let item = URLQueryItem(name: Constants.country, value: countryCode)
|
||||
items.append(item)
|
||||
}
|
||||
|
||||
components.queryItems = items
|
||||
|
||||
guard let url = components.url, !url.absoluteString.isEmpty else {
|
||||
throw KnownError.malformedURL
|
||||
}
|
||||
|
||||
return url
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,233 @@
|
||||
//
|
||||
// PresentationManager.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 12/6/17.
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
/// PresentationManager for Siren
|
||||
public struct PresentationManager {
|
||||
/// Return results or errors obtained from performing a version check with Siren.
|
||||
typealias CompletionHandler = (AlertAction, String?) -> Void
|
||||
|
||||
/// The localization data structure that will be used to construct localized strings for the update alert.
|
||||
let localization: Localization
|
||||
|
||||
/// The tint color of the `UIAlertController` buttons.
|
||||
let tintColor: UIColor?
|
||||
|
||||
/// The descriptive update message of the `UIAlertController`.
|
||||
let alertMessage: String
|
||||
|
||||
/// The main message of the `UIAlertController`.
|
||||
let alertTitle: String
|
||||
|
||||
/// The "Next time" button text of the `UIAlertController`.
|
||||
let nextTimeButtonTitle: String
|
||||
|
||||
/// The "Skip this version" button text of the `UIAlertController`.
|
||||
let skipButtonTitle: String
|
||||
|
||||
/// The "Update" button text of the `UIAlertController`.
|
||||
let updateButtonTitle: String
|
||||
|
||||
/// The instance of the `UIAlertController` used to present the update alert.
|
||||
var alertController: UIAlertController?
|
||||
|
||||
/// The `UIWindow` instance that presents the `SirenViewController`.
|
||||
private var updaterWindow: UIWindow {
|
||||
let window = UIWindow(frame: UIScreen.main.bounds)
|
||||
window.windowLevel = UIWindow.Level.alert + 1
|
||||
|
||||
let viewController = SirenViewController()
|
||||
viewController.retainedWindow = window
|
||||
|
||||
window.rootViewController = viewController
|
||||
return window
|
||||
}
|
||||
|
||||
/// `PresentationManager`'s public initializer.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - tintColor: The alert's tintColor. Settings this to `nil` defaults to the system default color.
|
||||
/// - appName: The name of the app (overrides the default/bundled name).
|
||||
/// - alertTitle: The title field of the `UIAlertController`.
|
||||
/// - alertMessage: The `message` field of the `UIAlertController`.
|
||||
/// - nextTimeButtonTitle: The `title` field of the Next Time Button `UIAlertAction`.
|
||||
/// - skipButtonTitle: The `title` field of the Skip Button `UIAlertAction`.
|
||||
/// - updateButtonTitle: The `title` field of the Update Button `UIAlertAction`.
|
||||
/// - forceLanguage: The language the alert to which the alert should be set. If `nil`, it falls back to the device's preferred locale.
|
||||
public init(alertTintColor tintColor: UIColor? = nil,
|
||||
appName: String? = nil,
|
||||
alertTitle: String = AlertConstants.alertTitle,
|
||||
alertMessage: String = AlertConstants.alertMessage,
|
||||
updateButtonTitle: String = AlertConstants.updateButtonTitle,
|
||||
nextTimeButtonTitle: String = AlertConstants.nextTimeButtonTitle,
|
||||
skipButtonTitle: String = AlertConstants.skipButtonTitle,
|
||||
forceLanguageLocalization forceLanguage: Localization.Language? = nil) {
|
||||
self.alertTitle = alertTitle
|
||||
self.alertMessage = alertMessage
|
||||
self.localization = Localization(appName: appName, andForceLanguageLocalization: forceLanguage)
|
||||
self.nextTimeButtonTitle = nextTimeButtonTitle
|
||||
self.updateButtonTitle = updateButtonTitle
|
||||
self.skipButtonTitle = skipButtonTitle
|
||||
self.tintColor = tintColor
|
||||
}
|
||||
|
||||
/// The default `PresentationManager`.
|
||||
///
|
||||
/// By default:
|
||||
/// - There is no tint color (defaults to Apple's system `blue` color.)
|
||||
/// - The name of the app is equal to the name that appears in `Info.plist`.
|
||||
/// - The strings are all set to that of the user's device localization (if supported) or it falls back to English.
|
||||
public static let `default` = PresentationManager()
|
||||
}
|
||||
|
||||
// MARK: - Alert Lifecycle
|
||||
|
||||
extension PresentationManager {
|
||||
|
||||
/// Constructs the localized update alert `UIAlertController` object.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - rules: The rules that are used to define the type of alert that should be presented.
|
||||
/// - currentAppStoreVersion: The current version of the app in the App Store.
|
||||
/// - handler: The completion handler that returns the an `AlertAction` depending on the type of action the end-user took.
|
||||
mutating func presentAlert(withRules rules: Rules,
|
||||
forCurrentAppStoreVersion currentAppStoreVersion: String,
|
||||
completion handler: CompletionHandler?) {
|
||||
UserDefaults.alertPresentationDate = Date()
|
||||
|
||||
// Alert Title
|
||||
let alertTitle: String
|
||||
if self.alertTitle == AlertConstants.alertTitle {
|
||||
alertTitle = localization.alertTitle()
|
||||
} else {
|
||||
alertTitle = self.alertTitle
|
||||
}
|
||||
|
||||
// Alert Message
|
||||
let alertMessage: String
|
||||
if self.alertMessage == AlertConstants.alertMessage {
|
||||
alertMessage = localization.alertMessage(forCurrentAppStoreVersion: currentAppStoreVersion)
|
||||
} else {
|
||||
alertMessage = self.alertMessage
|
||||
}
|
||||
|
||||
alertController = UIAlertController(title: alertTitle,
|
||||
message: alertMessage,
|
||||
preferredStyle: .alert)
|
||||
|
||||
if let tintColor = tintColor {
|
||||
alertController?.view.tintColor = tintColor
|
||||
}
|
||||
|
||||
switch rules.alertType {
|
||||
case .force:
|
||||
alertController?.addAction(updateAlertAction(completion: handler))
|
||||
case .option:
|
||||
alertController?.addAction(nextTimeAlertAction(completion: handler))
|
||||
alertController?.addAction(updateAlertAction(completion: handler))
|
||||
case .skip:
|
||||
alertController?.addAction(updateAlertAction(completion: handler))
|
||||
alertController?.addAction(nextTimeAlertAction(completion: handler))
|
||||
alertController?.addAction(skipAlertAction(forCurrentAppStoreVersion: currentAppStoreVersion, completion: handler))
|
||||
case .none:
|
||||
handler?(.unknown, nil)
|
||||
}
|
||||
|
||||
// If the alertType is .none, an alert will not be presented.
|
||||
// If the `updaterWindow` is not hidden, then an alert is already presented.
|
||||
// The latter prevents `UIAlertController`'s from appearing on top of each other.
|
||||
if rules.alertType != .none, updaterWindow.isHidden {
|
||||
alertController?.show(window: updaterWindow)
|
||||
} else {
|
||||
// This is a safety precaution to avoid multiple windows from presenting on top of each other.
|
||||
cleanUp()
|
||||
}
|
||||
}
|
||||
|
||||
/// Removes the `alertController` from memory.
|
||||
func cleanUp() {
|
||||
alertController?.hide(window: updaterWindow)
|
||||
alertController?.dismiss(animated: true, completion: nil)
|
||||
self.updaterWindow.rootViewController = nil
|
||||
self.updaterWindow.resignKey()
|
||||
self.updaterWindow.removeFromSuperview()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Alert Actions
|
||||
|
||||
private extension PresentationManager {
|
||||
|
||||
/// The `UIAlertAction` that is executed when the `Update` option is selected.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - handler: The completion handler that returns the `.update` option.
|
||||
/// - Returns: The `Update` alert action.
|
||||
func updateAlertAction(completion handler: CompletionHandler?) -> UIAlertAction {
|
||||
let title: String
|
||||
if self.updateButtonTitle == AlertConstants.updateButtonTitle {
|
||||
title = localization.updateButtonTitle()
|
||||
} else {
|
||||
title = self.updateButtonTitle
|
||||
}
|
||||
|
||||
let action = UIAlertAction(title: title, style: .default) { _ in
|
||||
self.cleanUp()
|
||||
handler?(.appStore, nil)
|
||||
return
|
||||
}
|
||||
|
||||
return action
|
||||
}
|
||||
|
||||
/// The `UIAlertAction` that is executed when the `Next time` option is selected.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - handler: The completion handler that returns the `.nextTime` option.
|
||||
/// - Returns: The `Next time` alert action.
|
||||
func nextTimeAlertAction(completion handler: CompletionHandler?) -> UIAlertAction {
|
||||
let title: String
|
||||
if self.nextTimeButtonTitle == AlertConstants.nextTimeButtonTitle {
|
||||
title = localization.nextTimeButtonTitle()
|
||||
} else {
|
||||
title = self.nextTimeButtonTitle
|
||||
}
|
||||
|
||||
let action = UIAlertAction(title: title, style: .default) { _ in
|
||||
self.cleanUp()
|
||||
handler?(.nextTime, nil)
|
||||
return
|
||||
}
|
||||
|
||||
return action
|
||||
}
|
||||
|
||||
/// The `UIAlertAction` that is executed when the `Skip this version` option is selected.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - currentAppStoreVersion: The current version of the app in the App Store.
|
||||
/// - handler: The completion handler that returns the `.skip` option.
|
||||
/// - Returns: The `Skip this version` alert action.
|
||||
func skipAlertAction(forCurrentAppStoreVersion currentAppStoreVersion: String, completion handler: CompletionHandler?) -> UIAlertAction {
|
||||
let title: String
|
||||
if self.skipButtonTitle == AlertConstants.skipButtonTitle {
|
||||
title = localization.skipButtonTitle()
|
||||
} else {
|
||||
title = self.skipButtonTitle
|
||||
}
|
||||
|
||||
let action = UIAlertAction(title: title, style: .default) { _ in
|
||||
self.cleanUp()
|
||||
handler?(.skip, currentAppStoreVersion)
|
||||
return
|
||||
}
|
||||
|
||||
return action
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
//
|
||||
// RulesManager.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 12/1/18.
|
||||
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// RulesManager for Siren
|
||||
public struct RulesManager {
|
||||
/// The alert will only show up if the current version has already been released for X days.
|
||||
///
|
||||
/// This value defaults to 1 day (in `RulesManager`'s initializer) to avoid an issue where
|
||||
/// Apple updates the JSON faster than the app binary propogates to the App Store.
|
||||
let releasedForDays: Int
|
||||
|
||||
/// The `Rules` that should be used when the App Store version of the app signifies that it is a **major** version update (A.b.c.d).
|
||||
var majorUpdateRules: Rules
|
||||
|
||||
/// The `Rules` that should be used when the App Store version of the app signifies that it is a **minor** version update (a.B.c.d).
|
||||
var minorUpdateRules: Rules
|
||||
|
||||
/// The `Rules` that should be used when the App Store version of the app signifies that it is a **patch** version update (a.b.C.d).
|
||||
var patchUpdateRules: Rules
|
||||
|
||||
/// The `Rules` that should be used when the App Store version of the app signifies that it is a **revision** version update (a.b.c.D).
|
||||
var revisionUpdateRules: Rules
|
||||
|
||||
/// Initializer that sets update-specific `Rules` for all updates (e.g., major, minor, patch, revision).
|
||||
/// This means that each of the four update types can have their own specific update rules.
|
||||
///
|
||||
/// By default, the `releasedForDays` parameter delays the update alert from being presented for _1 day_
|
||||
/// to avoid an issue where the _iTunes Lookup_ API response is updated faster than the time it takes for the binary
|
||||
/// to become available on App Store CDNs across all regions. Usually it takes 6-24 hours, hence the _1 day_ delay.
|
||||
///
|
||||
/// - Warning: Setting `releasedForDays` to _0 days_ causes the alert to appear right away, even if the binary isn't available.
|
||||
/// If this value is set to _0 days_, and an `AlertType` of type `.force` is set, it will cause your app to infinitely send the
|
||||
/// end-user to the App Store to download a version that's not there and lock them out of your application until the binary is
|
||||
/// is available to be downloaded.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - rules: The rules that should be set for all version updates.
|
||||
/// - releasedForDays: The amount of time (in days) that the app should delay before presenting the user
|
||||
public init(majorUpdateRules: Rules = .default,
|
||||
minorUpdateRules: Rules = .default,
|
||||
patchUpdateRules: Rules = .default,
|
||||
revisionUpdateRules: Rules = .default,
|
||||
showAlertAfterCurrentVersionHasBeenReleasedForDays releasedForDays: Int = 1) {
|
||||
self.majorUpdateRules = majorUpdateRules
|
||||
self.minorUpdateRules = minorUpdateRules
|
||||
self.patchUpdateRules = patchUpdateRules
|
||||
self.revisionUpdateRules = revisionUpdateRules
|
||||
self.releasedForDays = releasedForDays
|
||||
}
|
||||
|
||||
/// Initializer that sets the same update `Rules` for all types of updates (e.g., major, minor, patch, revision).
|
||||
/// This means that all four update types will use the same presentation rules.
|
||||
///
|
||||
/// By default, the `releasedForDays` parameter delays the update alert from being presented for _1 day_
|
||||
/// to avoid an issue where the _iTunes Lookup_ API response is updated faster than the time it takes for the binary
|
||||
/// to become available on App Store CDNs across all regions. Usually it takes 6-24 hours, hence the _1 day_ delay.
|
||||
///
|
||||
/// - Warning: Setting `releasedForDays` to _0 days_ causes the alert to appear right away, even if the binary isn't available.
|
||||
/// If this value is set to _0 days_, and an `AlertType` of type `.force` is set, it will cause your app to infinitely send the
|
||||
/// end-user to the App Store to download a version that's not there and lock them out of your application until the binary is
|
||||
/// is available to be downloaded.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - rules: The rules that should be set for all version updates.
|
||||
/// - releasedForDays: The amount of time (in days) that the app should delay before presenting the user
|
||||
public init(globalRules rules: Rules = .default,
|
||||
showAlertAfterCurrentVersionHasBeenReleasedForDays releasedForDays: Int = 1) {
|
||||
self.init(majorUpdateRules: rules,
|
||||
minorUpdateRules: rules,
|
||||
patchUpdateRules: rules,
|
||||
revisionUpdateRules: rules,
|
||||
showAlertAfterCurrentVersionHasBeenReleasedForDays: releasedForDays)
|
||||
}
|
||||
|
||||
/// Returns the appropriate update rules based on the type of version that is returned from the API.
|
||||
///
|
||||
/// - Parameters: type: The type of app update.
|
||||
/// - Throws: The `noUpdateAvailable` error since this is the only way a valie of `unknown` can occur.
|
||||
/// - Returns: The appropriate rule based on the type of app update that is returned by the API.
|
||||
func loadRulesForUpdateType(_ type: UpdateType) throws -> Rules {
|
||||
switch type {
|
||||
case .major: return majorUpdateRules
|
||||
case .minor: return minorUpdateRules
|
||||
case .patch: return patchUpdateRules
|
||||
case .revision: return revisionUpdateRules
|
||||
case .unknown: throw KnownError.noUpdateAvailable
|
||||
}
|
||||
}
|
||||
|
||||
/// The default `RulesManager`.
|
||||
///
|
||||
/// By default, the `Rules.default` rule is used for all update typs.
|
||||
public static let `default` = RulesManager(globalRules: .default)
|
||||
}
|
||||
|
||||
// MARK: - RulesManager-related Constants
|
||||
|
||||
extension RulesManager {
|
||||
/// Informs Siren of the type of update that is available so that
|
||||
/// the appropriate ruleset is used to present the update alert.
|
||||
///
|
||||
/// - 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 {
|
||||
/// Major release available: A.b.c.d
|
||||
case major
|
||||
/// Minor release available: a.B.c.d
|
||||
case minor
|
||||
/// Patch release available: a.b.C.d
|
||||
case patch
|
||||
/// Revision release available: a.b.c.D
|
||||
case revision
|
||||
/// No information available about the update.
|
||||
case unknown
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
//
|
||||
// APIModel.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 8/6/17.
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// Model representing a selection of results from the iTunes Lookup API.
|
||||
struct APIModel: Decodable {
|
||||
/// Codable Coding Keys for the Top-Level iTunes Lookup API JSON response.
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
/// The results JSON key.
|
||||
case results
|
||||
}
|
||||
|
||||
/// The array of results objects from the iTunes Lookup API.
|
||||
let results: [Results]
|
||||
|
||||
/// The Results object from the the iTunes Lookup API.
|
||||
struct Results: Decodable {
|
||||
/// Codable Coding Keys for the Results array in the iTunes Lookup API JSON response.
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
/// The appID JSON key.
|
||||
case appID = "trackId"
|
||||
/// The current version release date JSON key.
|
||||
case currentVersionReleaseDate
|
||||
/// The minimum device iOS version compatibility JSON key.
|
||||
case minimumOSVersion = "minimumOsVersion"
|
||||
/// The release notes JSON key.
|
||||
case releaseNotes
|
||||
/// The current App Store version JSON key.
|
||||
case version
|
||||
}
|
||||
|
||||
/// The app's App ID.
|
||||
let appID: Int
|
||||
|
||||
/// The release date for the latest version of the app.
|
||||
let currentVersionReleaseDate: String
|
||||
|
||||
/// The minimum version of iOS that the current version of the app requires.
|
||||
let minimumOSVersion: String
|
||||
|
||||
/// The releases notes from the latest version of the app.
|
||||
let releaseNotes: String?
|
||||
|
||||
/// The latest version of the app.
|
||||
let version: String
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
//
|
||||
// AlertAction.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 12/1/18.
|
||||
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// The `UIAlertController` button that was pressed upon being presented an update alert.
|
||||
public enum AlertAction {
|
||||
/// The user clicked on the `Update` option, which took them to the app's App Store page.
|
||||
case appStore
|
||||
/// The user clicked on the `Next Time` option, which dismissed the alert.
|
||||
case nextTime
|
||||
/// The user clicked on the `Skip this version` option, which dismissed the alert.
|
||||
case skip
|
||||
/// (Default) The user never chose an option. This is returned when an error is thrown by Siren.
|
||||
case unknown
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
//
|
||||
// AlertConstants.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 12/18/18.
|
||||
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// The default constants used for the update alert's messaging.
|
||||
public struct AlertConstants {
|
||||
/// The text that conveys the message that there is an app update available
|
||||
public static let alertMessage = "A new version of %@ is available. Please update to version %@ now."
|
||||
|
||||
/// The alert title which defaults to *Update Available*.
|
||||
public static let alertTitle = "Update Available"
|
||||
|
||||
/// The button text that conveys the message that the user should be prompted to update next time the app launches.
|
||||
public static let nextTimeButtonTitle = "Next time"
|
||||
|
||||
/// The text that conveys the message that the the user wants to skip this version update.
|
||||
public static let skipButtonTitle = "Skip this version"
|
||||
|
||||
/// The button text that conveys the message that the user would like to update the app right away.
|
||||
public static let updateButtonTitle = "Update"
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
//
|
||||
// Localization.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 9/25/18.
|
||||
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// Localization information and strings for Siren.
|
||||
public struct Localization {
|
||||
/// Determines the available languages in which the update message and alert button titles should appear.
|
||||
///
|
||||
/// By default, the operating system's default lanuage setting is used. However, you can force a specific language
|
||||
/// by setting the forceLanguageLocalization property before calling checkVersion()
|
||||
public enum Language: String {
|
||||
/// Arabic Language Localization
|
||||
case arabic = "ar"
|
||||
/// Armenian Language Localization
|
||||
case armenian = "hy"
|
||||
/// Basque Language Localization
|
||||
case basque = "eu"
|
||||
/// Simplified Chinese Language Localization
|
||||
case chineseSimplified = "zh-Hans"
|
||||
/// Traditional Chinese Localization Localization
|
||||
case chineseTraditional = "zh-Hant"
|
||||
/// Croatian Language Localization
|
||||
case croatian = "hr"
|
||||
/// Czech Language Localization
|
||||
case czech = "cs"
|
||||
/// Danish Language Localization
|
||||
case danish = "da"
|
||||
/// Dutch Language Localization
|
||||
case dutch = "nl"
|
||||
/// English Language Localization
|
||||
case english = "en"
|
||||
/// Estonian Language Localization
|
||||
case estonian = "et"
|
||||
/// Finnish Language Localization
|
||||
case finnish = "fi"
|
||||
/// French Language Localization
|
||||
case french = "fr"
|
||||
/// German Language Localization
|
||||
case german = "de"
|
||||
/// Greek Language Localization
|
||||
case greek = "el"
|
||||
/// Hebrew Language Localization
|
||||
case hebrew = "he"
|
||||
/// Hungarian Language Localization
|
||||
case hungarian = "hu"
|
||||
/// Indonesian Language Localization
|
||||
case indonesian = "id"
|
||||
/// Italian Language Localization
|
||||
case italian = "it"
|
||||
/// Japanese Language Localization
|
||||
case japanese = "ja"
|
||||
/// Korean Language Localization
|
||||
case korean = "ko"
|
||||
/// Latvian Language Localization
|
||||
case latvian = "lv"
|
||||
/// Lithuanian Language Localization
|
||||
case lithuanian = "lt"
|
||||
/// Malay Language Localization
|
||||
case malay = "ms"
|
||||
/// Norwegian Language Localization
|
||||
case norwegian = "nb-NO"
|
||||
/// Persian Language Localization
|
||||
case persian = "fa"
|
||||
/// Persian (Afghanistan) Language Localization
|
||||
case persianAfghanistan = "fa-AF"
|
||||
/// Persian (Iran) Language Localization
|
||||
case persianIran = "fa-IR"
|
||||
/// Polish Language Localization
|
||||
case polish = "pl"
|
||||
/// Brazilian Portuguese Language Localization
|
||||
case portugueseBrazil = "pt"
|
||||
/// Portugal's Portuguese Language Localization
|
||||
case portuguesePortugal = "pt-PT"
|
||||
/// Romanian Language Localization
|
||||
case romanian = "ro"
|
||||
/// Russian Language Localization
|
||||
case russian = "ru"
|
||||
/// Serbian (Cyrillic) Language Localization
|
||||
case serbianCyrillic = "sr-Cyrl"
|
||||
/// Serbian (Latin) Language Localization
|
||||
case serbianLatin = "sr-Latn"
|
||||
/// Slovenian Language Localization
|
||||
case slovenian = "sl"
|
||||
/// Spanish Language Localization
|
||||
case spanish = "es"
|
||||
/// Swedish Language Localization
|
||||
case swedish = "sv"
|
||||
/// Thai Language Localization
|
||||
case thai = "th"
|
||||
/// Turkish Language Localization
|
||||
case turkish = "tr"
|
||||
/// Urdu Language Localization
|
||||
case urdu = "ur"
|
||||
/// Ukranian Language Localization
|
||||
case ukrainian = "uk"
|
||||
/// Vietnamese Language Localization
|
||||
case vietnamese = "vi"
|
||||
}
|
||||
|
||||
/// The name of the app as defined by the `Info.plist`.
|
||||
private var appName: String = Bundle.bestMatchingAppName()
|
||||
|
||||
/// Overrides the default localization of a user's device when presenting the update message and button titles in the alert.
|
||||
///
|
||||
/// See the Siren.Localization.Language enum for more details.
|
||||
private let forceLanguage: Language?
|
||||
|
||||
/// Initializes
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - appName: Overrides the default name of the app. This is optional and defaults to the app that is defined in the `Info.plist`.
|
||||
/// - forceLanguage: The language the alert to which the alert should be set. If `nil`, it falls back to the device's preferred locale.
|
||||
init(appName: String?, andForceLanguageLocalization forceLanguage: Language?) {
|
||||
if let appName = appName {
|
||||
self.appName = appName
|
||||
}
|
||||
|
||||
self.forceLanguage = forceLanguage
|
||||
}
|
||||
|
||||
/// The localized string for the `UIAlertController`'s message field. .
|
||||
///
|
||||
/// - Returns: A localized string for the update message.
|
||||
public func alertMessage(forCurrentAppStoreVersion currentAppStoreVersion: String) -> String {
|
||||
let message = Bundle.localizedString(forKey: AlertConstants.alertMessage,
|
||||
andForceLocalization: forceLanguage)
|
||||
|
||||
return String(format: message, appName, currentAppStoreVersion)
|
||||
}
|
||||
|
||||
/// The localized string for the `UIAlertController`'s title field. .
|
||||
///
|
||||
/// - Returns: A localized string for the phrase "Update Available".
|
||||
public func alertTitle() -> String {
|
||||
return Bundle.localizedString(forKey: AlertConstants.alertTitle,
|
||||
andForceLocalization: forceLanguage)
|
||||
}
|
||||
|
||||
/// The localized string for the "Next time" `UIAlertAction`.
|
||||
///
|
||||
/// - Returns: A localized string for the phrase "Next time".
|
||||
public func nextTimeButtonTitle() -> String {
|
||||
return Bundle.localizedString(forKey: AlertConstants.nextTimeButtonTitle,
|
||||
andForceLocalization: forceLanguage)
|
||||
}
|
||||
|
||||
/// The localized string for the "Skip this version" `UIAlertAction`.
|
||||
///
|
||||
/// - Returns: A localized string for the phrase "Skip this version".
|
||||
public func skipButtonTitle() -> String {
|
||||
return Bundle.localizedString(forKey: AlertConstants.skipButtonTitle,
|
||||
andForceLocalization: forceLanguage)
|
||||
}
|
||||
|
||||
/// The localized string for the "Update" `UIAlertAction`.
|
||||
///
|
||||
/// - Returns: A localized string for the phrase "Update".
|
||||
public func updateButtonTitle() -> String {
|
||||
return Bundle.localizedString(forKey: AlertConstants.updateButtonTitle,
|
||||
andForceLocalization: forceLanguage)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
//
|
||||
// Model.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 3/27/19.
|
||||
// Copyright © 2019 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// The validated and unwrapped `APIModel`.
|
||||
/// This model is presented to the end user in Siren's completion handler.
|
||||
public struct Model {
|
||||
|
||||
/// The app's App ID.
|
||||
public let appID: Int
|
||||
|
||||
/// The release date for the latest version of the app.
|
||||
public let currentVersionReleaseDate: String
|
||||
|
||||
/// The minimum version of iOS that the current version of the app requires.
|
||||
public let minimumOSVersion: String
|
||||
|
||||
/// The releases notes from the latest version of the app.
|
||||
public let releaseNotes: String?
|
||||
|
||||
/// The latest version of the app.
|
||||
public let version: String
|
||||
|
||||
/// The initializer for the `public` facing Model type.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - appID: The app's App ID.
|
||||
/// - currentVersionReleaseDate: The release date for the latest version of the app.
|
||||
/// - minimumOSVersion: The minimum version of iOS that the current version of the app requires.
|
||||
/// - releaseNotes: The releases notes from the latest version of the app.
|
||||
/// - version: The latest version of the app.
|
||||
init(appID: Int,
|
||||
currentVersionReleaseDate: String,
|
||||
minimumOSVersion: String,
|
||||
releaseNotes: String?,
|
||||
version: String) {
|
||||
self.appID = appID
|
||||
self.currentVersionReleaseDate = currentVersionReleaseDate
|
||||
self.minimumOSVersion = minimumOSVersion
|
||||
self.releaseNotes = releaseNotes
|
||||
self.version = version
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// PerformCheck.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 2/1/19.
|
||||
// Copyright © 2019 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// The type of check to perform when Siren's `wail` method is performed.
|
||||
///
|
||||
/// - Note: Alert presentation will still respct the settings that are set
|
||||
/// for `UpdatePromptFrequency` and `showAlertAfterCurrentVersionHasBeenReleasedForDays`
|
||||
public enum PerformCheck {
|
||||
/// Performs a version check only when Siren's `wail` method is called,
|
||||
/// as the `UIApplication.didBecomeActiveNotification` is ignored.
|
||||
case onDemand
|
||||
|
||||
/// (DEFAULT) Perform a version check whenever the app enters the foreground.
|
||||
/// This value must be set when Siren's `wail` method is called to enable the
|
||||
/// `UIApplication.didBecomeActiveNotification` observer.
|
||||
case onForeground
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
//
|
||||
// Rules.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Sabintsev, Arthur on 11/18/18.
|
||||
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// Alert Presentation Rules for Siren.
|
||||
public struct Rules {
|
||||
/// The type of alert that should be presented.
|
||||
let alertType: AlertType
|
||||
|
||||
/// The frequency in which a the user is prompted to update the app
|
||||
/// once a new version is available in the App Store and if they have not updated yet.
|
||||
let frequency: UpdatePromptFrequency
|
||||
|
||||
/// Initializes the alert presentation rules.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - frequency: How often a user should be prompted to update the app once a new version is available in the App Store.
|
||||
/// - alertType: The type of alert that should be presented.
|
||||
public init(promptFrequency frequency: UpdatePromptFrequency,
|
||||
forAlertType alertType: AlertType) {
|
||||
self.frequency = frequency
|
||||
self.alertType = alertType
|
||||
}
|
||||
|
||||
/// Performs a version check immediately, but allows the user to skip updating the app until the next time the app becomes active.
|
||||
public static var annoying: Rules {
|
||||
return Rules(promptFrequency: .immediately, forAlertType: .option)
|
||||
}
|
||||
|
||||
/// Performs a version check immediately and forces the user to update the app.
|
||||
public static var critical: Rules {
|
||||
return Rules(promptFrequency: .immediately, forAlertType: .force)
|
||||
}
|
||||
|
||||
/// Performs a version check once a day, but allows the user to skip updating the app until
|
||||
/// the next time the app becomes active or skipping the update all together until another version is released.
|
||||
///
|
||||
/// This is the default setting.
|
||||
public static var `default`: Rules {
|
||||
return Rules(promptFrequency: .daily, forAlertType: .skip)
|
||||
}
|
||||
|
||||
/// Performs a version check weekly, but allows the user to skip updating the app until the next time the app becomes active.
|
||||
public static var hinting: Rules {
|
||||
return Rules(promptFrequency: .weekly, forAlertType: .option)
|
||||
}
|
||||
|
||||
/// Performs a version check daily, but allows the user to skip updating the app until the next time the app becomes active.
|
||||
public static var persistent: Rules {
|
||||
return Rules(promptFrequency: .daily, forAlertType: .option)
|
||||
}
|
||||
|
||||
/// Performs a version check weekly, but allows the user to skip updating the app until
|
||||
/// the next time the app becomes active or skipping the update all together until another version is released.
|
||||
public static var relaxed: Rules {
|
||||
return Rules(promptFrequency: .weekly, forAlertType: .skip)
|
||||
}
|
||||
}
|
||||
|
||||
// Rules-related Constants
|
||||
public extension Rules {
|
||||
/// Determines the type of alert to present after a successful version check has been performed.
|
||||
enum AlertType {
|
||||
/// Forces the user to update your app (1 button alert).
|
||||
case force
|
||||
/// Presents the user with option to update app now or at next launch (2 button alert).
|
||||
case option
|
||||
/// Presents the user with option to update the app now, at next launch, or to skip this version all together (3 button alert).
|
||||
case skip
|
||||
/// Doesn't present the alert.
|
||||
/// Use this option if you would like to present a custom alert to the end-user.
|
||||
case none
|
||||
}
|
||||
|
||||
/// Determines the frequency in which the user is prompted to update the app
|
||||
/// once a new version is available in the App Store and if they have not updated yet.
|
||||
enum UpdatePromptFrequency: UInt {
|
||||
/// Version check performed every time the app is launched.
|
||||
case immediately = 0
|
||||
/// Version check performed once a day.
|
||||
case daily = 1
|
||||
/// Version check performed once a week.
|
||||
case weekly = 7
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// UpdateResults.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 12/1/18.
|
||||
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// The relevant metadata returned from Siren upon completing a successful version check.
|
||||
public struct UpdateResults {
|
||||
/// The `UIAlertAction` the user chose upon being presented with the update alert.
|
||||
/// Defaults to `unknown` until an alert is actually presented.
|
||||
public var alertAction: AlertAction = .unknown
|
||||
|
||||
/// The Siren-supported locale that was used for the string in the update alert.
|
||||
public let localization: Localization
|
||||
|
||||
/// The Swift-mapped and unwrapped API model, if a successful version check was performed.
|
||||
public let model: Model
|
||||
|
||||
/// The type of update that was returned for the API.
|
||||
public var updateType: RulesManager.UpdateType = .unknown
|
||||
}
|
||||
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+273
-696
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,92 @@
|
||||
//
|
||||
// DataParser.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 11/25/18.
|
||||
// Copyright © 2018 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
/// Version parsing functions for Siren.
|
||||
struct DataParser {
|
||||
/// Checks to see if the App Store version of the app is newer than the installed version.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - installedVersion: The installed version of the app.
|
||||
/// - appStoreVersion: The App Store version of the app.
|
||||
/// - Returns: `true` if the App Store version is newer. Otherwise, `false`.
|
||||
static func isAppStoreVersionNewer(installedVersion: String?, appStoreVersion: String?) -> Bool {
|
||||
guard let installedVersion = installedVersion,
|
||||
let appStoreVersion = appStoreVersion,
|
||||
(installedVersion.compare(appStoreVersion, options: .numeric) == .orderedAscending) else {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
/// Validates that the latest version in the App Store is compatible with the device's current version of iOS.
|
||||
///
|
||||
/// - Parameter model: The iTunes Lookup Model.
|
||||
/// - Returns: `true` if the latest version is compatible with the device's current version of iOS. Otherwise, `false`.
|
||||
static func isUpdateCompatibleWithDeviceOS(for model: APIModel) -> Bool {
|
||||
guard let requiredOSVersion = model.results.first?.minimumOSVersion else {
|
||||
return false
|
||||
}
|
||||
|
||||
let systemVersion = UIDevice.current.systemVersion
|
||||
|
||||
guard systemVersion.compare(requiredOSVersion, options: .numeric) == .orderedDescending ||
|
||||
systemVersion.compare(requiredOSVersion, options: .numeric) == .orderedSame else {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
/// The type of update that is returned from the API in relation to the version of the app that is installed.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - installedVersion: The installed version of the app.
|
||||
/// - appStoreVersion: The App Store version of the app.
|
||||
/// - Returns: The type of update in relation to the version of the app that is installed.
|
||||
static func parseForUpdate(forInstalledVersion installedVersion: String?,
|
||||
andAppStoreVersion appStoreVersion: String?) -> RulesManager.UpdateType {
|
||||
guard let installedVersion = installedVersion,
|
||||
let appStoreVersion = appStoreVersion else {
|
||||
return .unknown
|
||||
}
|
||||
|
||||
let oldVersion = split(version: installedVersion)
|
||||
let newVersion = split(version: appStoreVersion)
|
||||
|
||||
guard let newVersionFirst = newVersion.first,
|
||||
let oldVersionFirst = oldVersion.first else {
|
||||
return .unknown
|
||||
}
|
||||
|
||||
if newVersionFirst > oldVersionFirst { // A.b.c.d
|
||||
return .major
|
||||
} else if newVersion.count > 1 && (oldVersion.count <= 1 || newVersion[1] > oldVersion[1]) { // a.B.c.d
|
||||
return .minor
|
||||
} else if newVersion.count > 2 && (oldVersion.count <= 2 || newVersion[2] > oldVersion[2]) { // a.b.C.d
|
||||
return .patch
|
||||
} else if newVersion.count > 3 && (oldVersion.count <= 3 || newVersion[3] > oldVersion[3]) { // a.b.c.D
|
||||
return .revision
|
||||
} else {
|
||||
return .unknown
|
||||
}
|
||||
}
|
||||
|
||||
/// Splits a version-formatted `String into an `[Int]`.
|
||||
///
|
||||
/// Converts `"a.b.c.d"` into `[a, b, c, d]`.
|
||||
///
|
||||
/// - Parameter version: The version formatted `String`.
|
||||
///
|
||||
/// - Returns: An array of integers representing a version of the app.
|
||||
private static func split(version: String) -> [Int] {
|
||||
return version.lazy.split {$0 == "."}.map { String($0) }.map {Int($0) ?? 0}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
//
|
||||
// KnownError.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 8/6/17.
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// Enumerates all potentials errors that Siren can handle.
|
||||
public enum KnownError: LocalizedError {
|
||||
/// Error retrieving trackId as the JSON does not contain a 'trackId' key.
|
||||
case appStoreAppIDFailure
|
||||
/// Error retrieving App Store data as JSON results were empty. Is your app available in the US? If not, change the `countryCode` variable to fix this error.
|
||||
case appStoreDataRetrievalEmptyResults
|
||||
/// Error retrieving App Store data as an error was returned.
|
||||
case appStoreDataRetrievalFailure(underlyingError: Error?)
|
||||
/// Error parsing App Store JSON data.
|
||||
case appStoreJSONParsingFailure(underlyingError: Error)
|
||||
/// The version of iOS on the device is lower than that of the one required by the app version update.
|
||||
case appStoreOSVersionUnsupported
|
||||
/// Error retrieving App Store verson number as the JSON does not contain a `version` key.
|
||||
case appStoreVersionArrayFailure
|
||||
/// The `currentVersionReleaseDate` key is missing in the JSON payload. Please leave an issue on https://github.com/ArtSabintsev/Siren with as many details as possible.
|
||||
case currentVersionReleaseDate
|
||||
/// One of the iTunes URLs used in Siren is malformed. Please leave an issue on https://github.com/ArtSabintsev/Siren with as many details as possible.
|
||||
case malformedURL
|
||||
/// Please make sure that you have set a `Bundle Identifier` in your project.
|
||||
case missingBundleID
|
||||
/// No new update available.
|
||||
case noUpdateAvailable
|
||||
/// Siren will not present an update alert if it performed one too recently. If you would like to present an alert every time Siren is called, please consider setting the `UpdatePromptFrequency.immediately` rule in `RulesManager`
|
||||
case recentlyPrompted
|
||||
/// The app has been released for X days, but Siren cannot prompt the user until Y (where Y > X) days have passed.
|
||||
case releasedTooSoon(daysSinceRelease: Int, releasedForDays: Int)
|
||||
/// The user has opted to skip updating their current version of the app to the current App Store version.
|
||||
case skipVersionUpdate(installedVersion: String, appStoreVersion: String)
|
||||
|
||||
/// The localized description for each error handled by Siren.
|
||||
public var localizedDescription: String {
|
||||
switch self {
|
||||
case .appStoreAppIDFailure:
|
||||
return "\(KnownError.sirenError) Error retrieving trackId as the JSON does not contain a `trackId` key."
|
||||
case .appStoreDataRetrievalFailure(let error?):
|
||||
return "\(KnownError.sirenError) Error retrieving App Store data as an error was returned\nAlso, the following system level error was returned: \(error)"
|
||||
case .appStoreDataRetrievalEmptyResults:
|
||||
return "\(KnownError.sirenError) 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 .appStoreDataRetrievalFailure(.none):
|
||||
return "\(KnownError.sirenError) Error retrieving App Store data as an error was returned."
|
||||
case .appStoreJSONParsingFailure(let error):
|
||||
return "\(KnownError.sirenError) Error parsing App Store JSON data.\nAlso, the following system level error was returned: \(error)"
|
||||
case .appStoreOSVersionUnsupported:
|
||||
return "\(KnownError.sirenError) The version of iOS on the device is lower than that of the one required by the app version update."
|
||||
case .appStoreVersionArrayFailure:
|
||||
return "\(KnownError.sirenError) Error retrieving App Store verson number as the JSON does not contain a `version` key."
|
||||
case .currentVersionReleaseDate:
|
||||
return "\(KnownError.sirenError) The `currentVersionReleaseDate` key is missing in the JSON payload. Please leave an issue on https://github.com/ArtSabintsev/Siren with as many details as possible."
|
||||
case .malformedURL:
|
||||
return "\(KnownError.sirenError) One of the iTunes URLs used in Siren is malformed. Please leave an issue on https://github.com/ArtSabintsev/Siren with as many details as possible."
|
||||
case .missingBundleID:
|
||||
return "\(KnownError.sirenError) Please make sure that you have set a `Bundle Identifier` in your project."
|
||||
case .noUpdateAvailable:
|
||||
return "\(KnownError.sirenError) No new update available."
|
||||
case .recentlyPrompted:
|
||||
return "\(KnownError.sirenError) Siren will not present an update alert if it performed one too recently. If you would like to present an alert every time Siren is called, please consider setting the `\(Rules.UpdatePromptFrequency.self).immediately` rule in `\(RulesManager.self)`"
|
||||
case .releasedTooSoon(let daysSinceRelease, let releasedForDays):
|
||||
return "\(KnownError.sirenError) The app has been released for \(daysSinceRelease) days, but Siren cannot prompt the user until \(releasedForDays) days have passed."
|
||||
case .skipVersionUpdate(let installedVersion, let appStoreVersion):
|
||||
return "\(KnownError.sirenError) The user has opted to skip updating their current version of the app (\(installedVersion)) to the current App Store version (\(appStoreVersion))."
|
||||
}
|
||||
}
|
||||
|
||||
/// An easily identifiable prefix for all errors thrown by Siren.
|
||||
private static var sirenError: String {
|
||||
return "[Siren Error]"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
//
|
||||
// SirenViewController.swift
|
||||
// Siren
|
||||
//
|
||||
// Created by Arthur Sabintsev on 3/17/17.
|
||||
// Copyright © 2017 Sabintsev iOS Projects. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
/// `UIViewController` Extension for Siren
|
||||
final class SirenViewController: UIViewController {
|
||||
|
||||
/// This creates a retain cycle.
|
||||
/// This is needed to retain the UIAlertController in iOS 13.0+
|
||||
var retainedWindow: UIWindow?
|
||||
|
||||
/// `UIStatusBarStyle` override.
|
||||
override var preferredStatusBarStyle: UIStatusBarStyle {
|
||||
if #available(iOS 13.0, *) {
|
||||
return retainedWindow?.windowScene?.statusBarManager?.statusBarStyle ?? .default
|
||||
} else {
|
||||
return UIApplication.shared.statusBarStyle
|
||||
}
|
||||
}
|
||||
|
||||
deinit {
|
||||
retainedWindow = nil
|
||||
}
|
||||
}
|
||||
Vendored
+46
-19
@@ -10,6 +10,7 @@
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Section/Classes" class="dashAnchor"></a>
|
||||
<a title="Classes Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
@@ -35,24 +36,57 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Enums.html">Enums</a>
|
||||
<a href="Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/SirenAlertType.html">SirenAlertType</a>
|
||||
<a href="Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/SirenLanguageType.html">SirenLanguageType</a>
|
||||
<a href="Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/SirenVersionCheckType.html">SirenVersionCheckType</a>
|
||||
<a href="Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Protocols.html">Protocols</a>
|
||||
<a href="Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
<a href="Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -67,20 +101,13 @@
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<div class="task-name-container">
|
||||
<a name="/Siren"></a>
|
||||
<a name="//apple_ref/swift/Section/Siren" class="dashAnchor"></a>
|
||||
<a href="#/Siren">
|
||||
<h3 class="section-name">Siren</h3>
|
||||
</a>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/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">
|
||||
@@ -88,7 +115,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.</p>
|
||||
|
||||
<a href="Classes/Siren.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
@@ -96,7 +123,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>
|
||||
@@ -108,8 +135,8 @@
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2017 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2017-03-04)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.4</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-09-15)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.11.0</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
+206
-403
@@ -36,24 +36,57 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enums</a>
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenAlertType.html">SirenAlertType</a>
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenLanguageType.html">SirenLanguageType</a>
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenVersionCheckType.html">SirenVersionCheckType</a>
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Protocols.html">Protocols</a>
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -65,11 +98,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.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
@@ -78,9 +111,9 @@
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren16SirenErrorDomainSS"></a>
|
||||
<a name="//apple_ref/swift/Property/SirenErrorDomain" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren16SirenErrorDomainSS">SirenErrorDomain</a>
|
||||
<a name="/s:5SirenAAC14ResultsHandlera"></a>
|
||||
<a name="//apple_ref/swift/Alias/ResultsHandler" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC14ResultsHandlera">ResultsHandler</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -88,14 +121,14 @@
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The error domain for all errors created by Siren</p>
|
||||
<p>Return results or errors obtained from performing a version check with Siren.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><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="kd">typealias</span> <span class="kt">ResultsHandler</span> <span class="o">=</span> <span class="p">(</span><span class="kt">Result</span><span class="o"><</span><span class="kt"><a href="../Structs/UpdateResults.html">UpdateResults</a></span><span class="p">,</span> <span class="kt"><a href="../Enums/KnownError.html">KnownError</a></span><span class="o">></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Void</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -105,383 +138,9 @@
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren8delegateXwGSqPS_13SirenDelegate__"></a>
|
||||
<a name="//apple_ref/swift/Property/delegate" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren8delegateXwGSqPS_13SirenDelegate__">delegate</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The SirenDelegate variable, which should be set if you’d like to be notified:</p>
|
||||
|
||||
<p>When a user views or interacts with the alert
|
||||
- sirenDidShowUpdateDialog(alertType: SirenAlertType)
|
||||
- sirenUserDidLaunchAppStore()
|
||||
- sirenUserDidSkipVersion()
|
||||
- sirenUserDidCancel()</p>
|
||||
|
||||
<p>When a new version has been detected, and you would like to present a localized message in a custom UI
|
||||
- sirenDidDetectNewVersionWithoutAlert(message: String)</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="k">weak</span> <span class="k">var</span> <span class="nv">delegate</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SirenDelegate.html">SirenDelegate</a></span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren12debugEnabledSb"></a>
|
||||
<a name="//apple_ref/swift/Property/debugEnabled" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren12debugEnabledSb">debugEnabled</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The debug flag, which is disabled by default.
|
||||
When enabled, a stream of println() 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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren9alertTypeOS_14SirenAlertType"></a>
|
||||
<a name="//apple_ref/swift/Property/alertType" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren9alertTypeOS_14SirenAlertType">alertType</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Determines the type of alert that should be shown.
|
||||
See the SirenAlertType enum for full details.</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="k">var</span> <span class="nv">alertType</span> <span class="o">=</span> <span class="kt"><a href="../Enums/SirenAlertType.html">SirenAlertType</a></span><span class="o">.</span><span class="n">option</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren20majorUpdateAlertTypeOS_14SirenAlertType"></a>
|
||||
<a name="//apple_ref/swift/Property/majorUpdateAlertType" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren20majorUpdateAlertTypeOS_14SirenAlertType">majorUpdateAlertType</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Determines the type of alert that should be shown for major version updates: A.b.c
|
||||
Defaults to SirenAlertType.Option.
|
||||
See the SirenAlertType enum for full details.</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">majorUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Enums/SirenAlertType.html">SirenAlertType</a></span><span class="o">.</span><span class="n">option</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren20minorUpdateAlertTypeOS_14SirenAlertType"></a>
|
||||
<a name="//apple_ref/swift/Property/minorUpdateAlertType" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren20minorUpdateAlertTypeOS_14SirenAlertType">minorUpdateAlertType</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Determines the type of alert that should be shown for minor version updates: a.B.c
|
||||
Defaults to SirenAlertType.Option.
|
||||
See the SirenAlertType enum for full details.</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">minorUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Enums/SirenAlertType.html">SirenAlertType</a></span><span class="o">.</span><span class="n">option</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren20patchUpdateAlertTypeOS_14SirenAlertType"></a>
|
||||
<a name="//apple_ref/swift/Property/patchUpdateAlertType" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren20patchUpdateAlertTypeOS_14SirenAlertType">patchUpdateAlertType</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Determines the type of alert that should be shown for minor patch updates: a.b.C
|
||||
Defaults to SirenAlertType.Option.
|
||||
See the SirenAlertType enum for full details.</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">patchUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Enums/SirenAlertType.html">SirenAlertType</a></span><span class="o">.</span><span class="n">option</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren23revisionUpdateAlertTypeOS_14SirenAlertType"></a>
|
||||
<a name="//apple_ref/swift/Property/revisionUpdateAlertType" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren23revisionUpdateAlertTypeOS_14SirenAlertType">revisionUpdateAlertType</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Determines the type of alert that should be shown for revision updates: a.b.c.D
|
||||
Defaults to SirenAlertType.Option.
|
||||
See the SirenAlertType enum for full details.</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">revisionUpdateAlertType</span> <span class="o">=</span> <span class="kt"><a href="../Enums/SirenAlertType.html">SirenAlertType</a></span><span class="o">.</span><span class="n">option</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren7appNameSS"></a>
|
||||
<a name="//apple_ref/swift/Property/appName" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren7appNameSS">appName</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The name of your app.
|
||||
By default, it’s set to the name of the app that’s stored in your plist.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren11countryCodeGSqSS_"></a>
|
||||
<a name="//apple_ref/swift/Property/countryCode" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren11countryCodeGSqSS_">countryCode</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The region or country of an App Store in which your app is available.
|
||||
By default, all version checks are performed against the US App Store.
|
||||
If your app is not available in the US App Store, set it to the identifier of at least one App Store within which it is available.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">countryCode</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren25forceLanguageLocalizationGSqOS_17SirenLanguageType_"></a>
|
||||
<a name="//apple_ref/swift/Property/forceLanguageLocalization" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren25forceLanguageLocalizationGSqOS_17SirenLanguageType_">forceLanguageLocalization</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Overrides the default localization of a user’s device when presenting the update message and button titles in the alert.
|
||||
See the SirenLanguageType enum for more details.</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="k">var</span> <span class="nv">forceLanguageLocalization</span><span class="p">:</span> <span class="kt"><a href="../Enums/SirenLanguageType.html">SirenLanguageType</a></span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren24alertControllerTintColorGSqCSo7UIColor_"></a>
|
||||
<a name="//apple_ref/swift/Property/alertControllerTintColor" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren24alertControllerTintColorGSqCSo7UIColor_">alertControllerTintColor</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Overrides the tint color for UIAlertController.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">alertControllerTintColor</span><span class="p">:</span> <span class="kt">UIColor</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren50showAlertAfterCurrentVersionHasBeenReleasedForDaysGSqSi_"></a>
|
||||
<a name="//apple_ref/swift/Property/showAlertAfterCurrentVersionHasBeenReleasedForDays" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren50showAlertAfterCurrentVersionHasBeenReleasedForDaysGSqSi_">showAlertAfterCurrentVersionHasBeenReleasedForDays</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>When this is set, the alert will only show up if the current version has already been released for X days</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="k">var</span> <span class="nv">showAlertAfterCurrentVersionHasBeenReleasedForDays</span><span class="p">:</span> <span class="kt">Int</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:vC5Siren5Siren22currentAppStoreVersionGSqSS_"></a>
|
||||
<a name="//apple_ref/swift/Property/currentAppStoreVersion" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:vC5Siren5Siren22currentAppStoreVersionGSqSS_">currentAppStoreVersion</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The current version of your app that is available for download on the App Store</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><code><span class="kd">public</span> <span class="nf">fileprivate</span><span class="p">(</span><span class="k">set</span><span class="p">)</span> <span class="k">var</span> <span class="nv">currentAppStoreVersion</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s: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">
|
||||
@@ -489,14 +148,14 @@ See the SirenLanguageType enum for more details.</p>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The App’s Singleton</p>
|
||||
<p>The Siren singleton. The main point of entry to the Siren library.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><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>
|
||||
@@ -506,9 +165,9 @@ See the SirenLanguageType enum for more details.</p>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:FC5Siren5Siren12checkVersionFT9checkTypeOS_21SirenVersionCheckType_T_"></a>
|
||||
<a name="//apple_ref/swift/Method/checkVersion(checkType:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FC5Siren5Siren12checkVersionFT9checkTypeOS_21SirenVersionCheckType_T_">checkVersion(checkType:)</a>
|
||||
<a name="/s:5SirenAAC10apiManagerAA10APIManagerVvp"></a>
|
||||
<a name="//apple_ref/swift/Property/apiManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC10apiManagerAA10APIManagerVvp">apiManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -516,16 +175,119 @@ See the SirenLanguageType enum for more details.</p>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Checks the currently installed version of your app against the App Store.
|
||||
The default check is against the US App Store, but if your app is not listed in the US,
|
||||
you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11countryCodeGSqSS_">countryCode</a></code> property before calling this method. Please refer to the countryCode property for more information.</p>
|
||||
<p>The manager that controls the App Store API that is
|
||||
used to fetch the latest version of the app.</p>
|
||||
|
||||
<p>Defaults to the US App Store.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><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="../Enums/SirenVersionCheckType.html">SirenVersionCheckType</a></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">apiManager</span><span class="p">:</span> <span class="kt"><a href="../Structs/APIManager.html">APIManager</a></span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC19presentationManagerAA012PresentationC0Vvp"></a>
|
||||
<a name="//apple_ref/swift/Property/presentationManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC19presentationManagerAA012PresentationC0Vvp">presentationManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The manager that controls the update alert’s string localization and tint color.</p>
|
||||
|
||||
<p>Defaults the string’s lange localization to the user’s device localization.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">presentationManager</span><span class="p">:</span> <span class="kt"><a href="../Structs/PresentationManager.html">PresentationManager</a></span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC12rulesManagerAA05RulesC0Vvp"></a>
|
||||
<a name="//apple_ref/swift/Property/rulesManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC12rulesManagerAA05RulesC0Vvp">rulesManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The manager that controls the type of alert that should be displayed
|
||||
and how often an alert should be displayed dpeneding on the type
|
||||
of update that is available relative to the installed version of the app
|
||||
(e.g., different rules for major, minor, patch and revision updated can be used).</p>
|
||||
|
||||
<p>Defaults to performing a version check once a day with an alert that allows
|
||||
the user to skip updating the app until the next time the app becomes active or
|
||||
skipping the update all together until another version is released.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">lazy</span> <span class="k">var</span> <span class="nv">rulesManager</span><span class="p">:</span> <span class="kt"><a href="../Structs/RulesManager.html">RulesManager</a></span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<div class="task-name-container">
|
||||
<a name="/Public%20API%20Interface"></a>
|
||||
<a name="//apple_ref/swift/Section/Public API Interface" class="dashAnchor"></a>
|
||||
<a href="#/Public%20API%20Interface">
|
||||
<h3 class="section-name">Public API Interface</h3>
|
||||
</a>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5SirenAAC4wail12performCheck10completionyAA07PerformD0O_ys6ResultOyAA13UpdateResultsVAA10KnownErrorOGcSgtF"></a>
|
||||
<a name="//apple_ref/swift/Method/wail(performCheck:completion:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5SirenAAC4wail12performCheck10completionyAA07PerformD0O_ys6ResultOyAA13UpdateResultsVAA10KnownErrorOGcSgtF">wail(performCheck:completion:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>This method executes the Siren version checking and alert presentation flow.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">wail</span><span class="p">(</span><span class="nv">performCheck</span><span class="p">:</span> <span class="kt"><a href="../Enums/PerformCheck.html">PerformCheck</a></span> <span class="o">=</span> <span class="o">.</span><span class="n">onForeground</span><span class="p">,</span>
|
||||
<span class="n">completion</span> <span class="nv">handler</span><span class="p">:</span> <span class="kt"><a href="../Classes/Siren.html#/s:5SirenAAC14ResultsHandlera">ResultsHandler</a></span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -536,13 +298,24 @@ you should set the <code><a href="../Classes/Siren.html#/s:vC5Siren5Siren11count
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>checkType</em>
|
||||
<em>performCheck</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The frequency in days in which you want a check to be performed. Please refer to the SirenVersionCheckType enum for more details.</p>
|
||||
|
||||
<p>Defines how the version check flow is entered. Defaults to <code>.onForeground</code>.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>handler</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>Returns the metadata around a successful version check and interaction with the update modal or it returns nil.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -552,13 +325,43 @@ 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 when the user clicked the <code>Update</code> button in the UIAlertController modal.</p>
|
||||
|
||||
<p>This function is marked <code>public</code> as a convenience for those developers who decide to build a custom alert modal
|
||||
instead of using Siren’s prebuilt update alert.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">launchAppStore</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2017 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2017-03-04)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.4</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-09-15)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.11.0</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
@@ -1,59 +1,85 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>SirenAlertType Enum Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<title>AlertType Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
<script src="../../js/jquery.min.js" defer></script>
|
||||
<script src="../../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/SirenAlertType" class="dashAnchor"></a>
|
||||
<a title="SirenAlertType Enum Reference"></a>
|
||||
<a name="//apple_ref/swift/Enum/AlertType" class="dashAnchor"></a>
|
||||
<a title="AlertType Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
SirenAlertType Enum Reference
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
AlertType Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
<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">Enums</a>
|
||||
<a href="../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenAlertType.html">SirenAlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenLanguageType.html">SirenLanguageType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenVersionCheckType.html">SirenVersionCheckType</a>
|
||||
<a href="../../Enums/UpdateType.html">UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Protocols.html">Protocols</a>
|
||||
<a href="../../Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
<a href="../../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -62,10 +88,10 @@
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>SirenAlertType</h1>
|
||||
<h1>AlertType</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SirenAlertType</span></code></pre>
|
||||
<pre class="highlight swift"><code><span class="kd">enum</span> <span class="kt">AlertType</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -78,9 +104,9 @@
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:FO5Siren14SirenAlertType5forceFMS0_S0_"></a>
|
||||
<a name="/s:5SirenAAC9AlertTypeO5forceA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/force" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FO5Siren14SirenAlertType5forceFMS0_S0_">force</a>
|
||||
<a class="token" href="#/s:5SirenAAC9AlertTypeO5forceA2DmF">force</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -95,23 +121,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:FO5Siren14SirenAlertType6optionFMS0_S0_"></a>
|
||||
<a name="/s:5SirenAAC9AlertTypeO6optionA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/option" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FO5Siren14SirenAlertType6optionFMS0_S0_">option</a>
|
||||
<a class="token" href="#/s:5SirenAAC9AlertTypeO6optionA2DmF">option</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -126,23 +148,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:FO5Siren14SirenAlertType4skipFMS0_S0_"></a>
|
||||
<a name="/s:5SirenAAC9AlertTypeO4skipA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/skip" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FO5Siren14SirenAlertType4skipFMS0_S0_">skip</a>
|
||||
<a class="token" href="#/s:5SirenAAC9AlertTypeO4skipA2DmF">skip</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -157,23 +175,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:FO5Siren14SirenAlertType4noneFMS0_S0_"></a>
|
||||
<a name="/s:5SirenAAC9AlertTypeO4noneA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/none" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FO5Siren14SirenAlertType4noneFMS0_S0_">none</a>
|
||||
<a class="token" href="#/s:5SirenAAC9AlertTypeO4noneA2DmF">none</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -181,14 +195,15 @@
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Doesn’t show the alert, but instead returns a localized message for use in a custom UI within the sirenDidDetectNewVersionWithoutAlert() delegate method.</p>
|
||||
<p>Doesn’t show the alert, but instead returns a localized message
|
||||
for use in a custom UI within the sirenDidDetectNewVersionWithoutAlert() delegate method.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><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>
|
||||
@@ -200,8 +215,8 @@
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2017 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2017-03-04)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.4</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
<p>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-17)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,59 +1,85 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>SirenVersionCheckType Enum Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<title>VersionCheckType Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
<script src="../../js/jquery.min.js" defer></script>
|
||||
<script src="../../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/SirenVersionCheckType" class="dashAnchor"></a>
|
||||
<a title="SirenVersionCheckType Enum Reference"></a>
|
||||
<a name="//apple_ref/swift/Enum/VersionCheckType" class="dashAnchor"></a>
|
||||
<a title="VersionCheckType Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
SirenVersionCheckType Enum Reference
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
VersionCheckType Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
<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">Enums</a>
|
||||
<a href="../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenAlertType.html">SirenAlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenLanguageType.html">SirenLanguageType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenVersionCheckType.html">SirenVersionCheckType</a>
|
||||
<a href="../../Enums/UpdateType.html">UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Protocols.html">Protocols</a>
|
||||
<a href="../../Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
<a href="../../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -62,14 +88,14 @@
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>SirenVersionCheckType</h1>
|
||||
<h1>VersionCheckType</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SirenVersionCheckType</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>
|
||||
<p>Determines the frequency in which the the version check is performed.</p>
|
||||
<p>Determines the frequency in which the the version check is performed and the user is prompted to update the app.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
@@ -78,9 +104,9 @@
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:FO5Siren21SirenVersionCheckType11immediatelyFMS0_S0_"></a>
|
||||
<a name="/s:5SirenAAC16VersionCheckTypeO11immediatelyA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/immediately" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FO5Siren21SirenVersionCheckType11immediatelyFMS0_S0_">immediately</a>
|
||||
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO11immediatelyA2DmF">immediately</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -95,23 +121,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:FO5Siren21SirenVersionCheckType5dailyFMS0_S0_"></a>
|
||||
<a name="/s:5SirenAAC16VersionCheckTypeO5dailyA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/daily" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FO5Siren21SirenVersionCheckType5dailyFMS0_S0_">daily</a>
|
||||
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO5dailyA2DmF">daily</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -126,23 +148,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:FO5Siren21SirenVersionCheckType6weeklyFMS0_S0_"></a>
|
||||
<a name="/s:5SirenAAC16VersionCheckTypeO6weeklyA2DmF"></a>
|
||||
<a name="//apple_ref/swift/Element/weekly" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FO5Siren21SirenVersionCheckType6weeklyFMS0_S0_">weekly</a>
|
||||
<a class="token" href="#/s:5SirenAAC16VersionCheckTypeO6weeklyA2DmF">weekly</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -157,7 +175,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>
|
||||
@@ -169,8 +187,8 @@
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2017 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2017-03-04)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.4</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
<p>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-17)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
@@ -0,0 +1,191 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>SirenViewController Class Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Class/SirenViewController" class="dashAnchor"></a>
|
||||
<a title="SirenViewController Class Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
SirenViewController Class Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>SirenViewController</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SirenViewController</span> <span class="p">:</span> <span class="kt">UIViewController</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p><code>UIViewController</code> Extension for Siren</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/c:@M@Siren@objc(cs)SirenViewController(py)preferredStatusBarStyle"></a>
|
||||
<a name="//apple_ref/swift/Property/preferredStatusBarStyle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/c:@M@Siren@objc(cs)SirenViewController(py)preferredStatusBarStyle">preferredStatusBarStyle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p><code>UIStatusBarStyle</code> override.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">override</span> <span class="k">var</span> <span class="nv">preferredStatusBarStyle</span><span class="p">:</span> <span class="kt">UIStatusBarStyle</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
Vendored
+79
-41
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Enums Reference</title>
|
||||
<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'>
|
||||
@@ -10,7 +10,8 @@
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a title="Enums Reference"></a>
|
||||
<a name="//apple_ref/swift/Section/Enumerations" class="dashAnchor"></a>
|
||||
<a title="Enumerations Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="index.html">Siren Docs</a> (100% documented)</p>
|
||||
@@ -20,7 +21,7 @@
|
||||
<p id="breadcrumbs">
|
||||
<a href="index.html">Siren Reference</a>
|
||||
<img id="carat" src="img/carat.png" />
|
||||
Enums Reference
|
||||
Enumerations Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
@@ -35,24 +36,57 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Enums.html">Enums</a>
|
||||
<a href="Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/SirenAlertType.html">SirenAlertType</a>
|
||||
<a href="Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/SirenLanguageType.html">SirenLanguageType</a>
|
||||
<a href="Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/SirenVersionCheckType.html">SirenVersionCheckType</a>
|
||||
<a href="Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Protocols.html">Protocols</a>
|
||||
<a href="Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
<a href="Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -61,26 +95,19 @@
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Enums</h1>
|
||||
<p>The following enums are available globally.</p>
|
||||
<h1>Enumerations</h1>
|
||||
<p>The following enumerations are available globally.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<div class="task-name-container">
|
||||
<a name="/SirenDelegate%20Protocol%20Extension"></a>
|
||||
<a name="//apple_ref/swift/Section/SirenDelegate Protocol Extension" class="dashAnchor"></a>
|
||||
<a href="#/SirenDelegate%20Protocol%20Extension">
|
||||
<h3 class="section-name">SirenDelegate Protocol Extension</h3>
|
||||
</a>
|
||||
</div>
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:O5Siren14SirenAlertType"></a>
|
||||
<a name="//apple_ref/swift/Enum/SirenAlertType" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:O5Siren14SirenAlertType">SirenAlertType</a>
|
||||
<a name="/s:5Siren11AlertActionO"></a>
|
||||
<a name="//apple_ref/swift/Enum/AlertAction" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren11AlertActionO">AlertAction</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -88,27 +115,31 @@
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Determines the type of alert to present after a successful version check has been performed.</p>
|
||||
<p>The <code>UIAlertController</code> button that was pressed upon being presented an update alert.</p>
|
||||
|
||||
<a href="Enums/SirenAlertType.html" class="slightly-smaller">See more</a>
|
||||
<a href="Enums/AlertAction.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SirenAlertType</span></code></pre>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">AlertAction</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:O5Siren21SirenVersionCheckType"></a>
|
||||
<a name="//apple_ref/swift/Enum/SirenVersionCheckType" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:O5Siren21SirenVersionCheckType">SirenVersionCheckType</a>
|
||||
<a name="/s:5Siren12PerformCheckO"></a>
|
||||
<a name="//apple_ref/swift/Enum/PerformCheck" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren12PerformCheckO">PerformCheck</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -116,27 +147,37 @@
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Determines the frequency in which the the version check is performed.</p>
|
||||
<p>The type of check to perform when Siren’s <code>wail</code> method is performed.</p>
|
||||
<div class="aside aside-note">
|
||||
<p class="aside-title">Note</p>
|
||||
Alert presentation will still respct the settings that are set
|
||||
for <code>UpdatePromptFrequency</code> and <code>showAlertAfterCurrentVersionHasBeenReleasedForDays</code>
|
||||
|
||||
<a href="Enums/SirenVersionCheckType.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
|
||||
<a href="Enums/PerformCheck.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"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SirenVersionCheckType</span><span class="p">:</span> <span class="kt">Int</span></code></pre>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">PerformCheck</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:O5Siren17SirenLanguageType"></a>
|
||||
<a name="//apple_ref/swift/Enum/SirenLanguageType" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:O5Siren17SirenLanguageType">SirenLanguageType</a>
|
||||
<a name="/s:5Siren10KnownErrorO"></a>
|
||||
<a name="//apple_ref/swift/Enum/KnownError" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO">KnownError</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
@@ -144,18 +185,15 @@
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Determines the available languages in which the update message and alert button titles should appear.</p>
|
||||
<p>Enumerates all potentials errors that Siren can handle.</p>
|
||||
|
||||
<p>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()</p>
|
||||
|
||||
<a href="Enums/SirenLanguageType.html" class="slightly-smaller">See more</a>
|
||||
<a href="Enums/KnownError.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SirenLanguageType</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">KnownError</span> <span class="p">:</span> <span class="kt">LocalizedError</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -167,8 +205,8 @@ by setting the forceLanguageLocalization property before calling checkVersion()<
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2017 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2017-03-04)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.4</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-09-15)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.11.0</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,231 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>AlertAction Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/AlertAction" class="dashAnchor"></a>
|
||||
<a title="AlertAction Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
AlertAction Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>AlertAction</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">AlertAction</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>The <code>UIAlertController</code> button that was pressed upon being presented an update alert.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren11AlertActionO8appStoreyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStore" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren11AlertActionO8appStoreyA2CmF">appStore</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The user clicked on the <code>Update</code> option, which took them to the app’s App Store page.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">appStore</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren11AlertActionO8nextTimeyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/nextTime" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren11AlertActionO8nextTimeyA2CmF">nextTime</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The user clicked on the <code>Next Time</code> option, which dismissed the alert.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">nextTime</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren11AlertActionO4skipyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/skip" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren11AlertActionO4skipyA2CmF">skip</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The user clicked on the <code>Skip this version</code> option, which dismissed the alert.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">skip</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren11AlertActionO7unknownyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/unknown" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren11AlertActionO7unknownyA2CmF">unknown</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>(Default) The user never chose an option. This is returned when an error is thrown by Siren.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">unknown</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-09-15)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.11.0</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,501 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>KnownError Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/KnownError" class="dashAnchor"></a>
|
||||
<a title="KnownError Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
KnownError Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>KnownError</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">KnownError</span> <span class="p">:</span> <span class="kt">LocalizedError</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Enumerates all potentials errors that Siren can handle.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO20appStoreAppIDFailureyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreAppIDFailure" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO20appStoreAppIDFailureyA2CmF">appStoreAppIDFailure</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Error retrieving trackId as the JSON does not contain a ‘trackId’ key.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">appStoreAppIDFailure</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO33appStoreDataRetrievalEmptyResultsyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreDataRetrievalEmptyResults" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO33appStoreDataRetrievalEmptyResultsyA2CmF">appStoreDataRetrievalEmptyResults</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Error retrieving App Store data as JSON results were empty. Is your app available in the US? If not, change the <code>countryCode</code> variable to fix this error.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">appStoreDataRetrievalEmptyResults</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO28appStoreDataRetrievalFailureyACs0C0_pSg_tcACmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreDataRetrievalFailure(underlyingError:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO28appStoreDataRetrievalFailureyACs0C0_pSg_tcACmF">appStoreDataRetrievalFailure(underlyingError:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Error retrieving App Store data as an error was returned.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="nf">appStoreDataRetrievalFailure</span><span class="p">(</span><span class="nv">underlyingError</span><span class="p">:</span> <span class="kt">Error</span><span class="p">?)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO26appStoreJSONParsingFailureyACs0C0_p_tcACmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreJSONParsingFailure(underlyingError:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO26appStoreJSONParsingFailureyACs0C0_p_tcACmF">appStoreJSONParsingFailure(underlyingError:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Error parsing App Store JSON data.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="nf">appStoreJSONParsingFailure</span><span class="p">(</span><span class="nv">underlyingError</span><span class="p">:</span> <span class="kt">Error</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO28appStoreOSVersionUnsupportedyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreOSVersionUnsupported" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO28appStoreOSVersionUnsupportedyA2CmF">appStoreOSVersionUnsupported</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The version of iOS on the device is lower than that of the one required by the app version update.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">appStoreOSVersionUnsupported</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO27appStoreVersionArrayFailureyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appStoreVersionArrayFailure" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO27appStoreVersionArrayFailureyA2CmF">appStoreVersionArrayFailure</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Error retrieving App Store verson number as the JSON does not contain a <code>version</code> key.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">appStoreVersionArrayFailure</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO25currentVersionReleaseDateyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/currentVersionReleaseDate" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO25currentVersionReleaseDateyA2CmF">currentVersionReleaseDate</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The <code>currentVersionReleaseDate</code> key is missing in the JSON payload. Please leave an issue on <a href="https://github.com/ArtSabintsev/Siren">https://github.com/ArtSabintsev/Siren</a> with as many details as possible.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">currentVersionReleaseDate</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO12malformedURLyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/malformedURL" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO12malformedURLyA2CmF">malformedURL</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>One of the iTunes URLs used in Siren is malformed. Please leave an issue on <a href="https://github.com/ArtSabintsev/Siren">https://github.com/ArtSabintsev/Siren</a> with as many details as possible.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">malformedURL</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO15missingBundleIDyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/missingBundleID" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO15missingBundleIDyA2CmF">missingBundleID</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Please make sure that you have set a <code>Bundle Identifier</code> in your project.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">missingBundleID</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO17noUpdateAvailableyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/noUpdateAvailable" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO17noUpdateAvailableyA2CmF">noUpdateAvailable</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>No new update available.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">noUpdateAvailable</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO16recentlyPromptedyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/recentlyPrompted" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO16recentlyPromptedyA2CmF">recentlyPrompted</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Siren will not present an update alert if it performed one too recently. If you would like to present an alert every time Siren is called, please consider setting the <code>UpdatePromptFrequency.immediately</code> rule in <code><a href="../Structs/RulesManager.html">RulesManager</a></code></p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">recentlyPrompted</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO15releasedTooSoonyACSi_SitcACmF"></a>
|
||||
<a name="//apple_ref/swift/Element/releasedTooSoon(daysSinceRelease:releasedForDays:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO15releasedTooSoonyACSi_SitcACmF">releasedTooSoon(daysSinceRelease:releasedForDays:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The app has been released for X days, but Siren cannot prompt the user until Y (where Y > X) days have passed.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="nf">releasedTooSoon</span><span class="p">(</span><span class="nv">daysSinceRelease</span><span class="p">:</span> <span class="kt">Int</span><span class="p">,</span> <span class="nv">releasedForDays</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO17skipVersionUpdateyACSS_SStcACmF"></a>
|
||||
<a name="//apple_ref/swift/Element/skipVersionUpdate(installedVersion:appStoreVersion:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO17skipVersionUpdateyACSS_SStcACmF">skipVersionUpdate(installedVersion:appStoreVersion:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The user has opted to skip updating their current version of the app to the current App Store version.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="nf">skipVersionUpdate</span><span class="p">(</span><span class="nv">installedVersion</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">appStoreVersion</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10KnownErrorO20localizedDescriptionSSvp"></a>
|
||||
<a name="//apple_ref/swift/Property/localizedDescription" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10KnownErrorO20localizedDescriptionSSvp">localizedDescription</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The localized description for each error handled by Siren.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">localizedDescription</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-09-15)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.11.0</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,186 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>PerformCheck 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/PerformCheck" class="dashAnchor"></a>
|
||||
<a title="PerformCheck Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
PerformCheck 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>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>PerformCheck</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">PerformCheck</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>The type of check to perform when Siren’s <code>wail</code> method is performed.</p>
|
||||
<div class="aside aside-note">
|
||||
<p class="aside-title">Note</p>
|
||||
Alert presentation will still respct the settings that are set
|
||||
for <code>UpdatePromptFrequency</code> and <code>showAlertAfterCurrentVersionHasBeenReleasedForDays</code>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren12PerformCheckO8onDemandyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/onDemand" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren12PerformCheckO8onDemandyA2CmF">onDemand</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Performs a version check only when Siren’s <code>wail</code> method is called,
|
||||
as the <code>UIApplication.didBecomeActiveNotification</code> is ignored.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">onDemand</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren12PerformCheckO12onForegroundyA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/onForeground" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren12PerformCheckO12onForegroundyA2CmF">onForeground</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>(DEFAULT) Perform a version check whenever the app enters the foreground.
|
||||
This value must be set when Siren’s <code>wail</code> method is called to enable the
|
||||
<code>UIApplication.didBecomeActiveNotification</code> observer.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">onForeground</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-09-15)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.11.0</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,262 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>UpdateType Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/UpdateType" class="dashAnchor"></a>
|
||||
<a title="UpdateType Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
UpdateType Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren/VersionCheckType.html">– VersionCheckType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren/LanguageType.html">– LanguageType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/UpdateType.html">UpdateType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>UpdateType</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">UpdateType</span> <span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>MARK - Siren UpdateType
|
||||
<code>UpdateType</code> defines what kind of update is available.
|
||||
It is used as parameter if user wants to use
|
||||
custom alert to inform the user about an update.</p>
|
||||
|
||||
<ul>
|
||||
<li>major: Major release available: A.b.c.d</li>
|
||||
<li>minor: Minor release available: a.B.c.d</li>
|
||||
<li>patch: Patch release available: a.b.C.d</li>
|
||||
<li>revision: Revision release available: a.b.c.D</li>
|
||||
<li>unknown: No information available about the update.</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10UpdateTypeO5majorA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/major" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10UpdateTypeO5majorA2CmF">major</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Major release available: A.b.c.d</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">major</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10UpdateTypeO5minorA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/minor" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10UpdateTypeO5minorA2CmF">minor</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Minor release available: a.B.c.d</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">minor</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10UpdateTypeO5patchA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/patch" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10UpdateTypeO5patchA2CmF">patch</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Patch release available: a.b.C.d</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">patch</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10UpdateTypeO8revisionA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/revision" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10UpdateTypeO8revisionA2CmF">revision</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Revision release available: a.b.c.D</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">revision</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10UpdateTypeO7unknownA2CmF"></a>
|
||||
<a name="//apple_ref/swift/Element/unknown" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10UpdateTypeO7unknownA2CmF">unknown</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>No information available about the update.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">unknown</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-17)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
Vendored
+278
@@ -0,0 +1,278 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Extensions Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="js/jquery.min.js" defer></script>
|
||||
<script src="js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Section/Extensions" class="dashAnchor"></a>
|
||||
<a title="Extensions Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="index.html">Siren Reference</a>
|
||||
<img id="carat" src="img/carat.png" />
|
||||
Extensions Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Extensions</h1>
|
||||
<p>The following extensions are available globally.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/c:objc(cs)NSBundle"></a>
|
||||
<a name="//apple_ref/swift/Extension/Bundle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/c:objc(cs)NSBundle">Bundle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
|
||||
<a href="Extensions/Bundle.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">Bundle</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:10Foundation4DateV"></a>
|
||||
<a name="//apple_ref/swift/Extension/Date" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:10Foundation4DateV">Date</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
|
||||
<a href="Extensions/Date.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Date</span> <span class="p">:</span> <span class="kt">ReferenceConvertible</span><span class="p">,</span> <span class="kt">Comparable</span><span class="p">,</span> <span class="kt">Equatable</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/c:objc(cs)UIAlertController"></a>
|
||||
<a name="//apple_ref/swift/Extension/UIAlertController" class="dashAnchor"></a>
|
||||
<a class="token" href="#/c:objc(cs)UIAlertController">UIAlertController</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
|
||||
<a href="Extensions/UIAlertController.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">UIAlertController</span> <span class="p">:</span> <span class="kt">UIViewController</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/c:objc(cs)NSUserDefaults"></a>
|
||||
<a name="//apple_ref/swift/Extension/UserDefaults" class="dashAnchor"></a>
|
||||
<a class="token" href="#/c:objc(cs)NSUserDefaults">UserDefaults</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
|
||||
<a href="Extensions/UserDefaults.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">UserDefaults</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,439 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Bundle Extension Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Extension/Bundle" class="dashAnchor"></a>
|
||||
<a title="Bundle Extension Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
Bundle Extension Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Bundle</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">Bundle</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV"></a>
|
||||
<a name="//apple_ref/swift/Struct/Constants" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV">Constants</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constants used in the <code>Bundle</code> extension.</p>
|
||||
|
||||
<a href="../Extensions/Bundle/Constants.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Constants</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE7versionSSSgyFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/version()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE7versionSSSgyFZ">version()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Fetches the current verison of the app.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">version</span><span class="p">()</span> <span class="o">-></span> <span class="kt">String</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The current installed version of the app.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE15localizedString6forKey20andForceLocalizationS2S_AC0I0V8LanguageOSgtFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/localizedString(forKey:andForceLocalization:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE15localizedString6forKey20andForceLocalizationS2S_AC0I0V8LanguageOSgtFZ">localizedString(forKey:andForceLocalization:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Returns the localized string for a given default string.</p>
|
||||
|
||||
<p>By default, the English language localization is used.
|
||||
If the device’s localization is set to another locale, that local’s language is used if it’s supported by Siren.
|
||||
If <code>forcedLanguage</code> is set to <code>true</code>, the chosen language is shown for all devices, irrespective of their device’s localization.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">localizedString</span><span class="p">(</span><span class="n">forKey</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="n">andForceLocalization</span> <span class="nv">forcedLanguage</span><span class="p">:</span> <span class="kt"><a href="../Structs/Localization.html">Localization</a></span><span class="o">.</span><span class="kt">Language</span><span class="p">?)</span> <span class="o">-></span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>key</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The default string used to search the localization table for a specific translation.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>forcedLanguage</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>Returns</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The localized string for a given key.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE19bestMatchingAppNameSSyFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/bestMatchingAppName()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE19bestMatchingAppNameSSyFZ">bestMatchingAppName()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The appropriate name for the app to be displayed in the update alert.</p>
|
||||
|
||||
<p>Siren checks <code>CFBundleDisplayName</code> first. It then falls back to
|
||||
to <code>kCFBundleNameKey</code> and ultimately to an empty string
|
||||
if the aforementioned values are nil.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">bestMatchingAppName</span><span class="p">()</span> <span class="o">-></span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The name of the app.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE15sirenBundlePath33_9C775CF4CEC7A5F21E625F58C71BDF22LLSSSgyFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenBundlePath()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE15sirenBundlePath33_9C775CF4CEC7A5F21E625F58C71BDF22LLSSSgyFZ">sirenBundlePath()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The path to Siren’s localization <code>Bundle</code>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">sirenBundlePath</span><span class="p">()</span> <span class="o">-></span> <span class="kt">String</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The bundle’s path or <code>nil</code>.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE21sirenForcedBundlePath33_9C775CF4CEC7A5F21E625F58C71BDF22LL25forceLanguageLocalizationSSSgAC0R0V0Q0O_tFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenForcedBundlePath(forceLanguageLocalization:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE21sirenForcedBundlePath33_9C775CF4CEC7A5F21E625F58C71BDF22LL25forceLanguageLocalizationSSSgAC0R0V0Q0O_tFZ">sirenForcedBundlePath(forceLanguageLocalization:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The path for a particular language localizationin Siren’s localization <code>Bundle</code>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">sirenForcedBundlePath</span><span class="p">(</span><span class="nv">forceLanguageLocalization</span><span class="p">:</span> <span class="kt"><a href="../Structs/Localization.html">Localization</a></span><span class="o">.</span><span class="kt">Language</span><span class="p">)</span> <span class="o">-></span> <span class="kt">String</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>forceLanguageLocalization</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The language localization that should be searched for in Siren’s localization <code>bundle</code>.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The path to the forced language localization.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE14deviceLanguage33_9C775CF4CEC7A5F21E625F58C71BDF22LLAC12LocalizationV0D0OSgyFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/deviceLanguage()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE14deviceLanguage33_9C775CF4CEC7A5F21E625F58C71BDF22LLAC12LocalizationV0D0OSgyFZ">deviceLanguage()</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The user’s preferred language based on their device’s localization.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">deviceLanguage</span><span class="p">()</span> <span class="o">-></span> <span class="kt"><a href="../Structs/Localization.html">Localization</a></span><span class="o">.</span><span class="kt">Language</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The user’s preferred language.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,326 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Constants Structure Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../../js/jquery.min.js" defer></script>
|
||||
<script src="../../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Struct/Constants" class="dashAnchor"></a>
|
||||
<a title="Constants Structure Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
Constants Structure Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Constants</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Constants</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Constants used in the <code>Bundle</code> extension.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV15bundleExtensionSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/bundleExtension" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV15bundleExtensionSSvpZ">bundleExtension</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for the <code>.bundle</code> file extension.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">bundleExtension</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV11displayNameSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/displayName" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV11displayNameSSvpZ">displayName</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for <code>CFBundleDisplayName</code>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">displayName</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV19englishLocalizationSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/englishLocalization" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV19englishLocalizationSSvpZ">englishLocalization</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for the default US English localization.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">englishLocalization</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV16projectExtensionSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/projectExtension" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV16projectExtensionSSvpZ">projectExtension</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for the project file extension.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">projectExtension</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV18shortVersionStringSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/shortVersionString" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV18shortVersionStringSSvpZ">shortVersionString</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for <code>CFBundleShortVersionString</code>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">shortVersionString</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So8NSBundleC5SirenE9ConstantsV5tableSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/table" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So8NSBundleC5SirenE9ConstantsV5tableSSvpZ">table</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for the localization table.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">table</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,263 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Date Extension Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Extension/Date" class="dashAnchor"></a>
|
||||
<a title="Date Extension Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
Date Extension Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Date</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Date</span> <span class="p">:</span> <span class="kt">ReferenceConvertible</span><span class="p">,</span> <span class="kt">Comparable</span><span class="p">,</span> <span class="kt">Equatable</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:10Foundation4DateV5SirenE4days5sinceSiAC_tFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/days(since:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:10Foundation4DateV5SirenE4days5sinceSiAC_tFZ">days(since:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The amount of days passed from a specific source date.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">days</span><span class="p">(</span><span class="n">since</span> <span class="nv">date</span><span class="p">:</span> <span class="kt">Date</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Int</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>date</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The source date.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The amount of days passed since the source date.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:10Foundation4DateV5SirenE4days5sinceSiSgSS_tFZ"></a>
|
||||
<a name="//apple_ref/swift/Method/days(since:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:10Foundation4DateV5SirenE4days5sinceSiSgSS_tFZ">days(since:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The amount of days passed from a specific source date string.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">days</span><span class="p">(</span><span class="n">since</span> <span class="nv">dateString</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Int</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>dateString</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The source date string.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Return Value</h4>
|
||||
<p>The amount of days passed since the source date.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,255 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>UIAlertController Extension Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Extension/UIAlertController" class="dashAnchor"></a>
|
||||
<a title="UIAlertController Extension Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
UIAlertController Extension Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>UIAlertController</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">UIAlertController</span> <span class="p">:</span> <span class="kt">UIViewController</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So17UIAlertControllerC5SirenE4show6windowySo8UIWindowC_tF"></a>
|
||||
<a name="//apple_ref/swift/Method/show(window:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So17UIAlertControllerC5SirenE4show6windowySo8UIWindowC_tF">show(window:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Presents Siren’s <code>UIAlertController</code> in a new <code>UIWindow</code>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">show</span><span class="p">(</span><span class="nv">window</span><span class="p">:</span> <span class="kt">UIWindow</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>window</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The <code>UIWindow</code> that <em>should</em> reference Siren’s <code>UIAlertController</code>.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So17UIAlertControllerC5SirenE4hide6windowySo8UIWindowC_tF"></a>
|
||||
<a name="//apple_ref/swift/Method/hide(window:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So17UIAlertControllerC5SirenE4hide6windowySo8UIWindowC_tF">hide(window:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Hides Siren’s <code>UIAlertController</code> within a given window.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">hide</span><span class="p">(</span><span class="nv">window</span><span class="p">:</span> <span class="kt">UIWindow</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>window</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The <code>UIWindow</code> that references Siren’s <code>UIAlertController</code>.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,245 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>UserDefaults Extension Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../js/jquery.min.js" defer></script>
|
||||
<script src="../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Extension/UserDefaults" class="dashAnchor"></a>
|
||||
<a title="UserDefaults Extension Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
UserDefaults Extension Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>UserDefaults</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">UserDefaults</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO"></a>
|
||||
<a name="//apple_ref/swift/Enum/SirenKeys" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO">SirenKeys</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Siren-specific <code>UserDefaults</code> Keys</p>
|
||||
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">enum</span> <span class="kt">SirenKeys</span> <span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE20storedSkippedVersionSSSgvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/storedSkippedVersion" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE20storedSkippedVersionSSSgvpZ">storedSkippedVersion</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Sets and Gets a <code>UserDefault</code> around storing a version that the user wants to skip updating.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">var</span> <span class="nv">storedSkippedVersion</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE21alertPresentationDate10Foundation0F0VSgvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/alertPresentationDate" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE21alertPresentationDate10Foundation0F0VSgvpZ">alertPresentationDate</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Sets and Gets a <code>UserDefault</code> around the last time the user was presented a version update alert.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">var</span> <span class="nv">alertPresentationDate</span><span class="p">:</span> <span class="kt">Date</span><span class="p">?</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,246 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>SirenKeys Enumeration Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../../js/jquery.min.js" defer></script>
|
||||
<script src="../../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Enum/SirenKeys" class="dashAnchor"></a>
|
||||
<a title="SirenKeys Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
SirenKeys Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>SirenKeys</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">enum</span> <span class="kt">SirenKeys</span> <span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Siren-specific <code>UserDefaults</code> Keys</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO37PerformVersionCheckOnSubsequentLaunchyA2FmF"></a>
|
||||
<a name="//apple_ref/swift/Element/PerformVersionCheckOnSubsequentLaunch" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO37PerformVersionCheckOnSubsequentLaunchyA2FmF">PerformVersionCheckOnSubsequentLaunch</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Key that notifies Siren to perform a version check and present
|
||||
the Siren alert the next time the user launches the app.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="kt">PerformVersionCheckOnSubsequentLaunch</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO22StoredVersionCheckDateyA2FmF"></a>
|
||||
<a name="//apple_ref/swift/Element/StoredVersionCheckDate" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO22StoredVersionCheckDateyA2FmF">StoredVersionCheckDate</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Key that stores the timestamp of the last version check.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="kt">StoredVersionCheckDate</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO20StoredSkippedVersionyA2FmF"></a>
|
||||
<a name="//apple_ref/swift/Element/StoredSkippedVersion" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:So14NSUserDefaultsC5SirenE0C4Keys33_0884631E60E090AA276701A736B793BBLLO20StoredSkippedVersionyA2FmF">StoredSkippedVersion</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Key that stores the version that a user decided to skip.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="kt">StoredSkippedVersion</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
Vendored
+47
-19
@@ -10,6 +10,7 @@
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Section/Protocols" class="dashAnchor"></a>
|
||||
<a title="Protocols Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
@@ -34,20 +35,6 @@
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Enums.html">Enums</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/SirenAlertType.html">SirenAlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/SirenLanguageType.html">SirenLanguageType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/SirenVersionCheckType.html">SirenVersionCheckType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
@@ -56,6 +43,47 @@
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Constants.html">Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Constants/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Constants/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Constants/VersionCheckFrequency.html">– VersionCheckFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
@@ -78,9 +106,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">
|
||||
@@ -96,7 +124,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>
|
||||
@@ -108,8 +136,8 @@
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2017 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2017-03-04)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.4</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
<p>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-18)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
+242
-137
@@ -35,20 +35,6 @@
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enums</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenAlertType.html">SirenAlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenLanguageType.html">SirenLanguageType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/SirenVersionCheckType.html">SirenVersionCheckType</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
@@ -57,6 +43,47 @@
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants.html">Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants/VersionCheckFrequency.html">– VersionCheckFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
@@ -65,7 +92,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>
|
||||
@@ -78,9 +105,9 @@
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:FP5Siren13SirenDelegate24sirenDidShowUpdateDialogFT9alertTypeOS_14SirenAlertType_T_"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenDidShowUpdateDialog(alertType:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FP5Siren13SirenDelegate24sirenDidShowUpdateDialogFT9alertTypeOS_14SirenAlertType_T_">sirenDidShowUpdateDialog(alertType:)</a>
|
||||
<a name="/s:5Siren0A8DelegateP36sirenDidDetectNewVersionWithoutAlertySS5title_SS7messageAA9ConstantsV10UpdateTypeO06updateN0tF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenDidDetectNewVersionWithoutAlert(title:message:updateType:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP36sirenDidDetectNewVersionWithoutAlertySS5title_SS7messageAA9ConstantsV10UpdateTypeO06updateN0tF">sirenDidDetectNewVersionWithoutAlert(title:message:updateType:)</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
@@ -91,7 +118,7 @@
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>User presented with update dialog</p>
|
||||
<p>Siren performed a version check and did not display an alert.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
@@ -102,7 +129,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="../Enums/SirenAlertType.html">SirenAlertType</a></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">title</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">updateType</span><span class="p">:</span> <span class="kt"><a href="../Structs/Constants.html">Constants</a></span><span class="o">.</span><span class="kt">UpdateType</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -112,111 +139,9 @@
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:FP5Siren13SirenDelegate26sirenUserDidLaunchAppStoreFT_T_"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenUserDidLaunchAppStore()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FP5Siren13SirenDelegate26sirenUserDidLaunchAppStoreFT_T_">sirenUserDidLaunchAppStore()</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>User did click on button that launched App Store.app</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">sirenUserDidLaunchAppStore</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:FP5Siren13SirenDelegate23sirenUserDidSkipVersionFT_T_"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenUserDidSkipVersion()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FP5Siren13SirenDelegate23sirenUserDidSkipVersionFT_T_">sirenUserDidSkipVersion()</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>User did click on button that skips version update</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">sirenUserDidSkipVersion</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:FP5Siren13SirenDelegate18sirenUserDidCancelFT_T_"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenUserDidCancel()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:FP5Siren13SirenDelegate18sirenUserDidCancelFT_T_">sirenUserDidCancel()</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>User did click on button that cancels update dialog</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">sirenUserDidCancel</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s: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
|
||||
@@ -227,7 +152,13 @@
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Siren failed to perform version check (may return system-level error)</p>
|
||||
<p>Siren failed to perform version check.</p>
|
||||
<div class="aside aside-note">
|
||||
<p class="aside-title">Note</p>
|
||||
Depending on the reason for failure,
|
||||
a system-level error may be returned.
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
@@ -238,7 +169,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>
|
||||
@@ -248,9 +179,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:5Siren0A8DelegateP24sirenDidShowUpdateDialogyAA9ConstantsV9AlertTypeO05alertJ0_tF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenDidShowUpdateDialog(alertType:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP24sirenDidShowUpdateDialogyAA9ConstantsV9AlertTypeO05alertJ0_tF">sirenDidShowUpdateDialog(alertType:)</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
@@ -261,7 +192,7 @@
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Siren performed version check and did not display alert</p>
|
||||
<p>User presented with an update dialog.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
@@ -272,19 +203,38 @@
|
||||
<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">sirenDidShowUpdateDialog</span><span class="p">(</span><span class="nv">alertType</span><span class="p">:</span> <span class="kt"><a href="../Structs/Constants.html">Constants</a></span><span class="o">.</span><span class="kt">AlertType</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>alertType</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The type of alert that was presented.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s: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
|
||||
@@ -295,7 +245,7 @@
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Siren performed version check and latest version is installed</p>
|
||||
<p>Siren performed a version check and the latest version was already installed.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
@@ -306,7 +256,162 @@
|
||||
<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>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP50sirenNetworkCallDidReturnWithNewVersionInformationyAA11LookupModelV06lookupM0_tF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenNetworkCallDidReturnWithNewVersionInformation(lookupModel:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP50sirenNetworkCallDidReturnWithNewVersionInformationyAA11LookupModelV06lookupM0_tF">sirenNetworkCallDidReturnWithNewVersionInformation(lookupModel:)</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Provides the decoded JSON information from a successful version check call.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenNetworkCallDidReturnWithNewVersionInformation</span><span class="p">(</span><span class="nv">lookupModel</span><span class="p">:</span> <span class="kt"><a href="../Structs/LookupModel.html">LookupModel</a></span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>lookupModel</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The <code>Decodable</code> model representing the JSON results from the iTunes Lookup API.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP18sirenUserDidCancelyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenUserDidCancel()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP18sirenUserDidCancelyyF">sirenUserDidCancel()</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>User did click on button that cancels update dialog.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidCancel</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP26sirenUserDidLaunchAppStoreyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenUserDidLaunchAppStore()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP26sirenUserDidLaunchAppStoreyyF">sirenUserDidLaunchAppStore()</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>User did click on button that launched <q>App Store.app</q>.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidLaunchAppStore</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren0A8DelegateP23sirenUserDidSkipVersionyyF"></a>
|
||||
<a name="//apple_ref/swift/Method/sirenUserDidSkipVersion()" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren0A8DelegateP23sirenUserDidSkipVersionyyF">sirenUserDidSkipVersion()</a>
|
||||
</code>
|
||||
<span class="declaration-note">
|
||||
Default implementation
|
||||
</span>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>User did click on button that skips version update.</p>
|
||||
|
||||
</div>
|
||||
<h4>Default Implementation</h4>
|
||||
<div class="default_impl abstract">
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sirenUserDidSkipVersion</span><span class="p">()</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -318,8 +423,8 @@
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2017 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2017-03-04)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.7.4</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
<p>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-18)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
Vendored
+370
@@ -0,0 +1,370 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Structures Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="js/jquery.min.js" defer></script>
|
||||
<script src="js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Section/Structures" class="dashAnchor"></a>
|
||||
<a title="Structures Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="index.html">Siren Reference</a>
|
||||
<img id="carat" src="img/carat.png" />
|
||||
Structures Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Structures</h1>
|
||||
<p>The following structures are available globally.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10APIManagerV"></a>
|
||||
<a name="//apple_ref/swift/Struct/APIManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10APIManagerV">APIManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>APIManager for Siren</p>
|
||||
|
||||
<a href="Structs/APIManager.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">APIManager</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren19PresentationManagerV"></a>
|
||||
<a name="//apple_ref/swift/Struct/PresentationManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren19PresentationManagerV">PresentationManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>PresentationManager for Siren</p>
|
||||
|
||||
<a href="Structs/PresentationManager.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PresentationManager</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren12RulesManagerV"></a>
|
||||
<a name="//apple_ref/swift/Struct/RulesManager" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren12RulesManagerV">RulesManager</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>RulesManager for Siren</p>
|
||||
|
||||
<a href="Structs/RulesManager.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">RulesManager</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren14AlertConstantsV"></a>
|
||||
<a name="//apple_ref/swift/Struct/AlertConstants" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertConstantsV">AlertConstants</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The default constants used for the update alert’s messaging.</p>
|
||||
|
||||
<a href="Structs/AlertConstants.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">AlertConstants</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren12LocalizationV"></a>
|
||||
<a name="//apple_ref/swift/Struct/Localization" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren12LocalizationV">Localization</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Localization information and strings for Siren.</p>
|
||||
|
||||
<a href="Structs/Localization.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Localization</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren5ModelV"></a>
|
||||
<a name="//apple_ref/swift/Struct/Model" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren5ModelV">Model</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The validated and unwrapped <code>APIModel</code>.
|
||||
This model is presented to the end user in Siren’s completion handler.</p>
|
||||
|
||||
<a href="Structs/Model.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">Model</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren5RulesV"></a>
|
||||
<a name="//apple_ref/swift/Struct/Rules" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren5RulesV">Rules</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Alert Presentation Rules for Siren.</p>
|
||||
|
||||
<a href="Structs/Rules.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Rules</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren13UpdateResultsV"></a>
|
||||
<a name="//apple_ref/swift/Struct/UpdateResults" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren13UpdateResultsV">UpdateResults</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The relevant metadata returned from Siren upon completing a successful version check.</p>
|
||||
|
||||
<a href="Structs/UpdateResults.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">UpdateResults</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-09-15)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.11.0</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,202 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>APIManager 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/APIManager" class="dashAnchor"></a>
|
||||
<a title="APIManager Structure Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
APIManager 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>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>APIManager</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">APIManager</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>APIManager for Siren</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10APIManagerV11countryCodeACSSSg_tcfc"></a>
|
||||
<a name="//apple_ref/swift/Method/init(countryCode:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10APIManagerV11countryCodeACSSSg_tcfc">init(countryCode:)</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Initializes <code>APIManager</code> to the region or country of an App Store in which the app is available.
|
||||
By default, all version check requests are performed against the US App Store.
|
||||
If the app is not available in the US App Store, set it to the identifier of at least one App Store region within which it is available.</p>
|
||||
|
||||
<p><a href="https://help.apple.com/app-store-connect/#/dev997f9cf7c">List of country codes</a></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="nv">countryCode</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">)</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Parameters</h4>
|
||||
<table class="graybox">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<code>
|
||||
<em>countryCode</em>
|
||||
</code>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<p>The country code for the App Store in which the app is availabe. Defaults to nil (e.g., the US App Store)</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10APIManagerV7defaultACvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/default" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10APIManagerV7defaultACvpZ">default</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The default <code>APIManager</code>.</p>
|
||||
|
||||
<p>The version check is performed against the US App Store.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">let</span> <span class="p">`</span><span class="nv">default</span><span class="p">`:</span> <span class="kt">APIManager</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-09-15)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.11.0</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,218 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Constants Structure Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../../js/jquery.min.js" defer></script>
|
||||
<script src="../../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Struct/Constants" class="dashAnchor"></a>
|
||||
<a title="Constants Structure Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
Constants Structure Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/UpdateResults.html">UpdateResults</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">private</span> <span class="kd">struct</span> <span class="kt">Constants</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Constants used in the <code><a href="../../Structs/APIManager.html">APIManager</a></code>.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren10APIManagerV9Constants33_8071139324B24E2065F4037045A8D960LLV8bundleIDSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/bundleID" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10APIManagerV9Constants33_8071139324B24E2065F4037045A8D960LLV8bundleIDSSvpZ">bundleID</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for the <code>bundleId</code> parameter in the iTunes Lookup API request.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">bundleID</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:5Siren10APIManagerV9Constants33_8071139324B24E2065F4037045A8D960LLV7countrySSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/country" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren10APIManagerV9Constants33_8071139324B24E2065F4037045A8D960LLV7countrySSvpZ">country</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Constant for the <code>country</code> parameter in the iTunes Lookup API request.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">country</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,247 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>APIModel 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/APIModel" class="dashAnchor"></a>
|
||||
<a title="APIModel Structure Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
APIModel Structure Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>APIModel</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">APIModel</span> <span class="p">:</span> <span class="kt">Decodable</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Model representing a selection of results from the iTunes Lookup API.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO"></a>
|
||||
<a name="//apple_ref/swift/Enum/CodingKeys" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO">CodingKeys</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Codable Coding Keys for the Top-Level iTunes Lookup API JSON response.</p>
|
||||
|
||||
<a href="../Structs/APIModel/CodingKeys.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">enum</span> <span class="kt">CodingKeys</span> <span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="kt">CodingKey</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV7resultsSayAC7ResultsVGvp"></a>
|
||||
<a name="//apple_ref/swift/Property/results" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7resultsSayAC7ResultsVGvp">results</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The array of results objects from the iTunes Lookup API.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">results</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/APIModel/Results.html">Results</a></span><span class="p">]</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV7ResultsV"></a>
|
||||
<a name="//apple_ref/swift/Struct/Results" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV">Results</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The Results object from the the iTunes Lookup API.</p>
|
||||
|
||||
<a href="../Structs/APIModel/Results.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Results</span> <span class="p">:</span> <span class="kt">Decodable</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,191 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>CodingKeys 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/CodingKeys" class="dashAnchor"></a>
|
||||
<a title="CodingKeys Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
CodingKeys Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>CodingKeys</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">enum</span> <span class="kt">CodingKeys</span> <span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="kt">CodingKey</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Codable Coding Keys for the Top-Level iTunes Lookup API JSON response.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO7resultsyA2FmF"></a>
|
||||
<a name="//apple_ref/swift/Element/results" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO7resultsyA2FmF">results</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The results JSON key.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">results</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,327 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Results 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/Results" class="dashAnchor"></a>
|
||||
<a title="Results Structure Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
Results Structure Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>Results</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">Results</span> <span class="p">:</span> <span class="kt">Decodable</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>The Results object from the the iTunes Lookup API.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO"></a>
|
||||
<a name="//apple_ref/swift/Enum/CodingKeys" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO">CodingKeys</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>Codable Coding Keys for the Results array in the iTunes Lookup API JSON response.</p>
|
||||
|
||||
<a href="../../Structs/APIModel/Results/CodingKeys.html" class="slightly-smaller">See more</a>
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">enum</span> <span class="kt">CodingKeys</span> <span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="kt">CodingKey</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV7ResultsV5appIDSivp"></a>
|
||||
<a name="//apple_ref/swift/Property/appID" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV5appIDSivp">appID</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The app’s App ID.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">appID</span><span class="p">:</span> <span class="kt">Int</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV7ResultsV25currentVersionReleaseDateSSvp"></a>
|
||||
<a name="//apple_ref/swift/Property/currentVersionReleaseDate" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV25currentVersionReleaseDateSSvp">currentVersionReleaseDate</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The release date for the latest verison of the app.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">currentVersionReleaseDate</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:5Siren8APIModelV7ResultsV16minimumOSVersionSSvp"></a>
|
||||
<a name="//apple_ref/swift/Property/minimumOSVersion" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV16minimumOSVersionSSvp">minimumOSVersion</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The minimum verison of iOS that the current verison of the app requires.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">minimumOSVersion</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:5Siren8APIModelV7ResultsV12releaseNotesSSSgvp"></a>
|
||||
<a name="//apple_ref/swift/Property/releaseNotes" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV12releaseNotesSSSgvp">releaseNotes</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The releases notes from the latest version of the app.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">releaseNotes</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV7ResultsV7versionSSvp"></a>
|
||||
<a name="//apple_ref/swift/Property/version" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV7versionSSvp">version</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The latest version of the app.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">version</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,299 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>CodingKeys 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/CodingKeys" class="dashAnchor"></a>
|
||||
<a title="CodingKeys Enumeration Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../../img/carat.png" />
|
||||
CodingKeys Enumeration Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Classes/SirenViewController.html">SirenViewController</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../../Extensions.html">Extensions</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Extensions/Bundle.html">Bundle</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Extensions/Bundle/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Extensions/Date.html">Date</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Extensions/UIAlertController.html">UIAlertController</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Extensions/UserDefaults.html">UserDefaults</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Extensions/UserDefaults/SirenKeys.html">– SirenKeys</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/APIManager/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/APIModel.html">APIModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/APIModel/CodingKeys.html">– CodingKeys</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/APIModel/Results.html">– Results</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/DataParser.html">DataParser</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>CodingKeys</h1>
|
||||
<div class="declaration">
|
||||
<div class="language">
|
||||
<pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">enum</span> <span class="kt">CodingKeys</span> <span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="kt">CodingKey</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>Codable Coding Keys for the Results array in the iTunes Lookup API JSON response.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO5appIDyA2HmF"></a>
|
||||
<a name="//apple_ref/swift/Element/appID" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO5appIDyA2HmF">appID</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The appID JSON key.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">appID</span> <span class="o">=</span> <span class="s">"trackId"</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO25currentVersionReleaseDateyA2HmF"></a>
|
||||
<a name="//apple_ref/swift/Element/currentVersionReleaseDate" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO25currentVersionReleaseDateyA2HmF">currentVersionReleaseDate</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The current version release date JSON key.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">currentVersionReleaseDate</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO16minimumOSVersionyA2HmF"></a>
|
||||
<a name="//apple_ref/swift/Element/minimumOSVersion" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO16minimumOSVersionyA2HmF">minimumOSVersion</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The minimum device iOS version compatibility JSON key.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">minimumOSVersion</span> <span class="o">=</span> <span class="s">"minimumOsVersion"</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO12releaseNotesyA2HmF"></a>
|
||||
<a name="//apple_ref/swift/Element/releaseNotes" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO12releaseNotesyA2HmF">releaseNotes</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The release notes JSON key.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">releaseNotes</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO7versionyA2HmF"></a>
|
||||
<a name="//apple_ref/swift/Element/version" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren8APIModelV7ResultsV10CodingKeys33_36C7527D28702FA956B420860C285DA0LLO7versionyA2HmF">version</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The current App Store version JSON key.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="k">case</span> <span class="n">version</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-05-14)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,258 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>AlertConstants 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/AlertConstants" class="dashAnchor"></a>
|
||||
<a title="AlertConstants Structure Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
AlertConstants 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>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Enums.html">Enumerations</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/AlertAction.html">AlertAction</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/KnownError.html">KnownError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Enums/PerformCheck.html">PerformCheck</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/APIManager.html">APIManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertConstants.html">AlertConstants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Model.html">Model</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/PresentationManager.html">PresentationManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules.html">Rules</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Rules/UpdatePromptFrequency.html">– UpdatePromptFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager.html">RulesManager</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/RulesManager/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/UpdateResults.html">UpdateResults</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>AlertConstants</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">AlertConstants</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>The default constants used for the update alert’s messaging.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren14AlertConstantsV12alertMessageSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/alertMessage" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertConstantsV12alertMessageSSvpZ">alertMessage</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The text that conveys the message that there is an app update available</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">alertMessage</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:5Siren14AlertConstantsV10alertTitleSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/alertTitle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertConstantsV10alertTitleSSvpZ">alertTitle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The alert title which defaults to <em>Update Available</em>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">alertTitle</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:5Siren14AlertConstantsV19nextTimeButtonTitleSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/nextTimeButtonTitle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertConstantsV19nextTimeButtonTitleSSvpZ">nextTimeButtonTitle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The button text that conveys the message that the user should be prompted to update next time the app launches.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">nextTimeButtonTitle</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:5Siren14AlertConstantsV15skipButtonTitleSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/skipButtonTitle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertConstantsV15skipButtonTitleSSvpZ">skipButtonTitle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The text that conveys the message that the the user wants to skip this version update.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">skipButtonTitle</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:5Siren14AlertConstantsV17updateButtonTitleSSvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/updateButtonTitle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertConstantsV17updateButtonTitleSSvpZ">updateButtonTitle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The button text that conveys the message that the user would like to update the app right away.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">updateButtonTitle</span><span class="p">:</span> <span class="kt">String</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2019 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev</a>. All rights reserved. (Last updated: 2019-09-15)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.11.0</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,250 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>AlertMessaging 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/AlertMessaging" class="dashAnchor"></a>
|
||||
<a title="AlertMessaging Structure Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../img/carat.png" />
|
||||
AlertMessaging 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>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants.html">Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Constants/VersionCheckFrequency.html">– VersionCheckFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>AlertMessaging</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">AlertMessaging</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 <code>SirenAlertMessaging</code> 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:5Siren14AlertMessagingV9ConstantsV"></a>
|
||||
<a name="//apple_ref/swift/Struct/Constants" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertMessagingV9ConstantsV">Constants</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The default constants used for the alert messaging.</p>
|
||||
|
||||
<a href="../Structs/AlertMessaging/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:5Siren14AlertMessagingVACSo18NSAttributedStringC11updateTitle_AE0F7MessageAE0f6ButtonH0AE08nextTimeiH0AE011skipVersioniH0tcfc"></a>
|
||||
<a name="//apple_ref/swift/Method/init(updateTitle:updateMessage:updateButtonMessage:nextTimeButtonMessage:skipVersionButtonMessage:)" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertMessagingVACSo18NSAttributedStringC11updateTitle_AE0F7MessageAE0f6ButtonH0AE08nextTimeiH0AE011skipVersioniH0tcfc">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">NSAttributedString</span> <span class="o">=</span> <span class="kt"><a href="../Structs/AlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">alertTitle</span><span class="p">,</span>
|
||||
<span class="n">updateMessage</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">NSAttributedString</span> <span class="o">=</span> <span class="kt"><a href="../Structs/AlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">alertMessage</span><span class="p">,</span>
|
||||
<span class="nv">updateButtonMessage</span><span class="p">:</span> <span class="kt">NSAttributedString</span> <span class="o">=</span> <span class="kt"><a href="../Structs/AlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">updateButtonTitle</span><span class="p">,</span>
|
||||
<span class="nv">nextTimeButtonMessage</span><span class="p">:</span> <span class="kt">NSAttributedString</span> <span class="o">=</span> <span class="kt"><a href="../Structs/AlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">nextTimeButtonTitle</span><span class="p">,</span>
|
||||
<span class="nv">skipVersionButtonMessage</span><span class="p">:</span> <span class="kt">NSAttributedString</span> <span class="o">=</span> <span class="kt"><a href="../Structs/AlertMessaging/Constants.html">Constants</a></span><span class="o">.</span><span class="n">skipButtonTitle</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>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-18)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,252 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Constants Structure Reference</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../css/jazzy.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../css/highlight.css" />
|
||||
<meta charset='utf-8'>
|
||||
<script src="../../js/jquery.min.js" defer></script>
|
||||
<script src="../../js/jazzy.js" defer></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<a name="//apple_ref/swift/Struct/Constants" class="dashAnchor"></a>
|
||||
<a title="Constants Structure Reference"></a>
|
||||
<header>
|
||||
<div class="content-wrapper">
|
||||
<p><a href="../../index.html">Siren Docs</a> (100% documented)</p>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrapper">
|
||||
<p id="breadcrumbs">
|
||||
<a href="../../index.html">Siren Reference</a>
|
||||
<img id="carat" src="../../img/carat.png" />
|
||||
Constants Structure Reference
|
||||
</p>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<nav class="sidebar">
|
||||
<ul class="nav-groups">
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Classes.html">Classes</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Classes/Siren.html">Siren</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Protocols.html">Protocols</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Protocols/SirenDelegate.html">SirenDelegate</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-group-name">
|
||||
<a href="../../Structs.html">Structures</a>
|
||||
<ul class="nav-group-tasks">
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertMessaging.html">AlertMessaging</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/AlertMessaging/Constants.html">– Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/CapturedError.html">CapturedError</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/CapturedError/Known.html">– Known</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Constants.html">Constants</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Constants/AlertType.html">– AlertType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Constants/UpdateType.html">– UpdateType</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Constants/VersionCheckFrequency.html">– VersionCheckFrequency</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization.html">Localization</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/Localization/Language.html">– Language</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel.html">LookupModel</a>
|
||||
</li>
|
||||
<li class="nav-group-task">
|
||||
<a href="../../Structs/LookupModel/Results.html">– Results</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<article class="main-content">
|
||||
<section>
|
||||
<section class="section">
|
||||
<h1>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>
|
||||
<p>The default constants used for the alert messaging.</p>
|
||||
|
||||
</section>
|
||||
<section class="section task-group-section">
|
||||
<div class="task-group">
|
||||
<ul>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren14AlertMessagingV9ConstantsV12alertMessageSo18NSAttributedStringCvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/alertMessage" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertMessagingV9ConstantsV12alertMessageSo18NSAttributedStringCvpZ">alertMessage</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The text that conveys the message that there is an app update available</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">alertMessage</span><span class="p">:</span> <span class="kt">NSAttributedString</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren14AlertMessagingV9ConstantsV10alertTitleSo18NSAttributedStringCvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/alertTitle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertMessagingV9ConstantsV10alertTitleSo18NSAttributedStringCvpZ">alertTitle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The alert title which defaults to <em>Update Available</em>.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">alertTitle</span><span class="p">:</span> <span class="kt">NSAttributedString</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren14AlertMessagingV9ConstantsV19nextTimeButtonTitleSo18NSAttributedStringCvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/nextTimeButtonTitle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertMessagingV9ConstantsV19nextTimeButtonTitleSo18NSAttributedStringCvpZ">nextTimeButtonTitle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The button text that conveys the message that the user should be prompted to update next time the app launches.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">nextTimeButtonTitle</span><span class="p">:</span> <span class="kt">NSAttributedString</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren14AlertMessagingV9ConstantsV15skipButtonTitleSo18NSAttributedStringCvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/skipButtonTitle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertMessagingV9ConstantsV15skipButtonTitleSo18NSAttributedStringCvpZ">skipButtonTitle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The text that conveys the message that the the user wants to skip this verison update.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">skipButtonTitle</span><span class="p">:</span> <span class="kt">NSAttributedString</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
<li class="item">
|
||||
<div>
|
||||
<code>
|
||||
<a name="/s:5Siren14AlertMessagingV9ConstantsV17updateButtonTitleSo18NSAttributedStringCvpZ"></a>
|
||||
<a name="//apple_ref/swift/Variable/updateButtonTitle" class="dashAnchor"></a>
|
||||
<a class="token" href="#/s:5Siren14AlertMessagingV9ConstantsV17updateButtonTitleSo18NSAttributedStringCvpZ">updateButtonTitle</a>
|
||||
</code>
|
||||
</div>
|
||||
<div class="height-container">
|
||||
<div class="pointer-container"></div>
|
||||
<section class="section">
|
||||
<div class="pointer"></div>
|
||||
<div class="abstract">
|
||||
<p>The button text that conveys the message that the user would like to update the app right away.</p>
|
||||
|
||||
</div>
|
||||
<div class="declaration">
|
||||
<h4>Declaration</h4>
|
||||
<div class="language">
|
||||
<p class="aside-title">Swift</p>
|
||||
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">updateButtonTitle</span><span class="p">:</span> <span class="kt">NSAttributedString</span></code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="footer">
|
||||
<p>© 2018 <a class="link" href="https://github.com/ArtSabintsev/Siren" target="_blank" rel="external">Arthur Ariel Sabintsev and Aaron Brager</a>. All rights reserved. (Last updated: 2018-11-18)</p>
|
||||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
</body>
|
||||
</div>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user