branch: 01-advanced_xcode
- xcworkspace -> xcodeproj
- targets
- iOS, tvOS, macOS apps
- app extensions (today widget, iMesssage ext., klávesnice apod.)
- tests
- framework
- aggregate
- configurations
- výchozí Debug & Release
- build settings
- bundle ID per configuration
- společná verze pro všechny targety
- schemes
- build phases
- generování build number z počtu commitů pomocí "Run script build phase" a preprocess Info.plist
- ACKLocalization
- stahování
Localizable.strings
ze spreadsheetu jako aggreagate target
- stahování
- SwiftGen
- Run script build phase na generování swift enums pro localizable klíče
Add SwiftGen.
! Něco se mi tam nepovedlo a strašne vám to rozbije git.
swiftgen.yml
. Podle dokumentace a všech dostupných informací máme všechno správně (input/output files u build phase apod.), ale stejně to nefunguje. Po odstranění konfiguráku a volání swiftgenu příkazem s parametry to funguje správně - viz poslední commit.
branch: 02-advanced_swift
- doplnění prvního cvika o shared schemes a shared breakpoints
- closures
- advanced enums
- built-in protocols
- custom operátory
- protocol extensions
- generiky
- conditional protocol conformace
- protocol and class composition
TODO
TODO
TODO
branch: 06-ci
- k čemu je CI dobré
- možnosti CI serverů
- Xcode CLI
- xcodebuild
- xcpretty
- Travis CI
- GitHub integrace
- .travis.yml
- Gemfile
- fastlane
- verze Xcodu
- actions cocoapods, scan, gym
- Fastfile
TODO
TODO
branch: 09-pushes+extensions
- vyžadují explicitní App ID
- lze testovat pouze na reálném zařizení (nelze v simulátoru)
- nelze vyvíjet s free developer accountem
- request permissions od uživatele
- payload notifikace
- zasílání testovacích notifikací přes test appku
- handling reakce na otevření notifikace
- přidání custom actions pomocí kategorií
Example payload notifikace pro náš projekt:
{
"aps":{
"alert":{
"title":"Push title",
"body":"Push body"
},
"sound": "default",
"category": "CATEGORY"
},
"alertTitle": "Title",
"alertMessage": "Message",
"buttonText": "OK"
}
- example push notification service extension
- example iMessage extension
- sdílení dat mezi iOS app a její extension pomocí App Group
- vyžaduje explicitní App ID
- nelze s free developer accountem