├── .github
└── workflows
│ └── test.yml
├── .gitignore
├── Build
├── Example-iOS.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── Example-iOS
├── Example-iOS.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── Example-iOS
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── AppIcon-AppStore.png
│ │ │ ├── AppIcon-Notification@2x.png
│ │ │ ├── AppIcon-Notification@3x.png
│ │ │ ├── AppIcon-Settings@2x.png
│ │ │ ├── AppIcon-Settings@3x.png
│ │ │ ├── AppIcon-Spotlight@2x.png
│ │ │ ├── AppIcon-Spotlight@3x.png
│ │ │ ├── AppIcon@2x.png
│ │ │ ├── AppIcon@3x.png
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ ├── SceneDelegate.swift
│ └── ViewController.swift
└── Example-iOSTests
│ ├── Example_iOSTests.swift
│ └── Info.plist
├── LICENSE
├── README.md
└── Support
└── ExportOptions.plist
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: "build-test"
2 | on: # rebuild any PRs and main branch changes
3 | pull_request:
4 | push:
5 | branches:
6 | - master
7 |
8 | jobs:
9 | build: # make sure build/ci work properly
10 | runs-on: macOS-latest
11 | timeout-minutes: 30
12 | steps:
13 | - uses: actions/checkout@v2
14 | - uses: Apple-Actions/import-codesign-certs@v1
15 | with:
16 | p12-file-base64: ${{ secrets.CERTIFICATES_FILE_BASE64 }}
17 | p12-password: ${{ secrets.CERTIFICATES_PASSWORD }}
18 | - uses: Apple-Actions/download-provisioning-profiles@v1
19 | with:
20 | bundle-id: codes.orj.Example-iOS
21 | issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
22 | api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
23 | api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
24 | - name: "#️⃣ Generate Build Number"
25 | id: buildnumber
26 | uses: einaregilsson/build-number@v2
27 | with:
28 | token: ${{ secrets.github_token }}
29 | - run: ./Build
30 | - uses: Apple-Actions/upload-testflight-build@master
31 | with:
32 | app-path: .build/Artifacts/Example-iOS.ipa/Example-iOS.ipa
33 | issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
34 | api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
35 | api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
36 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # MacOS
2 | .DS_Store
3 |
4 | # Xcode
5 | #
6 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
7 |
8 | ## User settings
9 | xcuserdata/
10 |
11 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
12 | *.xcscmblueprint
13 | *.xccheckout
14 |
15 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
16 | build/
17 | DerivedData/
18 | *.moved-aside
19 | *.pbxuser
20 | !default.pbxuser
21 | *.mode1v3
22 | !default.mode1v3
23 | *.mode2v3
24 | !default.mode2v3
25 | *.perspectivev3
26 | !default.perspectivev3
27 |
28 | ## Obj-C/Swift specific
29 | *.hmap
30 |
31 | ## App packaging
32 | *.ipa
33 | *.dSYM.zip
34 | *.dSYM
35 |
36 | ## Playgrounds
37 | timeline.xctimeline
38 | playground.xcworkspace
39 |
40 | # Swift Package Manager
41 | #
42 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
43 | # Packages/
44 | # Package.pins
45 | # Package.resolved
46 | # *.xcodeproj
47 | #
48 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
49 | # hence it is not needed unless you have added a package configuration file to your project
50 | # .swiftpm
51 |
52 | .build/
53 |
54 | # CocoaPods
55 | #
56 | # We recommend against adding the Pods directory to your .gitignore. However
57 | # you should judge for yourself, the pros and cons are mentioned at:
58 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
59 | #
60 | # Pods/
61 | #
62 | # Add this line if you want to avoid checking in source code from the Xcode workspace
63 | # *.xcworkspace
64 |
65 | # Carthage
66 | #
67 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
68 | # Carthage/Checkouts
69 |
70 | Carthage/Build/
71 |
72 | # Accio dependency management
73 | Dependencies/
74 | .accio/
75 |
76 | # fastlane
77 | #
78 | # It is recommended to not store the screenshots in the git repo.
79 | # Instead, use fastlane to re-generate the screenshots whenever they are needed.
80 | # For more information about the recommended setup visit:
81 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
82 |
83 | fastlane/report.xml
84 | fastlane/Preview.html
85 | fastlane/screenshots/**/*.png
86 | fastlane/test_output
87 |
88 | # Code Injection
89 | #
90 | # After new code Injection tools there's a generated folder /iOSInjectionProject
91 | # https://github.com/johnno1962/injectionforxcode
92 |
93 | iOSInjectionProject/
94 |
--------------------------------------------------------------------------------
/Build:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -xeu
4 | set -o pipefail
5 |
6 | function finish() {
7 | ditto -c -k --sequesterRsrc --keepParent "${RESULT_BUNDLE_PATH}" "${RESULT_BUNDLE_PATH}.zip"
8 | rm -rf "${RESULT_BUNDLE_PATH}"
9 | }
10 |
11 | trap finish EXIT
12 |
13 | SDK="${SDK:-iphoneos}"
14 | WORKSPACE="${WORKSPACE:-Example-iOS.xcworkspace}"
15 | SCHEME="${SCHEME:-Example-iOS}"
16 | CONFIGURATION=${CONFIGURATION:-Release}
17 |
18 | BUILD_DIR=${BUILD_DIR:-.build}
19 | ARTIFACT_PATH=${RESULT_PATH:-${BUILD_DIR}/Artifacts}
20 | RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult"
21 | ARCHIVE_PATH=${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive}
22 | DERIVED_DATA_PATH=${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData}
23 | CURRENT_PROJECT_VERSION=${BUILD_NUMBER:-0}
24 | EXPORT_OPTIONS_FILE="Support/ExportOptions.plist"
25 |
26 | rm -rf "${RESULT_BUNDLE_PATH}"
27 |
28 | xcrun xcodebuild \
29 | -workspace "${WORKSPACE}" \
30 | -scheme "${SCHEME}" \
31 | -configuration "${CONFIGURATION}" \
32 | -sdk "${SDK}" \
33 | -parallelizeTargets \
34 | -showBuildTimingSummary \
35 | -disableAutomaticPackageResolution \
36 | -derivedDataPath "${DERIVED_DATA_PATH}" \
37 | -archivePath "${ARCHIVE_PATH}" \
38 | -resultBundlePath "${RESULT_BUNDLE_PATH}" \
39 | CURRENT_PROJECT_VERSION="${CURRENT_PROJECT_VERSION}" \
40 | archive
41 |
42 | xcrun xcodebuild \
43 | -exportArchive \
44 | -exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \
45 | -archivePath "${ARCHIVE_PATH}" \
46 | -exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa"
47 |
48 | # Zip up the Xcode Archive into Artifacts folder.
49 | ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip"
50 |
--------------------------------------------------------------------------------
/Example-iOS.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example-iOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | A731AC8423E01F830090DE52 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A731AC8323E01F830090DE52 /* AppDelegate.swift */; };
11 | A731AC8623E01F830090DE52 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A731AC8523E01F830090DE52 /* SceneDelegate.swift */; };
12 | A731AC8823E01F830090DE52 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A731AC8723E01F830090DE52 /* ViewController.swift */; };
13 | A731AC8B23E01F830090DE52 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A731AC8923E01F830090DE52 /* Main.storyboard */; };
14 | A731AC8D23E01F850090DE52 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A731AC8C23E01F850090DE52 /* Assets.xcassets */; };
15 | A731AC9023E01F850090DE52 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A731AC8E23E01F850090DE52 /* LaunchScreen.storyboard */; };
16 | A731AC9B23E01F850090DE52 /* Example_iOSTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A731AC9A23E01F850090DE52 /* Example_iOSTests.swift */; };
17 | /* End PBXBuildFile section */
18 |
19 | /* Begin PBXContainerItemProxy section */
20 | A731AC9723E01F850090DE52 /* PBXContainerItemProxy */ = {
21 | isa = PBXContainerItemProxy;
22 | containerPortal = A731AC7823E01F830090DE52 /* Project object */;
23 | proxyType = 1;
24 | remoteGlobalIDString = A731AC7F23E01F830090DE52;
25 | remoteInfo = "Example iOS";
26 | };
27 | /* End PBXContainerItemProxy section */
28 |
29 | /* Begin PBXFileReference section */
30 | A731AC8023E01F830090DE52 /* Example-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Example-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
31 | A731AC8323E01F830090DE52 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
32 | A731AC8523E01F830090DE52 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
33 | A731AC8723E01F830090DE52 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
34 | A731AC8A23E01F830090DE52 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
35 | A731AC8C23E01F850090DE52 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
36 | A731AC8F23E01F850090DE52 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
37 | A731AC9123E01F850090DE52 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
38 | A731AC9623E01F850090DE52 /* Example-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Example-iOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
39 | A731AC9A23E01F850090DE52 /* Example_iOSTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Example_iOSTests.swift; sourceTree = ""; };
40 | A731AC9C23E01F850090DE52 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
41 | /* End PBXFileReference section */
42 |
43 | /* Begin PBXFrameworksBuildPhase section */
44 | A731AC7D23E01F830090DE52 /* Frameworks */ = {
45 | isa = PBXFrameworksBuildPhase;
46 | buildActionMask = 2147483647;
47 | files = (
48 | );
49 | runOnlyForDeploymentPostprocessing = 0;
50 | };
51 | A731AC9323E01F850090DE52 /* Frameworks */ = {
52 | isa = PBXFrameworksBuildPhase;
53 | buildActionMask = 2147483647;
54 | files = (
55 | );
56 | runOnlyForDeploymentPostprocessing = 0;
57 | };
58 | /* End PBXFrameworksBuildPhase section */
59 |
60 | /* Begin PBXGroup section */
61 | A731AC7723E01F830090DE52 = {
62 | isa = PBXGroup;
63 | children = (
64 | A731AC8223E01F830090DE52 /* Example-iOS */,
65 | A731AC9923E01F850090DE52 /* Example-iOSTests */,
66 | A731AC8123E01F830090DE52 /* Products */,
67 | );
68 | sourceTree = "";
69 | };
70 | A731AC8123E01F830090DE52 /* Products */ = {
71 | isa = PBXGroup;
72 | children = (
73 | A731AC8023E01F830090DE52 /* Example-iOS.app */,
74 | A731AC9623E01F850090DE52 /* Example-iOSTests.xctest */,
75 | );
76 | name = Products;
77 | sourceTree = "";
78 | };
79 | A731AC8223E01F830090DE52 /* Example-iOS */ = {
80 | isa = PBXGroup;
81 | children = (
82 | A731AC8323E01F830090DE52 /* AppDelegate.swift */,
83 | A731AC8523E01F830090DE52 /* SceneDelegate.swift */,
84 | A731AC8723E01F830090DE52 /* ViewController.swift */,
85 | A731AC8923E01F830090DE52 /* Main.storyboard */,
86 | A731AC8C23E01F850090DE52 /* Assets.xcassets */,
87 | A731AC8E23E01F850090DE52 /* LaunchScreen.storyboard */,
88 | A731AC9123E01F850090DE52 /* Info.plist */,
89 | );
90 | path = "Example-iOS";
91 | sourceTree = "";
92 | };
93 | A731AC9923E01F850090DE52 /* Example-iOSTests */ = {
94 | isa = PBXGroup;
95 | children = (
96 | A731AC9A23E01F850090DE52 /* Example_iOSTests.swift */,
97 | A731AC9C23E01F850090DE52 /* Info.plist */,
98 | );
99 | path = "Example-iOSTests";
100 | sourceTree = "";
101 | };
102 | /* End PBXGroup section */
103 |
104 | /* Begin PBXNativeTarget section */
105 | A731AC7F23E01F830090DE52 /* Example-iOS */ = {
106 | isa = PBXNativeTarget;
107 | buildConfigurationList = A731AC9F23E01F850090DE52 /* Build configuration list for PBXNativeTarget "Example-iOS" */;
108 | buildPhases = (
109 | A731AC7C23E01F830090DE52 /* Sources */,
110 | A731AC7D23E01F830090DE52 /* Frameworks */,
111 | A731AC7E23E01F830090DE52 /* Resources */,
112 | );
113 | buildRules = (
114 | );
115 | dependencies = (
116 | );
117 | name = "Example-iOS";
118 | productName = "Example iOS";
119 | productReference = A731AC8023E01F830090DE52 /* Example-iOS.app */;
120 | productType = "com.apple.product-type.application";
121 | };
122 | A731AC9523E01F850090DE52 /* Example-iOSTests */ = {
123 | isa = PBXNativeTarget;
124 | buildConfigurationList = A731ACA223E01F850090DE52 /* Build configuration list for PBXNativeTarget "Example-iOSTests" */;
125 | buildPhases = (
126 | A731AC9223E01F850090DE52 /* Sources */,
127 | A731AC9323E01F850090DE52 /* Frameworks */,
128 | A731AC9423E01F850090DE52 /* Resources */,
129 | );
130 | buildRules = (
131 | );
132 | dependencies = (
133 | A731AC9823E01F850090DE52 /* PBXTargetDependency */,
134 | );
135 | name = "Example-iOSTests";
136 | productName = "Example iOSTests";
137 | productReference = A731AC9623E01F850090DE52 /* Example-iOSTests.xctest */;
138 | productType = "com.apple.product-type.bundle.unit-test";
139 | };
140 | /* End PBXNativeTarget section */
141 |
142 | /* Begin PBXProject section */
143 | A731AC7823E01F830090DE52 /* Project object */ = {
144 | isa = PBXProject;
145 | attributes = {
146 | LastSwiftUpdateCheck = 1130;
147 | LastUpgradeCheck = 1130;
148 | ORGANIZATIONNAME = "Oliver Jones";
149 | TargetAttributes = {
150 | A731AC7F23E01F830090DE52 = {
151 | CreatedOnToolsVersion = 11.3.1;
152 | };
153 | A731AC9523E01F850090DE52 = {
154 | CreatedOnToolsVersion = 11.3.1;
155 | TestTargetID = A731AC7F23E01F830090DE52;
156 | };
157 | };
158 | };
159 | buildConfigurationList = A731AC7B23E01F830090DE52 /* Build configuration list for PBXProject "Example-iOS" */;
160 | compatibilityVersion = "Xcode 9.3";
161 | developmentRegion = en;
162 | hasScannedForEncodings = 0;
163 | knownRegions = (
164 | en,
165 | Base,
166 | );
167 | mainGroup = A731AC7723E01F830090DE52;
168 | productRefGroup = A731AC8123E01F830090DE52 /* Products */;
169 | projectDirPath = "";
170 | projectRoot = "";
171 | targets = (
172 | A731AC7F23E01F830090DE52 /* Example-iOS */,
173 | A731AC9523E01F850090DE52 /* Example-iOSTests */,
174 | );
175 | };
176 | /* End PBXProject section */
177 |
178 | /* Begin PBXResourcesBuildPhase section */
179 | A731AC7E23E01F830090DE52 /* Resources */ = {
180 | isa = PBXResourcesBuildPhase;
181 | buildActionMask = 2147483647;
182 | files = (
183 | A731AC9023E01F850090DE52 /* LaunchScreen.storyboard in Resources */,
184 | A731AC8D23E01F850090DE52 /* Assets.xcassets in Resources */,
185 | A731AC8B23E01F830090DE52 /* Main.storyboard in Resources */,
186 | );
187 | runOnlyForDeploymentPostprocessing = 0;
188 | };
189 | A731AC9423E01F850090DE52 /* Resources */ = {
190 | isa = PBXResourcesBuildPhase;
191 | buildActionMask = 2147483647;
192 | files = (
193 | );
194 | runOnlyForDeploymentPostprocessing = 0;
195 | };
196 | /* End PBXResourcesBuildPhase section */
197 |
198 | /* Begin PBXSourcesBuildPhase section */
199 | A731AC7C23E01F830090DE52 /* Sources */ = {
200 | isa = PBXSourcesBuildPhase;
201 | buildActionMask = 2147483647;
202 | files = (
203 | A731AC8823E01F830090DE52 /* ViewController.swift in Sources */,
204 | A731AC8423E01F830090DE52 /* AppDelegate.swift in Sources */,
205 | A731AC8623E01F830090DE52 /* SceneDelegate.swift in Sources */,
206 | );
207 | runOnlyForDeploymentPostprocessing = 0;
208 | };
209 | A731AC9223E01F850090DE52 /* Sources */ = {
210 | isa = PBXSourcesBuildPhase;
211 | buildActionMask = 2147483647;
212 | files = (
213 | A731AC9B23E01F850090DE52 /* Example_iOSTests.swift in Sources */,
214 | );
215 | runOnlyForDeploymentPostprocessing = 0;
216 | };
217 | /* End PBXSourcesBuildPhase section */
218 |
219 | /* Begin PBXTargetDependency section */
220 | A731AC9823E01F850090DE52 /* PBXTargetDependency */ = {
221 | isa = PBXTargetDependency;
222 | target = A731AC7F23E01F830090DE52 /* Example-iOS */;
223 | targetProxy = A731AC9723E01F850090DE52 /* PBXContainerItemProxy */;
224 | };
225 | /* End PBXTargetDependency section */
226 |
227 | /* Begin PBXVariantGroup section */
228 | A731AC8923E01F830090DE52 /* Main.storyboard */ = {
229 | isa = PBXVariantGroup;
230 | children = (
231 | A731AC8A23E01F830090DE52 /* Base */,
232 | );
233 | name = Main.storyboard;
234 | sourceTree = "";
235 | };
236 | A731AC8E23E01F850090DE52 /* LaunchScreen.storyboard */ = {
237 | isa = PBXVariantGroup;
238 | children = (
239 | A731AC8F23E01F850090DE52 /* Base */,
240 | );
241 | name = LaunchScreen.storyboard;
242 | sourceTree = "";
243 | };
244 | /* End PBXVariantGroup section */
245 |
246 | /* Begin XCBuildConfiguration section */
247 | A731AC9D23E01F850090DE52 /* Debug */ = {
248 | isa = XCBuildConfiguration;
249 | buildSettings = {
250 | ALWAYS_SEARCH_USER_PATHS = NO;
251 | CLANG_ANALYZER_NONNULL = YES;
252 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
253 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
254 | CLANG_CXX_LIBRARY = "libc++";
255 | CLANG_ENABLE_MODULES = YES;
256 | CLANG_ENABLE_OBJC_ARC = YES;
257 | CLANG_ENABLE_OBJC_WEAK = YES;
258 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
259 | CLANG_WARN_BOOL_CONVERSION = YES;
260 | CLANG_WARN_COMMA = YES;
261 | CLANG_WARN_CONSTANT_CONVERSION = YES;
262 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
263 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
264 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
265 | CLANG_WARN_EMPTY_BODY = YES;
266 | CLANG_WARN_ENUM_CONVERSION = YES;
267 | CLANG_WARN_INFINITE_RECURSION = YES;
268 | CLANG_WARN_INT_CONVERSION = YES;
269 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
270 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
271 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
272 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
273 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
274 | CLANG_WARN_STRICT_PROTOTYPES = YES;
275 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
276 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
277 | CLANG_WARN_UNREACHABLE_CODE = YES;
278 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
279 | COPY_PHASE_STRIP = NO;
280 | CURRENT_PROJECT_VERSION = 1;
281 | DEBUG_INFORMATION_FORMAT = dwarf;
282 | ENABLE_STRICT_OBJC_MSGSEND = YES;
283 | ENABLE_TESTABILITY = YES;
284 | GCC_C_LANGUAGE_STANDARD = gnu11;
285 | GCC_DYNAMIC_NO_PIC = NO;
286 | GCC_NO_COMMON_BLOCKS = YES;
287 | GCC_OPTIMIZATION_LEVEL = 0;
288 | GCC_PREPROCESSOR_DEFINITIONS = (
289 | "DEBUG=1",
290 | "$(inherited)",
291 | );
292 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
293 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
294 | GCC_WARN_UNDECLARED_SELECTOR = YES;
295 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
296 | GCC_WARN_UNUSED_FUNCTION = YES;
297 | GCC_WARN_UNUSED_VARIABLE = YES;
298 | IPHONEOS_DEPLOYMENT_TARGET = 13.2;
299 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
300 | MTL_FAST_MATH = YES;
301 | ONLY_ACTIVE_ARCH = YES;
302 | SDKROOT = iphoneos;
303 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
304 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
305 | };
306 | name = Debug;
307 | };
308 | A731AC9E23E01F850090DE52 /* Release */ = {
309 | isa = XCBuildConfiguration;
310 | buildSettings = {
311 | ALWAYS_SEARCH_USER_PATHS = NO;
312 | CLANG_ANALYZER_NONNULL = YES;
313 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
314 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
315 | CLANG_CXX_LIBRARY = "libc++";
316 | CLANG_ENABLE_MODULES = YES;
317 | CLANG_ENABLE_OBJC_ARC = YES;
318 | CLANG_ENABLE_OBJC_WEAK = YES;
319 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
320 | CLANG_WARN_BOOL_CONVERSION = YES;
321 | CLANG_WARN_COMMA = YES;
322 | CLANG_WARN_CONSTANT_CONVERSION = YES;
323 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
324 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
325 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
326 | CLANG_WARN_EMPTY_BODY = YES;
327 | CLANG_WARN_ENUM_CONVERSION = YES;
328 | CLANG_WARN_INFINITE_RECURSION = YES;
329 | CLANG_WARN_INT_CONVERSION = YES;
330 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
331 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
332 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
333 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
334 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
335 | CLANG_WARN_STRICT_PROTOTYPES = YES;
336 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
337 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
338 | CLANG_WARN_UNREACHABLE_CODE = YES;
339 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
340 | COPY_PHASE_STRIP = NO;
341 | CURRENT_PROJECT_VERSION = 1;
342 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
343 | ENABLE_NS_ASSERTIONS = NO;
344 | ENABLE_STRICT_OBJC_MSGSEND = YES;
345 | GCC_C_LANGUAGE_STANDARD = gnu11;
346 | GCC_NO_COMMON_BLOCKS = YES;
347 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
348 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
349 | GCC_WARN_UNDECLARED_SELECTOR = YES;
350 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
351 | GCC_WARN_UNUSED_FUNCTION = YES;
352 | GCC_WARN_UNUSED_VARIABLE = YES;
353 | IPHONEOS_DEPLOYMENT_TARGET = 13.2;
354 | MTL_ENABLE_DEBUG_INFO = NO;
355 | MTL_FAST_MATH = YES;
356 | SDKROOT = iphoneos;
357 | SWIFT_COMPILATION_MODE = wholemodule;
358 | SWIFT_OPTIMIZATION_LEVEL = "-O";
359 | VALIDATE_PRODUCT = YES;
360 | };
361 | name = Release;
362 | };
363 | A731ACA023E01F850090DE52 /* Debug */ = {
364 | isa = XCBuildConfiguration;
365 | buildSettings = {
366 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
367 | CODE_SIGN_STYLE = Automatic;
368 | DEVELOPMENT_TEAM = ER9FN723RR;
369 | INFOPLIST_FILE = "Example-iOS/Info.plist";
370 | LD_RUNPATH_SEARCH_PATHS = (
371 | "$(inherited)",
372 | "@executable_path/Frameworks",
373 | );
374 | PRODUCT_BUNDLE_IDENTIFIER = "codes.orj.Example-iOS";
375 | PRODUCT_NAME = "$(TARGET_NAME)";
376 | SWIFT_VERSION = 5.0;
377 | };
378 | name = Debug;
379 | };
380 | A731ACA123E01F850090DE52 /* Release */ = {
381 | isa = XCBuildConfiguration;
382 | buildSettings = {
383 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
384 | CODE_SIGN_STYLE = Automatic;
385 | DEVELOPMENT_TEAM = ER9FN723RR;
386 | INFOPLIST_FILE = "Example-iOS/Info.plist";
387 | LD_RUNPATH_SEARCH_PATHS = (
388 | "$(inherited)",
389 | "@executable_path/Frameworks",
390 | );
391 | PRODUCT_BUNDLE_IDENTIFIER = "codes.orj.Example-iOS";
392 | PRODUCT_NAME = "$(TARGET_NAME)";
393 | SWIFT_VERSION = 5.0;
394 | };
395 | name = Release;
396 | };
397 | A731ACA323E01F850090DE52 /* Debug */ = {
398 | isa = XCBuildConfiguration;
399 | buildSettings = {
400 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
401 | BUNDLE_LOADER = "$(TEST_HOST)";
402 | CODE_SIGN_STYLE = Automatic;
403 | DEVELOPMENT_TEAM = ER9FN723RR;
404 | INFOPLIST_FILE = "Example iOSTests/Info.plist";
405 | IPHONEOS_DEPLOYMENT_TARGET = 13.2;
406 | LD_RUNPATH_SEARCH_PATHS = (
407 | "$(inherited)",
408 | "@executable_path/Frameworks",
409 | "@loader_path/Frameworks",
410 | );
411 | PRODUCT_BUNDLE_IDENTIFIER = "codes.orj.Example-iOSTests";
412 | PRODUCT_NAME = "$(TARGET_NAME)";
413 | SWIFT_VERSION = 5.0;
414 | TARGETED_DEVICE_FAMILY = "1,2";
415 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example-iOS.app/Example-iOS";
416 | };
417 | name = Debug;
418 | };
419 | A731ACA423E01F850090DE52 /* Release */ = {
420 | isa = XCBuildConfiguration;
421 | buildSettings = {
422 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
423 | BUNDLE_LOADER = "$(TEST_HOST)";
424 | CODE_SIGN_STYLE = Automatic;
425 | DEVELOPMENT_TEAM = ER9FN723RR;
426 | INFOPLIST_FILE = "Example iOSTests/Info.plist";
427 | IPHONEOS_DEPLOYMENT_TARGET = 13.2;
428 | LD_RUNPATH_SEARCH_PATHS = (
429 | "$(inherited)",
430 | "@executable_path/Frameworks",
431 | "@loader_path/Frameworks",
432 | );
433 | PRODUCT_BUNDLE_IDENTIFIER = "codes.orj.Example-iOSTests";
434 | PRODUCT_NAME = "$(TARGET_NAME)";
435 | SWIFT_VERSION = 5.0;
436 | TARGETED_DEVICE_FAMILY = "1,2";
437 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example-iOS.app/Example-iOS";
438 | };
439 | name = Release;
440 | };
441 | /* End XCBuildConfiguration section */
442 |
443 | /* Begin XCConfigurationList section */
444 | A731AC7B23E01F830090DE52 /* Build configuration list for PBXProject "Example-iOS" */ = {
445 | isa = XCConfigurationList;
446 | buildConfigurations = (
447 | A731AC9D23E01F850090DE52 /* Debug */,
448 | A731AC9E23E01F850090DE52 /* Release */,
449 | );
450 | defaultConfigurationIsVisible = 0;
451 | defaultConfigurationName = Release;
452 | };
453 | A731AC9F23E01F850090DE52 /* Build configuration list for PBXNativeTarget "Example-iOS" */ = {
454 | isa = XCConfigurationList;
455 | buildConfigurations = (
456 | A731ACA023E01F850090DE52 /* Debug */,
457 | A731ACA123E01F850090DE52 /* Release */,
458 | );
459 | defaultConfigurationIsVisible = 0;
460 | defaultConfigurationName = Release;
461 | };
462 | A731ACA223E01F850090DE52 /* Build configuration list for PBXNativeTarget "Example-iOSTests" */ = {
463 | isa = XCConfigurationList;
464 | buildConfigurations = (
465 | A731ACA323E01F850090DE52 /* Debug */,
466 | A731ACA423E01F850090DE52 /* Release */,
467 | );
468 | defaultConfigurationIsVisible = 0;
469 | defaultConfigurationName = Release;
470 | };
471 | /* End XCConfigurationList section */
472 | };
473 | rootObject = A731AC7823E01F830090DE52 /* Project object */;
474 | }
475 |
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // Example iOS
4 | //
5 | // Created by Oliver Jones on 28/1/20.
6 | // Copyright © 2020 Oliver Jones. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | class AppDelegate: UIResponder, UIApplicationDelegate {
13 |
14 |
15 |
16 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
17 | // Override point for customization after application launch.
18 | return true
19 | }
20 |
21 | // MARK: UISceneSession Lifecycle
22 |
23 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
24 | // Called when a new scene session is being created.
25 | // Use this method to select a configuration to create the new scene with.
26 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
27 | }
28 |
29 | func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) {
30 | // Called when the user discards a scene session.
31 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
32 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
33 | }
34 |
35 |
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-AppStore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apple-Actions/Example-iOS/857e076e78c6f6ac90bf925a6b27632d85d47379/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-AppStore.png
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Notification@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apple-Actions/Example-iOS/857e076e78c6f6ac90bf925a6b27632d85d47379/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Notification@2x.png
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Notification@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apple-Actions/Example-iOS/857e076e78c6f6ac90bf925a6b27632d85d47379/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Notification@3x.png
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Settings@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apple-Actions/Example-iOS/857e076e78c6f6ac90bf925a6b27632d85d47379/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Settings@2x.png
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Settings@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apple-Actions/Example-iOS/857e076e78c6f6ac90bf925a6b27632d85d47379/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Settings@3x.png
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Spotlight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apple-Actions/Example-iOS/857e076e78c6f6ac90bf925a6b27632d85d47379/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Spotlight@2x.png
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Spotlight@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apple-Actions/Example-iOS/857e076e78c6f6ac90bf925a6b27632d85d47379/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon-Spotlight@3x.png
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apple-Actions/Example-iOS/857e076e78c6f6ac90bf925a6b27632d85d47379/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apple-Actions/Example-iOS/857e076e78c6f6ac90bf925a6b27632d85d47379/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "AppIcon-Notification@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "AppIcon-Notification@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "AppIcon-Settings@2x.png",
19 | "scale" : "2x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "AppIcon-Settings@3x.png",
25 | "scale" : "3x"
26 | },
27 | {
28 | "size" : "40x40",
29 | "idiom" : "iphone",
30 | "filename" : "AppIcon-Spotlight@2x.png",
31 | "scale" : "2x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "AppIcon-Spotlight@3x.png",
37 | "scale" : "3x"
38 | },
39 | {
40 | "size" : "60x60",
41 | "idiom" : "iphone",
42 | "filename" : "AppIcon@2x.png",
43 | "scale" : "2x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "AppIcon@3x.png",
49 | "scale" : "3x"
50 | },
51 | {
52 | "size" : "1024x1024",
53 | "idiom" : "ios-marketing",
54 | "filename" : "AppIcon-AppStore.png",
55 | "scale" : "1x"
56 | }
57 | ],
58 | "info" : {
59 | "version" : 1,
60 | "author" : "xcode"
61 | }
62 | }
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | LSRequiresIPhoneOS
22 |
23 | UIApplicationSceneManifest
24 |
25 | UIApplicationSupportsMultipleScenes
26 |
27 | UISceneConfigurations
28 |
29 | UIWindowSceneSessionRoleApplication
30 |
31 |
32 | UISceneConfigurationName
33 | Default Configuration
34 | UISceneDelegateClassName
35 | $(PRODUCT_MODULE_NAME).SceneDelegate
36 | UISceneStoryboardFile
37 | Main
38 |
39 |
40 |
41 |
42 | UILaunchStoryboardName
43 | LaunchScreen
44 | UIMainStoryboardFile
45 | Main
46 | UIRequiredDeviceCapabilities
47 |
48 | armv7
49 |
50 | UISupportedInterfaceOrientations
51 |
52 | UIInterfaceOrientationPortrait
53 | UIInterfaceOrientationLandscapeLeft
54 | UIInterfaceOrientationLandscapeRight
55 |
56 | UISupportedInterfaceOrientations~ipad
57 |
58 | UIInterfaceOrientationPortrait
59 | UIInterfaceOrientationPortraitUpsideDown
60 | UIInterfaceOrientationLandscapeLeft
61 | UIInterfaceOrientationLandscapeRight
62 |
63 | ITSAppUsesNonExemptEncryption
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/SceneDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SceneDelegate.swift
3 | // Example iOS
4 | //
5 | // Created by Oliver Jones on 28/1/20.
6 | // Copyright © 2020 Oliver Jones. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class SceneDelegate: UIResponder, UIWindowSceneDelegate {
12 |
13 | var window: UIWindow?
14 |
15 |
16 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
17 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
18 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
19 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
20 | guard let _ = (scene as? UIWindowScene) else { return }
21 | }
22 |
23 | func sceneDidDisconnect(_ scene: UIScene) {
24 | // Called as the scene is being released by the system.
25 | // This occurs shortly after the scene enters the background, or when its session is discarded.
26 | // Release any resources associated with this scene that can be re-created the next time the scene connects.
27 | // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
28 | }
29 |
30 | func sceneDidBecomeActive(_ scene: UIScene) {
31 | // Called when the scene has moved from an inactive state to an active state.
32 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
33 | }
34 |
35 | func sceneWillResignActive(_ scene: UIScene) {
36 | // Called when the scene will move from an active state to an inactive state.
37 | // This may occur due to temporary interruptions (ex. an incoming phone call).
38 | }
39 |
40 | func sceneWillEnterForeground(_ scene: UIScene) {
41 | // Called as the scene transitions from the background to the foreground.
42 | // Use this method to undo the changes made on entering the background.
43 | }
44 |
45 | func sceneDidEnterBackground(_ scene: UIScene) {
46 | // Called as the scene transitions from the foreground to the background.
47 | // Use this method to save data, release shared resources, and store enough scene-specific state information
48 | // to restore the scene back to its current state.
49 | }
50 |
51 |
52 | }
53 |
54 |
--------------------------------------------------------------------------------
/Example-iOS/Example-iOS/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // Example iOS
4 | //
5 | // Created by Oliver Jones on 28/1/20.
6 | // Copyright © 2020 Oliver Jones. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | // Do any additional setup after loading the view.
16 | }
17 |
18 |
19 | }
20 |
21 |
--------------------------------------------------------------------------------
/Example-iOS/Example-iOSTests/Example_iOSTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Example_iOSTests.swift
3 | // Example iOSTests
4 | //
5 | // Created by Oliver Jones on 28/1/20.
6 | // Copyright © 2020 Oliver Jones. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | @testable import Example_iOS
11 |
12 | class Example_iOSTests: XCTestCase {
13 |
14 | override func setUp() {
15 | // Put setup code here. This method is called before the invocation of each test method in the class.
16 | }
17 |
18 | override func tearDown() {
19 | // Put teardown code here. This method is called after the invocation of each test method in the class.
20 | }
21 |
22 | func testExample() {
23 | // This is an example of a functional test case.
24 | // Use XCTAssert and related functions to verify your tests produce the correct results.
25 | }
26 |
27 | func testPerformanceExample() {
28 | // This is an example of a performance test case.
29 | self.measure {
30 | // Put the code you want to measure the time of here.
31 | }
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/Example-iOS/Example-iOSTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Apple Github Actions (iOS & macOS)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Example-iOS
2 | An example of how to use Apple development GitHub Actions
3 |
--------------------------------------------------------------------------------
/Support/ExportOptions.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | destination
6 | export
7 | method
8 | app-store
9 | signingStyle
10 | automatic
11 | generateAppStoreInformation
12 |
13 | stripSwiftSymbols
14 |
15 | teamID
16 | ER9FN723RR
17 | uploadBitcode
18 |
19 | uploadSymbols
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------