├── .github └── workflows │ ├── auto-assign-to-project.yml │ └── readme.yml ├── CONTRIBUTING.md ├── LICENSE ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── generate-readme.sh ├── generate-stubs.sh ├── progress.sh └── summaries └── 2020 ├── 10004.md ├── 10005.md ├── 10006.md ├── 10008.md ├── 10009.md ├── 10010.md ├── 10011.md ├── 10012.md ├── 10013.md ├── 10017.md ├── 10019.md ├── 10020.md ├── 10021.md ├── 10022.md ├── 10026.md ├── 10027.md ├── 10028.md ├── 10031.md ├── 10033.md ├── 10034.md ├── 10035.md ├── 10036.md ├── 10037.md ├── 10039.md ├── 10040.md ├── 10041.md ├── 10042.md ├── 10043.md ├── 10045.md ├── 10046.md ├── 10047.md ├── 10048.md ├── 10049.md ├── 10052.md ├── 10056.md ├── 10057.md ├── 10060.md ├── 10061.md ├── 10063.md ├── 10068.md ├── 10071.md ├── 10073.md ├── 10074.md ├── 10076.md ├── 10077.md ├── 10078.md ├── 10081.md ├── 10083.md ├── 10084.md ├── 10086.md ├── 10087.md ├── 10088.md ├── 10089.md ├── 10090.md ├── 10091.md ├── 10093.md ├── 10094.md ├── 10095.md ├── 10096.md ├── 10097.md ├── 10098.md ├── 10099.md ├── 101.md ├── 10100.md ├── 10103.md ├── 10104.md ├── 10105.md ├── 10106.md ├── 10107.md ├── 10109.md ├── 10110.md ├── 10111.md ├── 10113.md ├── 10114.md ├── 10115.md ├── 10116.md ├── 10117.md ├── 10118.md ├── 10119.md ├── 10120.md ├── 10138.md ├── 10139.md ├── 10140.md ├── 10142.md ├── 10143.md ├── 10145.md ├── 10146.md ├── 10147.md ├── 10148.md ├── 10149.md ├── 10151.md ├── 10152.md ├── 10153.md ├── 10156.md ├── 10158.md ├── 10159.md ├── 10160.md ├── 10162.md ├── 10163.md ├── 10164.md ├── 10165.md ├── 10167.md ├── 10168.md ├── 10169.md ├── 10170.md ├── 10171.md ├── 10172.md ├── 10173.md ├── 10174.md ├── 10175.md ├── 10176.md ├── 10182.md ├── 10184.md ├── 10185.md ├── 10188.md ├── 10189.md ├── 10190.md ├── 10194.md ├── 10197.md ├── 102.md ├── 10200.md ├── 10204.md ├── 10205.md ├── 10206.md ├── 10207.md ├── 10209.md ├── 10210.md ├── 10214.md ├── 10216.md ├── 10217.md ├── 10219.md ├── 10220.md ├── 10221.md ├── 10222.md ├── 10223.md ├── 10224.md ├── 10225.md ├── 10226.md ├── 10228.md ├── 10229.md ├── 10230.md ├── 10231.md ├── 10232.md ├── 10601.md ├── 10602.md ├── 10603.md ├── 10604.md ├── 10605.md ├── 10611.md ├── 10612.md ├── 10613.md ├── 10614.md ├── 10615.md ├── 10616.md ├── 10617.md ├── 10618.md ├── 10619.md ├── 10621.md ├── 10631.md ├── 10632.md ├── 10633.md ├── 10634.md ├── 10635.md ├── 10636.md ├── 10639.md ├── 10640.md ├── 10641.md ├── 10642.md ├── 10643.md ├── 10644.md ├── 10645.md ├── 10646.md ├── 10647.md ├── 10648.md ├── 10649.md ├── 10650.md ├── 10651.md ├── 10652.md ├── 10653.md ├── 10654.md ├── 10655.md ├── 10656.md ├── 10657.md ├── 10658.md ├── 10659.md ├── 10660.md ├── 10661.md ├── 10662.md ├── 10663.md ├── 10664.md ├── 10665.md ├── 10666.md ├── 10667.md ├── 10668.md ├── 10669.md ├── 10670.md ├── 10671.md ├── 10672.md ├── 10673.md ├── 10676.md ├── 10677.md ├── 10680.md ├── 10686.md └── 10687.md /.github/workflows/auto-assign-to-project.yml: -------------------------------------------------------------------------------- 1 | name: Auto Assign to Project 2 | 3 | on: 4 | issues: 5 | types: [opened] 6 | pull_request: 7 | types: [opened] 8 | 9 | jobs: 10 | add-to-project: 11 | runs-on: ubuntu-latest 12 | name: Assign to "Backlog" Project 13 | steps: 14 | - name: Assign NEW issues and NEW pull requests to global project "Backlog" (1) 15 | uses: actions/add-to-project@main 16 | with: 17 | project-url: https://github.com/users/Blackjacx/projects/1 18 | github-token: ${{ secrets.ACCESS_TOKEN }} -------------------------------------------------------------------------------- /.github/workflows/readme.yml: -------------------------------------------------------------------------------- 1 | name: Readme Auto Generation 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | paths-ignore: 8 | - README.md 9 | 10 | jobs: 11 | generate-readme: 12 | runs-on: ubuntu-latest 13 | steps: 14 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 15 | - name: Checkout 16 | uses: actions/checkout@v2 17 | - name: Generating Readme 18 | run: ./generate-readme.sh 19 | - name: Output Readme 20 | run: cat README.md 21 | - name: Commit New Readme 22 | run: | 23 | git config --global user.email "stefan.herold@gmail.com" 24 | git config --global user.name "Stefan Herold" 25 | git add README.md || echo "No changes to commit" 26 | git commit README.md -m 'Re-build README.md' || echo "No changes to commit" 27 | git push origin || echo "No changes to commit" 28 | env: 29 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 30 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute 2 | 3 | I'm really glad you're reading this and are willing to help. Watching all the sessions is pretty time-consuming and help is highly appreciated. 4 | 5 | ## Recommendations 6 | 7 | You should have a look at the [open PR's](https://github.com/Blackjacx/WWDC/pulls) before you start watching a session. There is a chance that a session has already been processed so you can focus on another video. 8 | 9 | I watch sessions in 1.5 speed using the awesome player from wwdc.io. It is hard to follow at this speed but this is the only way for me to watch so many of them. You can try it and if it feels too fast, just reduce the speed to 1.25 which should be fine for most of the people. 10 | 11 | Write in a text editor that offers spell check. You'll be surprised by the amount of typos and small mistakes we make by typing while paying attention to the session :) 12 | 13 | ## Submitting Changes 14 | 15 | Please respect the following rules to maintain a consistent look and feel across the session notes: 16 | 17 | - The main file README.md including table of contents is **auto-generated** when your PR is merged please don't edit it. 18 | - Search your session markdown file among `./summaries/2020/.md` and put your session in there. Please make sure your file has no top/bottom blank lines when you're finished editing. 19 | - Don't forget to mention the authors below the session link in the format `_Author_1, Author_2_`. You'll find the authors at the beginning of each video. 20 | - The video duration is not needed here since you can see it when you click the link. 21 | - For the session please do not add **code samples** (except one-liners) and no **images**. I plan to have all session notes skimmable as easy as possible. But you can link to the relevant position in the video by using a short link like this one: [22:32](https://developer.apple.com/wwdc19/245/?time=1337). The time parameter is in seconds. Just put in the time where the interesting part starts in the video. 22 | - Writing while watching the session can be challenging and you'll often make typos or innocent grammar mistakes. Please review what you're submitting before opening a PR, as this will make your notes available to others faster, and with higher quality. 23 | - `objc` != `Obj-C` != `objective-C` != `Objective-C`. `IOS` is not an Apple operating system and neither `XCode` is an IDE (`iOS` and `Xcode` would be correct). Please double check your spelling and make sure it's consistent. 24 | 25 | When you are finished please send a [GitHub Pull Request](https://github.com/Blackjacx/WWDC/compare) with some notes of what you have done (read more about [PRs](http://help.github.com/pull-requests/)). 26 | 27 | ## Commit Messages 28 | 29 | ### Submit a Session 30 | 31 | It will be enough to have a one-line commit message that contains the title of the session, like: 32 | 33 | ``` 34 | Add Session \"Platform State of the Union\" 35 | ``` 36 | 37 | ### Submit a Fix 38 | 39 | Here it's enough to quickly mention what you did, like: 40 | 41 | ``` 42 | Fixed typo 43 | ``` 44 | 45 | ``` 46 | Added Description if Feature xyz 47 | ``` 48 | 49 | Thanks so much for your contribution, 50 | Stefan 51 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Stefan Herold 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 | -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Checklist 2 | 3 | - [ ] I have read the [CONTRIBUTING.md](https://github.com/Blackjacx/WWDC/blob/master/CONTRIBUTING.md) file. 4 | - [ ] I have reviewed my own notes for typos, grammar and consistency (if you're submitting notes for a new session) 5 | 6 | ## Description 7 | Summary of changes made 8 | -------------------------------------------------------------------------------- /generate-readme.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | folder="./summaries/2020" 5 | readme="./README.md" 6 | 7 | total=$(find $folder -type f 2> /dev/null -name "*.md" | wc -l | sed 's/^[ ]*//') 8 | todo=$(cat $folder/* | grep -c "^##### TO-DO") 9 | done=$((total - todo)) 10 | toc=() 11 | content=() 12 | 13 | # Generate TOC & Progress bar 14 | for file in $folder/*; do 15 | title=$(head -n 1 $file | sed 's/## //g') 16 | anchor=$(echo $title | sed 's/ /-/g' | sed 's/[^a-zA-Z0-9\-]//g') 17 | if grep -q "##### TO-DO" "$file"; then 18 | toc+=("1. **(TO-DO)** [$title](#$anchor)") 19 | else 20 | toc+=("1. [$title](#$anchor)") 21 | fi 22 | content+=("$(cat $file)") 23 | done 24 | 25 | echo "✅ $done / 👨‍💻 $total" 26 | 27 | progress_badge_url="https://progress-bar.dev/$done/?scale=$total&title=Progress&width=600&suffix=%20/%20$total%20Sessions" 28 | 29 | cat < $readme 30 | # WWDC 2020 Session Notes 31 | 32 | Twitter Follow 33 | Donate 34 | ![Readme Auto Generation](https://github.com/Blackjacx/WWDC/workflows/Readme%20Auto%20Generation/badge.svg) 35 | 36 | ## Thank You 🎉 37 | 38 | Last years [WWDC Session Notes](https://github.com/Blackjacx/WWDC/tree/2019) was so successful that I decided to continue this form of WWDC session summary. I would like to take the moment to thank all of you for contribution, feedback, support and reading my session notes 🙏 39 | 40 | ## Intro 41 | 42 | Usually it is much faster to read through some bullet points instead of watching a 50 min session video. Then if you find something interesting you can still watch it. 43 | 44 | Sessions that are exceptionally mentionable are highlighted using a ★. 45 | 46 | > This is work in progress since it is a lot of effort to watch all the videos by myself. So either please be patient or just [open up an issue](https://github.com/Blackjacx/WWDC/issues/new) to make a suggestion which session notes you like to see next :) 47 | 48 | ## Contribution 49 | 50 | Feel free to submit a PR if I got something wrong or you have a suggestion for improvement. Please also have a look in [CONTRIBUTING.md](CONTRIBUTING.md) if you want to contribute. 51 | 52 | Thanks so much to EVERYBODY who contributed and improved the overall quality of the notes and those who added complete notes to the list. 53 | 54 | ## Mentions 55 | 56 | This repo has already been mentioned many times on Twitter and apart from this also in the following places: 57 | 58 | - [iOS Dev Weekly Issue 409](https://iosdevweekly.com/issues/409) 59 | - [iOS Goodies Issue 287](https://ios-goodies.com/post/185729205551/week-287) 60 | - [Swift Developments Issue 189](https://andybargh.com/swiftdevelopments-189/) 61 | - [WWDCNotes](https://www.wwdcnotes.com/) 62 | 63 | ## Interesting WWDC-Related Links 64 | 65 | - [Apple Developer Documentation](https://developer.apple.com/documentation) by [@Apple](https://twitter.com/apple) 66 | - [Xcode Release Notes](https://developer.apple.com/documentation/xcode_release_notes/) 67 | - [iOS & iPadOS Release Notes](https://developer.apple.com/documentation/ios_ipados_release_notes) 68 | 69 | ## Table of Contents 70 | 71 | ![Progress]($progress_badge_url) 72 | 73 | EOT 74 | 75 | printf '%s\n' "${toc[@]}" >> $readme 76 | printf '\n\n' >> $readme 77 | printf '%s\n\n\n' "${content[@]}" >> $readme -------------------------------------------------------------------------------- /generate-stubs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | year="2020" 5 | numbers=($(curl --silent https://developer.apple.com/videos/wwdc$year | grep '<]' '{print $3}' | cut -d'/' -f5 | uniq)) 6 | IFS=$'\n' && titles=($(curl --silent https://developer.apple.com/videos/wwdc$year | grep '

' | sed -e 's/^[[:space:]]*//' | awk -F'[\"><]' '{print $5}')) 7 | 8 | # Generate stubs for all sessions 9 | for i in "${!numbers[@]}"; do 10 | number=${numbers[$i]} 11 | title=${titles[$i]} 12 | file="summaries/$year/$number.md" 13 | 14 | if [ -f $file ]; then 15 | printf "✅ %s\t%s\n" $number $title 16 | else 17 | printf "❌ %s\t%s\n" $number $title 18 | 19 | cat < $file 20 | ## $title 21 | 22 | https://developer.apple.com/wwdc20/$number 23 | 24 | Presenters: _Example Guy, Another Person_ 25 | 26 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 27 | EOT 28 | fi 29 | done -------------------------------------------------------------------------------- /progress.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | DONE=$(cat README.md | grep '1. \[' |wc -l |sed 's/^[ ]*//') 5 | REMAINING=$(cat README.md | grep '1. \*\*(TO-DO)\*\*' |wc -l |sed 's/^[ ]*//') 6 | TOTAL=$((REMAINING+DONE)) 7 | echo "✅ $DONE / 👨‍💻 $TOTAL" -------------------------------------------------------------------------------- /summaries/2020/10004.md: -------------------------------------------------------------------------------- 1 | ## Expanding automation with the App Store Connect API 2 | 3 | https://developer.apple.com/wwdc20/10004 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10005.md: -------------------------------------------------------------------------------- 1 | ## What's new in assessment 2 | 3 | https://developer.apple.com/wwdc20/10005 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10006.md: -------------------------------------------------------------------------------- 1 | ## Introducing Car Keys 2 | 3 | https://developer.apple.com/wwdc20/10006 4 | 5 | Presenter: _Matthias Lerch_ 6 | 7 | - People can unlock, lock and start their car (iPhone or Apple Watch) 8 | - Stored securely on the device and can be deleted via iCloud 9 | - Keys can be shared with the family or friends 10 | - Agnostic to radio technology (**supports NFC so far**) 11 | - Offline capable 12 | - Car needs to support: 13 | - **Owner pairing** (association if iPhone and car) 14 | - Prove ownership of car 15 | - Initiate pairing 16 | - Place iPhone near car's NFC reader 17 | - Car key appears in Wallet 18 | - **Transactions** (unlock, lock, start the car) 19 | - NFC readers in door handle and dashboard (engine start) 20 | - Optimized for security and performance 21 | - Express mode lets the feature work without Face ID or passcode (turned on by default) 22 | - iPhone and car can be offline 23 | - Apple doesn't know when you use your car 24 | - **Server Interfaces** (key sharing, key management) 25 | - Share keys over Messages 26 | - Car can be offline when sharing 27 | - Apple doesn't know who you share your car key with 28 | - Optional access levels (e.g. 'Unlock and Drive', 'Access and drive up to 65 mph') 29 | - It's up to each auto maker to define access levels 30 | - **Key management** 31 | - Manage owner and shared keys from iPhone or car 32 | - Keys removed from a device stop working immediately (even if the device is offline) 33 | - Easy to change owner device (e.g. when buying a new iPhone) 34 | - **System architecture** 35 | - Fully integrated into iOS natively 36 | - Keys created and stored in Secure Elements and never exported 37 | - All features use AES and eliptic-curve cryptography 38 | - Offline design based on PKI 39 | - Automaker TSM (Trusted Service Manager) not required for simple server integration 40 | - **What is a digital car key?** 41 | - Binded to the user's device and not to Apple or auto makers 42 | - Private key (SK) never leaves SE (Secure Element) 43 | - Public key is exported in an X.509 certificate for verification 44 | - **Applet** 45 | - Implements the car key in the Secure Element 46 | - Stores key pair, car public key, secure mailboxes 47 | - All car keys hosted in a single applet instance 48 | - **Owner pairing flow (online)** 49 | 1. PAKE Verifier 50 | 2. Pairing password 51 | 3. Pairing 52 | 4. Cryptographic linking 53 | 5. Key activation/registration 54 | 6. Key attestation 55 | - **Key sharing flow** 56 | 1. Owner sends invitation using Messages 57 | 2. New key crated in 58 | 3. Identity certificate chain 59 | 4. Owner verification 60 | 5. Attestation returned 61 | 6. Offline registration 62 | - **Lifecycle of a car key** 63 | - Created during owner pairing or key sharing 64 | - Transactions 65 | - Suspensions 66 | - Revocation 67 | - Deletion 68 | - **Certificates and Transaction** 69 | - Owner sharing, key sharing, fast and standard transactions 70 | - Take a deeper look at the presented flows and schemes at [11:30](https://developer.apple.com/wwdc20/10006?time=690) 71 | - **Radio technologies** 72 | - **NFC** 73 | - Based on standard NFC reader 74 | - Enhanced Contactless Protocol (ECP) 75 | - Enables a fully automatic NFC experience 76 | - Identifiers available before transaction starts (Reader type, Automaker) 77 | - Efficient reader polling 78 | - **Ultra Wideband** 79 | - iPhone with U1 chip 80 | - Use with iPhone in bag or pocket 81 | - Common key management architecture 82 | - Specification is currently in development 83 | - **Server integration** 84 | - Required for remote key management 85 | - Auto maker server needs to establish connection to Apple's backend (for each environment, e.g. testing and production) 86 | - Exchange certificates 87 | - Implement and test server interfaces (register a new key, revoke keys, send notifications) 88 | - Provide artwork 89 | - Connect to automaker app 90 | - **Automaker apps** 91 | - Provide custom features using keys stored in Wallet 92 | - Start owner pairing 93 | - Available to automakers 94 | - Entitlement is required 95 | - Use PassKit APIs 96 | - **How to get started (for auto makers)** 97 | - Car Connectivity Consortium 98 | - Digital Key Specification 2.0 99 | - Digital Key Specification 3.0 (in development, will support Ultra Wideband) 100 | - [carconnectivity.org](https://carconnectivity.org/) 101 | - Entroll to [Apple MFi Program](https://mfi.apple.com/contact) 102 | -------------------------------------------------------------------------------- /summaries/2020/10008.md: -------------------------------------------------------------------------------- 1 | ## Optimize the Core Image pipeline for your video app 2 | 3 | https://developer.apple.com/wwdc20/10008 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10009.md: -------------------------------------------------------------------------------- 1 | ## Edit and play back HDR video with AVFoundation 2 | 3 | https://developer.apple.com/wwdc20/10009 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10010.md: -------------------------------------------------------------------------------- 1 | ## Export HDR media in your app with AVFoundation 2 | 3 | https://developer.apple.com/wwdc20/10010 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10011.md: -------------------------------------------------------------------------------- 1 | ## Author fragmented MPEG-4 content with AVAssetWriter 2 | 3 | https://developer.apple.com/wwdc20/10011 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10012.md: -------------------------------------------------------------------------------- 1 | ## Discover ray tracing with Metal 2 | 3 | https://developer.apple.com/wwdc20/10012 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10013.md: -------------------------------------------------------------------------------- 1 | ## Get to know Metal function pointers 2 | 3 | https://developer.apple.com/wwdc20/10013 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10017.md: -------------------------------------------------------------------------------- 1 | ## Core Data: Sundries and maxims 2 | 3 | https://developer.apple.com/wwdc20/10017 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10019.md: -------------------------------------------------------------------------------- 1 | ## App accessibility for Switch Control 2 | 3 | https://developer.apple.com/wwdc20/10019 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10020.md: -------------------------------------------------------------------------------- 1 | ## Make your app visually accessible 2 | 3 | https://developer.apple.com/wwdc20/10020 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10021.md: -------------------------------------------------------------------------------- 1 | ## Build Metal-based Core Image kernels with Xcode 2 | 3 | https://developer.apple.com/wwdc20/10021 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10022.md: -------------------------------------------------------------------------------- 1 | ## Create a seamless speech experience in your apps 2 | 3 | https://developer.apple.com/wwdc20/10022 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10026.md: -------------------------------------------------------------------------------- 1 | ## Lists in UICollectionView 2 | 3 | https://developer.apple.com/wwdc20/10026 4 | 5 | Presenters: _Michael Ochs_ 6 | 7 | - Lists in iOS 14 Collection Views present `UITableView`-like appearances in `UICollectionView` 8 | - Improved self-sizing support: now default when using lists in `UICollectionView` 9 | - Build cells with AutoLayout and let collection view take over 10 | - Override `preferredLayoutAttributesFittingAttributes:` on cell subclasses to exercise manual sizing 11 | - [**UICollectionLayoutListConfiguration**](https://developer.apple.com/documentation/uikit/uicollectionlayoutlistconfiguration) 12 | - The only new type required on the layout side to build lists in collection view 13 | - Built on top of `NSCollectionLayoutSection` and `UICollectionViewCompositionalLayout`: check out [Advances in Collection View Layout](https://developer.apple.com/videos/play/wwdc2019/215) 14 | - Adds two list-exclusive styles: `.sidebar` and `.sidebarPlain` for building multicolumn apps on iPadOS 14 15 | - Options to show/hide separators and configure list headers/footers 16 | - Creating lists 17 | - Easy way 18 | 1. Create a `UICollectionLayoutListConfiguration` 19 | 2. Create a `UICollectionViewCompositionalLayout` with the configuration 20 | - **Per-section setup** 21 | 1. Create a `UICollectionLayoutListConfiguration` 22 | 2. Create a `NSCollectionLayoutSection` with the configuration 23 | 3. Place the above code inside existing section provider initializer on compositional layout 24 | 4. Customize the layout on a per section basis 25 | - Configuring list section headers/footers 26 | - List headers/footers have to be explicitly enabled 27 | - Register headers/footers as supplementary views 28 | - Set header/footer configuration mode to 'supplementary' 29 | - **Provide a supplementary view** when rendering the header/footer on screen 30 | - **Set `headerMode` to `firstItemInSection` (headers-only)** 31 | - Configure the first collection view cell to look like a header 32 | - Recommended for hierarchical data structures and snapshot APIs: check out [Advances in Diffable Data Source](https://developer.apple.com/videos/play/wwdc2020/10045/) 33 | - Data source need to be aware of first cell being header 34 | - **[UICollectionViewListCell](https://developer.apple.com/documentation/uikit/uicollectionviewlistcell?language=objc)** 35 | - Subclass of `UICollectionViewCell`, can be used interchangeably 36 | - Better support to configure separator insets and cell content indentations 37 | - Features Swipe Actions 38 | - Better accessories API 39 | - Granted access to default system content/background configurations: check out [Modern Cell Configuration](https://developer.apple.com/videos/play/wwdc2020/10027) 40 | - Separator Layout Guide 41 | - Separators are supposed to line up with **primary** cell content 42 | - Constrain this layout guide to the content: opposite of UIKit layout guides 43 | 1. Configure the cell's layout 44 | 2. Constrain the separator layout guide's leading anchor to cell's primary content's leading anchor 45 | - Automatically handled when using system provided content configurations 46 | - Swipe Actions 47 | - Only supported if the cell is rendered inside sections configured using a list configuration 48 | - Override the leading/trailing swipe action's configuration getter to configure 49 | - **Caution**: never capture the index path (unstable) of the cell being configured in action handler 50 | - Directly capture the data model 51 | - Capture a stable identifier of the cell: 52 | - Diffable Data Source and its stable item identifier 53 | - The new cell registration type in iOS 14: UICollectionViewListCell 54 | - Accessories API of list cells 55 | - Options to configure both leading and trailing side of the cell 56 | - Configure multiple accessories on the same side 57 | - Functionalities on list cell accessories 58 | - Re-ordering accessory: cell is automatically in re-rodering mode when tapped 59 | - Delete accessory: cell automatically reveals configured trailing swipe actions when tapped 60 | - Outline disclosure accessory 61 | - Cell automatically communicate with the data source and expand/collapse its children when tapped 62 | - Requires the new section snapshot APIs: check out [Advances in Diffable Data Source](https://developer.apple.com/videos/play/wwdc2020/10045/) 63 | - Plenty of system defaults are provided while customizabilities are kept 64 | -------------------------------------------------------------------------------- /summaries/2020/10027.md: -------------------------------------------------------------------------------- 1 | ## Modern cell configuration 2 | 3 | https://developer.apple.com/wwdc20/10027 4 | 5 | Presenter: _Tylor Fox_ 6 | 7 | - **Getting started with configurations** 8 | - In iOS 13, we use the built-in imageView and textLabel properties on `UITableViewCell` to display an image and some text. 9 | - In iOS 14, we use the content configuration to describe the cell appearance for a specific state 10 | - This is how you configure a cell using a content configuration: 11 | - `var content = cell.defaultContentConfiguration()` This always returns a fresh configuration without any content set on it. Don't need to think about the old state at all. 12 | - Set the image and text on the content configuration. 13 | - `cell.contentConfiguration = content` As soon as we call this, the cell is updated to display the image and text that we specified. 14 | - Same code to configure any cell and any view that supports content configurations. 15 | - Composable, lightweight, very inexpensive to create and built for performance 16 | - **Configuration types** 17 | - Background Configuration 18 | - let you set things such as background color, visual effect, stroke, insets, corner radius and custom view 19 | - List Content Configuration 20 | - let you set things such as image, text, secondary text, layout metrics and behaviors 21 | - **Configuration state** 22 | - Configuration state represents the various inputs that you use to configure your cells and views. 23 | - Each cell, header and footer has its own configuration state. 24 | - **Two Types** 25 | - **View configuration state** 26 | - Trait collection 27 | - 4 states: highlighted, selected, disabled and focused 28 | - Custom state: this is key-value storage to add any extra states or data that use to configuring your view. 29 | - **Cell configuration state** 30 | - Everything from the View configuration state 31 | - Editing, swiped, expanded 32 | - Drag and drop states 33 | - When `automaticallyUpdatesContentConfiguration` is true, The cell automatically calls `updated(for:)` on its contentConfiguration when the cell’s configurationState changes, and applies the updated configuration back to the cell. The default value is true. 34 | - When `automaticallyUpdatesBackgroundConfiguration` is true, the cell automatically calls `updated(for:)` on its backgroundConfiguration when the cell’s configurationState changes, and applies the updated configuration back to the cell. The default value is true. 35 | - You can override `updateConfiguration(using:)` to manually update and customize the content configuration, disable automatic updates by setting this property to false. This method is called before your cell first displays and will be called anytime the configuration state have changed. 36 | -------------------------------------------------------------------------------- /summaries/2020/10028.md: -------------------------------------------------------------------------------- 1 | ## Meet WidgetKit 2 | 3 | https://developer.apple.com/wwdc20/10028 4 | 5 | Presenters: _Nahir Khan, Neil Desai_ 6 | 7 | - Widgets are now used across all platforms 8 | - Great widgets are glancable, relevant and personalized 9 | - **Smart stacks** are collections of widgets and automatically show the right one on top using on-device intelligence 10 | - Widgets support **configuration** by tapping them - this is realized using **intents** similar to SiriKit 11 | - e.g. choosing the city in a Weather app 12 | - UI built entirely in SwiftUI 13 | - **How WidgetKit works** 14 | - WidgetKit extensions are background extensions 15 | - They return a series of view hierarchies in a time line 16 | - Time line is sent to the home screen which presents the right view at the right time 17 | - Since views are "ready" they can be re-used at different points in the system, e.g. the Widget Gallery 18 | - Time line is refreshed from main app and updates are scheduled by extension 19 | - Imagine the Calendar time line for the day. One event is updated from Calendar, which then wakes up the extension and provides the new time line. 20 | - **Building a Widget** 21 | - Single Widget Extension supports multiple kinds of widgets on different platforms 22 | - **Possible configurations:** `Static` (Workout widget) or `Intent-Based` (Reminder widget that can be personalized) 23 | - **Supported Families:** A widget can enable one or many of the following families: `systemSmall`, `systemMedium`, `systemLarge` 24 | - Widget struct must conform to `Widget` and its body to `WidgetConfiguration` 25 | - **How to build a glancable experience** 26 | - Widgets are **not** mini apps they rather project content on the home screen 27 | - No scrolling 28 | - No videos or animated images 29 | - Tap interactions to deep link into main app. Widget associable with a URL link using the widgetURL API (use the new Link API of SwiftUI) 30 | - Important new view types: 31 | - `Placeholder` 32 | - Should not contain user data 33 | - Great placeholder UIs show a representation of what kind your data is 34 | - `Snapshot` 35 | - Represent a single entry in time 36 | - Should return a view as quickly as possible 37 | - Used to display your widget in the gallery 38 | - Use it as the first entry in your time line so users get what they see in the gallery 39 | - `Time line` 40 | - Combination of views and dates 41 | - Output if WidgetKit extension is serialized to disk which enabled rendering of individual entries just in time 42 | - **Reloads** 43 | - Wake up the extension and ask for a new time line 44 | - Help to ensure that content is up to date 45 | - Get a `TimelineProvider` by `struct Provider: TimelineProvider` 46 | - Implement `func snapshot(...)` and `func timeline(...)` for returning the respective data 47 | - Provide a reload policy at Time line cretion time to tell when the time line should be reloaded: `atEnd`, `after(date: Date)`, `never` 48 | - System determines the best time to reload the widget, e.g. based on: 49 | - Background notification 50 | - Significant time change 51 | - Changes in the app made by the user, e.g. new Calendar entry 52 | - Use `WidgetCenter.[reloadTimelines(ofKind:), reloadAllTimelined]` to programmatically reload time lines 53 | - Get current configurations with `WidgetCenter.getCurrentConfigurations(completion:)` 54 | - Use batch requests 55 | - Do not overuse networking from a widget 56 | - Use `onBackgroundURLSessionEvents` modifier to launch a network task which delivers the result to your extension 57 | - Reloads are budgeted by the system, do not overuse them 58 | - **Personalization** 59 | - Use the `Intents` framework, known from Siri, to customize the widgets behavior 60 | - Use the new **In-App Intent Handling** to answer requests from your widget 61 | - `IntentConfiguration` is used to power intent-based widget configurations 62 | - `IntentTimelineProvider` is used to generate specific time lines 63 | - **Intelligence** 64 | - Widgets are displayed on the home screen by on-device intelligence 65 | - Your app can donate shortcuts 66 | - Widget extension can annotate time line entries using `TimelineEntryRelevance` with its score and duration properties -------------------------------------------------------------------------------- /summaries/2020/10031.md: -------------------------------------------------------------------------------- 1 | ## Stacks, Grids, and Outlines in SwiftUI 2 | 3 | https://developer.apple.com/wwdc20/10031 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10033.md: -------------------------------------------------------------------------------- 1 | ## Build SwiftUI views for widgets 2 | 3 | https://developer.apple.com/wwdc20/10033 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10034.md: -------------------------------------------------------------------------------- 1 | ## Widgets Code-along, part 1: The adventure begins 2 | 3 | https://developer.apple.com/wwdc20/10034 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10035.md: -------------------------------------------------------------------------------- 1 | ## Widgets Code-along, part 2: Alternate timelines 2 | 3 | https://developer.apple.com/wwdc20/10035 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10036.md: -------------------------------------------------------------------------------- 1 | ## Widgets Code-along, part 3: Advancing timelines 2 | 3 | https://developer.apple.com/wwdc20/10036 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10037.md: -------------------------------------------------------------------------------- 1 | ## App essentials in SwiftUI 2 | 3 | https://developer.apple.com/wwdc20/10037 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10039.md: -------------------------------------------------------------------------------- 1 | ## Build document-based apps in SwiftUI 2 | 3 | https://developer.apple.com/wwdc20/10039 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10040.md: -------------------------------------------------------------------------------- 1 | ## Data Essentials in SwiftUI 2 | 3 | https://developer.apple.com/wwdc20/10040 4 | 5 | Presenters: _Curt Clifton, Luca Bernardi, Raj Ramamurthy_ 6 | 7 | - **Getting Started** 8 | - Always ask you the following questions: 9 | - What data does my view need? 10 | - How will the view manipulate this date? 11 | - Where will the data come from? 12 | - Immutable views, that just display data, contain only let properties 13 | - Pull multiple properties in their own **config object** 14 | - The config object can contain functions to mutate its state 15 | - Using `@State private var config: ConfigObject()` to re-render your view after `config` changed 16 | - Let parent and sub views communicate over a single config object by sharing it using `@Binding var config` 17 | - Pass `config` down by marking the it as reference using the dollar symbol: `SubView(config: $config)` 18 | - **Modeling Data Using ObservableObject** 19 | - Class-constrained protocol (only adoptable by reference types) 20 | - Can be used to achieve super-custom behaviors, e.g. _backing data by a service or server_ 21 | - Conform by implementing `var objectWillChange: Self.ObjectWillChangePublisher { get }` 22 | - Use to **manage data life cycle**, **handle side-effects**, **integrate with existing components** 23 | - Will be your source of truth 24 | - Doesn't need to be your full data model - split into multiple observable objects if your model is complex 25 | - Use a single ObservableObject for all your views if your data model is simple 26 | - Mark properties of your ObservableObject, your view is interested in as `@Published var progress: Double` 27 | - **How to create an ObservableObject dependency?** 28 | - `@ObservedObject` 29 | - `@ObservedObject var config: Configuration` 30 | - You need to manage the objects ownership outside of your view 31 | - Create a binding to any value-type property of the ObservableObject to pass it into e.g. `$config.isFinished` a `Toggle` control and let it automatically update your view 32 | - `@StateObject` 33 | - SwiftUI owns the ObservableObject 34 | - Creation/destruction is tied to view's life cycle 35 | - Instantiated just before body runs 36 | - Use it to implement e.g. an `ImageLoader: ObservableObject` with a `@published var image: Image` property 37 | - Whenever `@StateObject` changes the view is re-rendered and thus populated with the image 38 | - `EnvironmentObject` 39 | - In SwiftUI you typically have a hierarchy of many modular sub views 40 | - To avoid a lot of boilerplate by passing around ObservableObject's pass it to `.environmentObject(...)` on your root view 41 | - Changes to it, from any view in the hierarchy, will be reflected in any other view 42 | - **SwiftUI Performance Considerations** 43 | - **Avoid slow view updates** 44 | - Make view initializers cheap, e.g. no dispatches 45 | - Make body a pure function 46 | - Avoid assumptions 47 | - New event sources: `onChange`, `onOpenURL`, `onContinueUserActivity` - run on main thread 48 | - **Who owns the data?** 49 | - Share data in a common ancestor 50 | - Leverage `@StateObject` 51 | - Consider placing global data in `App` and pass it down the view hierarchy. Changes to it will re-render **all** scenes (instances/windows) of your app 52 | - New 2020: Property Wrappers that offer **data persistence across app restarts** and can be used as source of truth 53 | - `@SceneStorage` 54 | - Per-scene property wrapper for reading/writing data managed by SwiftUI 55 | - Light-weight storage for your views data 56 | - Use it to populate your collection views 57 | - `@AppStorage` 58 | - App-scoped global storage, persisted using `UserDefaults`, usable anywhere (app/view) 59 | - Perfect for storing settings 60 | - `@AppStorage("amountOfGold") private var amountOfGold = 5000` 61 | - Automatically reads/writes from/to UserDefaults whenever the property changes -------------------------------------------------------------------------------- /summaries/2020/10041.md: -------------------------------------------------------------------------------- 1 | ## What's new in SwiftUI 2 | 3 | https://developer.apple.com/wwdc20/10041 4 | 5 | Presenters: _Matt Ricketson, Taylor Kelly_ 6 | 7 | - **Apps** 8 | - Bild your whole app using SwiftUI: `struct BookClubApp: App` 9 | - Apps can declare data dependencies 10 | - Use `WindowGroup` to manage windows platform independent. Supports multiple windows on macOS and iPadOS out of the bos 11 | - Use `Settings` to get a preference pane for free • available on macOS 12 | - Use `DocumentGroup` scene type to automatically handle opening, saving and editing documents • macOS, iOS, iPadOS 13 | - Use `CommandMenu` command to add additional menus to the menu bar including keyboard shortcuts 14 | - New multi-platform templates specifically for SwiftUI apps 15 | - `LaunchScreen` Info.plist key to configure your launch screen • simple alternative to the storyboard 16 | - **Widgets** 17 | - iOS, iPadOS, macOS exclusively built using SwiftUI 18 | - Declared by `struct YourWidget: Widget` and `var body: some WidgetConfiguration` 19 | - Use SwiftUI to build custom complications for watchOS 20 | - **Lists and Collections** 21 | - List now receive outlines to quickly access the lists content • reduces the need for push/pop navigation patterns 22 | - Lazy loading grid layouts (`Lazy[V|H]Stack`) to reduce memory footprint and preserve smooth scrolling for large amounts of data 23 | - View Builder for switch statements to show e.g. different image styles in a list of images 24 | - **Toolbars and Controls** 25 | - `.toolbar` modifier for unified display of toolbars 26 | - Use `ToolbarItem(placement: .principal)` to make an item prominent 27 | - Use `ToolbarItem(placement: .bottomBar)` to place an item in the bottom bar 28 | - When using `Label("Title", systemImage: "sf.symbol.name")` SwiftUI automatically display icon and/or text depending on where the label is displayed: toolbar, list, ... 29 | - `.keyboardShortcut` modifier can now be used for additional controls like `Button` 30 | - New default focus support in tvOS 31 | - New controls: 32 | - `ProgressView("Downloading", value: progress)` - horizontal bar 33 | - `ProgressView("Downloading", value: progress).progressViewStyle(CircularViewStyle())` - circular progress indicator 34 | - `ProgressView()` - spinner 35 | - `Gauge` to indicate the level of value • can contain value labels and min/max value labels 36 | - **New effects and styling** 37 | - New control center UI with beautiful transitions 38 | - `.matchedGeometryEffect` to provide smooth animations inside of a grid of UI elements 39 | - `.clipShape(ContainerRelativeShape())` to automatically apply a super views shape to the subview 40 | - custom fonts automatically scaled with dynamic type changes 41 | - Custom accent color directly form the AssetCatalog on all platforms 42 | - Many controls can now be tinted 43 | - **System integration** 44 | - New `Link` control to display URLs in link style and open them with the default browser • also supports url schemes to open other apps 45 | - `@Environment(\.openURL) private var openURL` to programmatically open urls via `openURL(url)` in your views 46 | - `onDrag {}` and `onDrop {}` to support drag & drop 47 | - `UniformTypeIdentifers` framework for e.g. introspection of file types 48 | - `Sign in with Apple` as first class component in SwiftUI • available on every platform 49 | - Other Frameworks: **AuthenticationServices**, **AVKit**, **MapKit**, **SceneKit**, **SpriteKit** -------------------------------------------------------------------------------- /summaries/2020/10042.md: -------------------------------------------------------------------------------- 1 | ## Build SwiftUI apps for tvOS 2 | 3 | https://developer.apple.com/wwdc20/10042 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10043.md: -------------------------------------------------------------------------------- 1 | ## Build an Action Classifier with Create ML 2 | 3 | https://developer.apple.com/wwdc20/10043 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10045.md: -------------------------------------------------------------------------------- 1 | ## Advances in diffable data sources 2 | 3 | https://developer.apple.com/wwdc20/10045 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10046.md: -------------------------------------------------------------------------------- 1 | ## Create complications for Apple Watch 2 | 3 | https://developer.apple.com/wwdc20/10046 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10047.md: -------------------------------------------------------------------------------- 1 | ## Enable encrypted DNS 2 | 3 | https://developer.apple.com/wwdc20/10047 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10048.md: -------------------------------------------------------------------------------- 1 | ## Build complications in SwiftUI 2 | 3 | https://developer.apple.com/wwdc20/10048 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10049.md: -------------------------------------------------------------------------------- 1 | ## Keep your complications up to date 2 | 3 | https://developer.apple.com/wwdc20/10049 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10052.md: -------------------------------------------------------------------------------- 1 | ## Build with iOS pickers, menus and actions 2 | 3 | https://developer.apple.com/wwdc20/10052 4 | 5 | Presenters: _Eric Dudiac, David Duncan_ 6 | 7 | - **UISlider and UIProgressView:** More consistent across platforms now 8 | - **UIActivityIndicatorView:** New simpler design, Use color API and modern styles, Updates "pull-to-refresh" 9 | - **UIPickerView:** Updated styling 10 | - **UIPageControl** 11 | - New interactions (scrubbing, scrolling) 12 | - Unlimited pages 13 | - Optional custom indicator icons: `.preferredIndicatorImage(UIImage())` to set all or `.setIndicatorImage(UIImage(), forPage: 0)` for a specific image 14 | - Multiple styles: `.backgroundStyle = .prominent` to highlight the background 15 | - **UIColorPickerViewController** 16 | - New view controller for picking colors 17 | - Eyedropper, Favorites, Hex specification 18 | - **UIDatePicker** 19 | - New compact style to select date and time 20 | - In-line style on iOS - great for iPad or if date picking is primary UI (matches modal presentation) 21 | - Useful when you have space constraints 22 | - Full modal calendar when selecting dates 23 | - Keyboard for selecting times 24 | - New macOS style (10.15.4) 25 | - Compact, modal calendar presentation 26 | - Supported in Catalyst apps 27 | - **Menus** 28 | - Provided on `UIControl` 29 | - Directly supported by UIButton and UIBarButtonItem by `button.menu = UIMenu(...)` 30 | - Triggered via long-press by default 31 | - Show the menu by a simple tap by setting `button.showsMenuAsPrimaryAction = true` and don't provide a primary action 32 | - Back buttons implement menus to quickly jump back in navigation stack 33 | - Take action when the menu action is recognized, register for `UIControl.Event.menuActionTriggered` 34 | - `UIDeferredMenuElement` to async provide menu items 35 | - `UIContextMenuInteraction` to modify or replace provided menu `updateVisibleMenu(_ block menu: (UIMenu) -> UIMenu)` 36 | - Use `UIContextMenuInteraction.rich` to display previews and `.compact` to only show a menu 37 | - New `UIBarButtonItem` initializers `init(systemItem:primaryAction:menu:)`, `init(title:image:primaryAction:menu:)` 38 | - New `UIBarButtonItem` `.fixedSpace()` and `.flexibleSpace` 39 | - `UIButton` can finally be initialized using an `UIAction`: `init(type:primaryAction:)` -> **native block based API** 40 | - `UISegmentedControls` can now finally be initialized using `UIActions` -> **native block based API** -------------------------------------------------------------------------------- /summaries/2020/10056.md: -------------------------------------------------------------------------------- 1 | ## Optimize the interface of your Mac Catalyst app 2 | 3 | https://developer.apple.com/wwdc20/10056 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10057.md: -------------------------------------------------------------------------------- 1 | ## Identify trends with the Power and Performance API 2 | 3 | https://developer.apple.com/wwdc20/10057 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10060.md: -------------------------------------------------------------------------------- 1 | ## Design high quality Siri media interactions 2 | 3 | https://developer.apple.com/wwdc20/10060 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10061.md: -------------------------------------------------------------------------------- 1 | ## Expand your SiriKit Media Intents to more platforms 2 | 3 | https://developer.apple.com/wwdc20/10061 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10063.md: -------------------------------------------------------------------------------- 1 | ## Background execution demystified 2 | 3 | https://developer.apple.com/wwdc20/10063 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10068.md: -------------------------------------------------------------------------------- 1 | ## What's new in SiriKit and Shortcuts 2 | 3 | https://developer.apple.com/wwdc20/10068 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10071.md: -------------------------------------------------------------------------------- 1 | ## Evaluate and optimize voice interaction for your app 2 | 3 | https://developer.apple.com/wwdc20/10071 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10073.md: -------------------------------------------------------------------------------- 1 | ## Empower your intents 2 | 3 | https://developer.apple.com/wwdc20/10073 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10074.md: -------------------------------------------------------------------------------- 1 | ## Decipher and deal with common Siri errors 2 | 3 | https://developer.apple.com/wwdc20/10074 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10076.md: -------------------------------------------------------------------------------- 1 | ## Diagnose performance issues with the Xcode Organizer 2 | 3 | https://developer.apple.com/wwdc20/10076 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10077.md: -------------------------------------------------------------------------------- 1 | ## Eliminate animation hitches with XCTest 2 | 3 | https://developer.apple.com/wwdc20/10077 4 | 5 | Presenter: _Tanuja Mohan_ 6 | 7 | - **Hitch:** A frame appears on screen later than expected 8 | - **VSYNC:** Time the screen swaps the frame onto the display 9 | - **Hitch time:** Time in *ms* that a frame is late to display 10 | - **Hitch ratio:** Hitch time in **ms** per second for a given duration 11 | - Apple doesn't use frames per second (fps) since: 12 | - 60 or 120 fps is not always the desired target 13 | - Display may intentionally not be updated 14 | - Target frame rate may intentionally be lower than possible 15 | - Hitch ratio is always comparable across tests, following ratios are recommended: 16 | - Good: < 5ms/s 17 | - Warning: 5..10ms/s - users will start recognizing hitches 18 | - Critical: >10ms/s 19 | - Can be measured using `XCTestMetrics` and unit tests or for production apps using `MetricsKit` and Xcode Organizer 20 | - `XCTOSSignpostMetric` gives you the following when using an animation os_signpost interval: 21 | - Duration 22 | - Total count of hitches 23 | - Total duration of hitches 24 | - Hitch time ratio 25 | - Frame rate 26 | - Frame count 27 | - Specify an animation os_signpost interval by: 28 | - `os_signpost(.animationBegin, log: logHandle, name: "performanceAnimationInterval")` 29 | - `os_signpost(.end, log: logHandle, name: "performanceAnimationInterval")` 30 | - UIKit has pre-defined metrics: 31 | - `XCTOSSignpostMetric.navigationTransitionMetric` 32 | - `XCTOSSignpostMetric.customNavigationTransitionMetric` 33 | - `XCTOSSignpostMetric.scrollDecelerationMetric` 34 | - `XCTOSSignpostMetric.scrollDraggingMetric` 35 | - Application state can be reset to avoid tests influencing themselves: `XCTMeasureOptions().invocationOptions = [.manualStop]` 36 | - Listen to a live testing session at [8:15](https://developer.apple.com/wwdc20/10077/?time=498) -------------------------------------------------------------------------------- /summaries/2020/10078.md: -------------------------------------------------------------------------------- 1 | ## Why is my app getting killed? 2 | 3 | https://developer.apple.com/wwdc20/10078 4 | 5 | Presenter: _Andy Aude_ 6 | 7 | - **Most common reasons why apps can be terminated in the background** 8 | - **Crash** 9 | - Segmentation fault 10 | - Illegal instruction 11 | - Asserts and uncaught exceptions 12 | - **CPU resource limit** 13 | - High sustained CPU load in background 14 | - Energy Exception Report 15 | - Xcode Organizer 16 | - [`MXCPUExceptionDiagnostic`](https://developer.apple.com/documentation/metrickit/mxcpuexceptiondiagnostic) 17 | - Reports contain call stack points out hotspots in code 18 | - Consider moving work into [`BGProcessingTask`](https://developer.apple.com/documentation/backgroundtasks/bgprocessingtask) 19 | - **Watchdog** 20 | - Long hang during key app transitions 21 | - `application(_:didFinishLaunchingWithOptions:)` 22 | - `applicationDidEnterBackground(_:)` 23 | - `applicationWillEnterForeground(_:)` 24 | - These transitions have a time limit on the order of 20 seconds 25 | - Terminations are disabled in Simulator and in the Debugger 26 | - Eliminate deadlocks, infinite loops, synchronous work 27 | - Report available via [`MXCrashDiagnostic`](https://developer.apple.com/documentation/metrickit/mxcrashdiagnostic) 28 | - **Memory limit exceeded** 29 | - App using too much memory 30 | - Same limit for foreground and background 31 | - Use Instruments and Memory Debugger 32 | - Keep in mind older devices 33 | - **Memory pressure exit** (jetsam) 34 | - Not a bug with your app 35 | - Most common termination 36 | - System freeing up memory for active applications 37 | - Reducing jetsame rate 38 | - Aim for less than 50MB in background 39 | - Upon background flush state to disk, clear out image views, drop caches 40 | - Recovering from jetsame 41 | - Save state upon entering background 42 | - Adopt UIKit State Restoration 43 | - User should not realize app was terminated 44 | - **Background task timeout** 45 | - [`UIApplication.beginBackgroundTask(expirationHandler:)`](https://developer.apple.com/documentation/uikit/uiapplication/1623031-beginbackgroundtask) 46 | - [`UIApplication.endBackgroundTask(_:)`](https://developer.apple.com/documentation/uikit/uiapplication/1622970-endbackgroundtask) 47 | - Failure to end the task explicitly result in termination 48 | - Counts exposed via [`MXBackgroundExitData`](https://developer.apple.com/documentation/metrickit/mxbackgroundexitdata) 49 | - Preventable 50 | - Use the named variant of the UIKit API [`beginBackgroundTask(withName:expirationHandler:)`](https://developer.apple.com/documentation/uikit/uiapplication/1623051-beginbackgroundtask) 51 | - Terminations do not occur in Debugger 52 | - New console message in iOS 13.4 (_Background Task DatabaseTransaction was created over 30 seconds ago. In Applications running in the background, this creates a risk of termination. Remember to call `endBackgroundTask` for your task in a timely manner to avoid this._) 53 | - Expiration handler 54 | - Implement an `expirationHandler` 55 | - Call `endBackgroundTask(_:)` inside the handler 56 | - Do not begin new work 57 | - Do not rely on it exclusively 58 | - Add telemetry at the start and end of each expiration handler 59 | - Inspect [`MXMetricPayload`](https://developer.apple.com/documentation/metrickit/mxmetricpayload) 60 | - Check [`backgroundTimeRemaining`](https://developer.apple.com/documentation/uikit/uiapplication/1623029-backgroundtimeremaining) 61 | - Only start work if plenty of time remains 62 | - Unsafe to begin tasks with < 5 seconds remaining 63 | - Avoid leaking [`UIBackgroundTaskIdentifier`](https://developer.apple.com/documentation/uikit/uibackgroundtaskidentifier) 64 | - **New MetricKit API (iOS 14)** 65 | - [`MXBackgroundExitData`](https://developer.apple.com/documentation/metrickit/mxbackgroundexitdata) shows how often these terminations happen providing counts of each termination type 66 | - `cumulativeBadAccessExitCount` 67 | - `cumulativeIllegalInstructionExitCount` 68 | - `cumulativeAbnormalExitCount` 69 | - `cumulativeMemoryResourceLimitExitCount` 70 | - `cumulativeMemoryPressureExitCount` 71 | - `cumulativeSuspendedWithLockedFileExitCount` 72 | - `cumulativeAppWatchdogExitCount` 73 | - `cumulativeBackgroundTaskAssertionTimeoutExitCount` 74 | - `cumulativeNormalExitCount` 75 | - Crash reporting via MetricKit 76 | - Diagnostics on a per-device basis 77 | - Ability to get crash info programmatically directly from the device 78 | - [`MXCrashDiagnostic`](https://developer.apple.com/documentation/metrickit/mxcrashdiagnostic) 79 | - Stack trace 80 | - Signal 81 | - Exception code 82 | - Termination reason 83 | - Check out [What's New in MetricKit](https://github.com/Blackjacx/WWDC#whats-new-in-metrickit) to get detailed information 84 | - **How to improve multi-tasking experience?** 85 | - Identify and fix terminations 86 | - Reduce memory usage 87 | - Implement state restoration 88 | -------------------------------------------------------------------------------- /summaries/2020/10081.md: -------------------------------------------------------------------------------- 1 | ## What's new in MetricKit 2 | 3 | https://developer.apple.com/wwdc20/10081 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10083.md: -------------------------------------------------------------------------------- 1 | ## Integrate your app with Wind Down 2 | 3 | https://developer.apple.com/wwdc20/10083 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10084.md: -------------------------------------------------------------------------------- 1 | ## Feature your actions in the Shortcuts app 2 | 3 | https://developer.apple.com/wwdc20/10084 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10086.md: -------------------------------------------------------------------------------- 1 | ## Design for intelligence: Apps, evolved 2 | 3 | https://developer.apple.com/wwdc20/10086 4 | 5 | Presenter: _Mark Mikin_ 6 | 7 | - This is one of those "why" sessions. Why we should build something? 8 | - **Intelligent System Experience** 9 | - The main idea is to be proactive 10 | - Intelligence is how the OS works with the apps that people use every day to make the "every day" easier for people 11 | - Intelligence is design (it should be viewed as a design practice) 12 | - **Living design**. What is that? 13 | - The core job of the designer is to help people accomplish something 14 | - One of the key ways a designer can leverage this is by using elements familiar to the user 15 | - People use a signifier or a symbol 16 | - For example, "Share" button. In the case of iOS, almost everyone can easily recognize the "default" share symbol because it consistently gets used across a lot of apps 17 | - Intelligence is a platform convention, it's in a static glyph or icon, like the share button. It's live 18 | - Intelligence manifests itself by adapting to how the system, the platform, conforms to how people use their devices 19 | - Intelligence is expected (people expect their devices and apps to be smart) 20 | - **Extensibility** 21 | - Intelligence is powered by an app through extensibility 22 | - Apps have actually been evolving over time 23 | - A lot of the technologies built by Apple that are foundational to the intelligence system (starting from App Extensions debuted at WWDC 2014 and ending with App Clips so far) 24 | - It's built to help growing ecosystem of devices and apps 25 | - Intelligence system is built from a foundation of respecting users privacy 26 | - In the next sessions about system intelligence, Apple's team will try to cover it from a few different angles 27 | -------------------------------------------------------------------------------- /summaries/2020/10087.md: -------------------------------------------------------------------------------- 1 | ## Design for intelligence: Make friends with "The System" 2 | 3 | https://developer.apple.com/wwdc20/10087 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10088.md: -------------------------------------------------------------------------------- 1 | ## Design for intelligence: Discover new opportunities 2 | 3 | https://developer.apple.com/wwdc20/10088 4 | 5 | Presenters: _JP Lacerda_ 6 | 7 | - **Intelligence** 8 | - Goal to make your Apple products knowing/understanding you 9 | - Achieve and Discover more, Less tedium, Fewer distraction 10 | - System helps you through suggestions from **Siri**, **Shortcuts**, **Suggestions**, **Widgets** 11 | - **Siri / Shortcuts** 12 | - Helps you getting things done by a single tap or asking Siri 13 | - Helps you setting up simple and complex operations ran, e.g. just by your voice 14 | - View shortcuts through the new Siri suggestion Widget displayed just at the right time to you using the new smart stack and on-device intelligence 15 | - Siri suggestions automatically appear at the right place and time, e.g. restaurant reservations are added automatically to the calendar 16 | - Siri can remind you when it's time to leave right on your lock screen 17 | - Get Siri suggestions in Maps to e.g. conveniently find your way to the Airport 18 | - **Privacy / Analytics** 19 | - Apple chose opt-in to enable analytics on your device to help improve their intelligence services 20 | - **Examples** 21 | - 82% of all notification-based check-ins come from suggestions (data from some Airline apps) 22 | - Apps are visible on average 5x more per day via lock screen, sharing suggestion, search or other entry points 23 | - **Give your app superpowers** 24 | - Think about which entry points are suitable for your app 25 | - Consider how you can measure the impact of intelligence on your app 26 | - Understand intelligence from the users perspective 27 | -------------------------------------------------------------------------------- /summaries/2020/10089.md: -------------------------------------------------------------------------------- 1 | ## Discover Core Image debugging techniques 2 | 3 | https://developer.apple.com/wwdc20/10089 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10090.md: -------------------------------------------------------------------------------- 1 | ## Decode ProRes with AVFoundation and VideoToolbox 2 | 3 | https://developer.apple.com/wwdc20/10090 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10091.md: -------------------------------------------------------------------------------- 1 | ## Write tests to fail 2 | 3 | https://developer.apple.com/wwdc20/10091 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10093.md: -------------------------------------------------------------------------------- 1 | ## Build for the iPadOS pointer 2 | 3 | https://developer.apple.com/wwdc20/10093 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10094.md: -------------------------------------------------------------------------------- 1 | ## Handle trackpad and mouse input 2 | 3 | https://developer.apple.com/wwdc20/10094 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10095.md: -------------------------------------------------------------------------------- 1 | ## The Push Notifications primer 2 | 3 | https://developer.apple.com/wwdc20/10095 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10096.md: -------------------------------------------------------------------------------- 1 | ## Explore Packages and Projects with Xcode Playgrounds 2 | 3 | https://developer.apple.com/wwdc20/10096 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10097.md: -------------------------------------------------------------------------------- 1 | ## Advances in UICollectionView 2 | 3 | https://developer.apple.com/wwdc20/10097 4 | 5 | Presenters: _Steve Breen_ 6 | 7 | - **Diffable Data Source** 8 | - Recap 9 | - `UICollectionView` was first released in iOS 6 10 | - `UICollectionView` was built on the separation of concerns between the data, or the "what"; from the layout, the "where" content is being rendered. 11 | - For layout, an abstract class is `UICollectionViewLayout`, and a concrete subclass is `UICollectionViewFlowLayout`. 12 | - For the presentation, there are `UICollectionViewCell` and `UICollectionReusableView`. 13 | - In iOS 13, there are two new components for Data and Layout respectively with Diffable Data Source and Compositional Layout. 14 | - Section snapshot [New in iOS 14] 15 | - Allow data sources to be more composable into section-sized chunks of data. 16 | - Allow modeling of hierarchical data, which is needed to support rendering outline-style UIs. 17 | - **Compositional Layout** 18 | - Recap 19 | - Compositional Layout was introduced in iOS 13 20 | - Allows us to build rich, complex layouts by composing smaller, easy-to-reason bits of layout together. 21 | - Describes what the layout to look like instead of how the layout ought to work. 22 | - Section-specific layouts to help you build more sophisticated UIs 23 | - Support for orthogonal scrolling sections. 24 | - **Lists [New in iOS 14]** 25 | - `UITableView`-like sections right in to any `UICollectionView`. 26 | - Rich with features you've come to expect from `UITableView`, like swipe actions and many common cell layouts. 27 | - Easily mix and match Lists with other kinds of layout on a per-section basis. 28 | - Concrete `UICollectionViewListCell`, header and footer support 29 | - New Sidebar appearance we see in many iPadOS system apps. 30 | - **Modern Cells** 31 | - Cell registrations 32 | - Simple, reusable way to set up a cell from a view model. 33 | - Eliminate the extra step of registering a cell class or nib to associate it with a reuse identifier. 34 | - Use a generic registration type which incorporates a configuration closure for setting up a new cell from a view model. 35 | - Cell content configurations. 36 | - Standardized layouts for cells similar to what is seen in `UITableView` standard cell types. 37 | - Can be used with any cell, or even a generic UIView. 38 | - Background configurations. 39 | - Similar to content configurations but apply to any cell's background with the ability to adjust properties such as color, border styles and more. -------------------------------------------------------------------------------- /summaries/2020/10098.md: -------------------------------------------------------------------------------- 1 | ## What's new in Universal Links 2 | 3 | https://developer.apple.com/wwdc20/10098 4 | 5 | Presenter: _Christopher Linn_ 6 | 7 | - **Universal Links** 8 | - HTTPS URLs that represent your content both on the web and in your app 9 | - Allow to open your app instead of browser 10 | - Enable by adding an entitlement to your app and a JSON file to your web server - creates secure association between both 11 | - Custom URL schemes not recommended anymore - switch as soon as possible 12 | - **Support for watchOS** 13 | - Same functionalities like on iOS, tvOS and macOS 14 | - Apply entitlement to your WatchKit extension - not your WatchKit App 15 | - Use `[WKExtensionDelegate.handle(_ userActivity: NSUserActivity) -> Void](https://developer.apple.com/documentation/watchkit/wkextensiondelegate/2798966-handle)` to handle Universal Links 16 | - Use `[WKExtension.shared().openSystemURL(url)](https://developer.apple.com/documentation/watchkit/wkextension/1628224-opensystemurl)` to open Universal Links in other apps 17 | - Different API on iOS (UIKit) and macOS (AppKit) 18 | - **Universal Links in SwiftUI** 19 | - Now it is possible to handle Universal Links equally on all platforms 20 | - Handle Universal Links using `.onOpenURL { url in /* ... */ }` 21 | - Open Universal Links in other apps using `@Environment (\.openURL) var openURL; let url = /* ... */; openURL(url)` 22 | - **Enhanced Pattern Matching** 23 | - `*` matches zero or more characters greedily 24 | - `?` matches any one character 25 | - `*?` matches at least one character 26 | - `"components": [{ "/": "/sourdough/?*", "caseSensitive": false }]` for case-insensitive pattern matching (macOS Catalina 10.15.5 and iOS 13.5) 27 | - `"components": [{ "/": "/中國哲學書電子化計劃/?*", "percentEncoded": false }]` for Unicode pattern matching (macOS Big Sur and iOS 14) 28 | - `"defaults": { "percentEncoded": false, "caseSensitive": false }` to specify defaults for all components (macOS Big Sur and iOS 14) 29 | - Apply `defaults` to "details" (includes app IDs and components) or only to "components" to match all elements of the respective arrays 30 | - **Substitution Variables** 31 | - Named lists of substrings to match against 32 | - Names can contain anything but `$`, `(`, `)` 33 | - Names are always case sensitive in patterns 34 | - Values can contain `?` and `*` but no other substitution variables 35 | - Values are case-sensitive by default 36 | - Available today in macOS Catalina 10.15.6 and iOS 13.5 37 | - **Predefined Substitution Variables** 38 | - `$(alpha)* - match upper and lower case letters` 39 | - `$(upper),$(lower)* - match either upper or lower case letters` 40 | - `$(alnum)* - match upper and lower case letters including digits` 41 | - `$(digit),$(xdigit)* - match either digits or hexadecimal digits` 42 | - `$(region)** - match every ISO region code defined by Foundation: Locale.isoRegionCodes` 43 | - `$(lang)** - match every ISO language code defined by Foundation: Locale.isoLanguageCodes` 44 | - Use `"exclude": true` to exclude specific patterns 45 | - Substitution variables can be used to form different combinations of patterns, e.g. show different menus for different countries 46 | - **Example** 47 | ```json 48 | { 49 | "appLinks": { 50 | "substitutionVariables": { 51 | "food": [ "burrito", "sushi" ], 52 | "Canadian food": [ "burrito", "poutine", "tête-de-violon" ] 53 | }, 54 | "details": [{ 55 | "appIDs": [ "ABCDEF.com..example.restaurant" ], 56 | "components": [ 57 | { "/": "$(lang)_CA/$(Canadian food)/", "percentEncoded": false } 58 | { "/": "$(lang)_CA/$(food)/", "exclude": true } 59 | { "/": "$(lang)_$(region)/$(food)/" } 60 | ] 61 | }] 62 | } 63 | } 64 | ``` 65 | - **Universal Links Workflow** 66 | - After download of an app the system checks its entitlements to see if it needs any app-association files, and downloads them 67 | - App association files can now be downloaded in parallel by connecting to an **Apple CDN** instead of opening one connection per downloaded app 68 | - CDN is dedicated to associated domains 69 | - CDN uses single HTTP/2 connection for all associated domains on a device 70 | - CDN Reduces load on your server 71 | - CDN routes devices to a known-good, known-fast connection 72 | - **Alternate Modes** for internal domains not reachable from an Apple CDN 73 | - **Managed Mode** when distributing within your organization (see [What's New in Managing Apple Devices (WWDC20)](https://github.com/Blackjacx/WWDC#Whats-new-in-managing-Apple-devices)) 74 | - System trusted root certificate 75 | - MDN admin must opt-in 76 | - Works using any profile 77 | - **Developer Mode** when building your app 78 | - Use any SSL certificate 79 | - User must opt-in from `iOS Settings > Developer > Associated Domains Development` or for macOS using the command `swcutil developer-mode -e true` 80 | - Only works using a development profile 81 | - Server path for all modes: `https://example.com/.well-known/apple-app-site-association` 82 | - Specify domains for different modes in the entitlements as `applinks:testing.example.com?mode=developer` (or `?mode=managed` or `?mode=developer+managed`) in an array under the key `com.apple.developer.associated-domains` 83 | -------------------------------------------------------------------------------- /summaries/2020/10099.md: -------------------------------------------------------------------------------- 1 | ## Explore the Action & Vision app 2 | 3 | https://developer.apple.com/wwdc20/10099 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/101.md: -------------------------------------------------------------------------------- 1 | ## Keynote ★ 2 | 3 | https://developer.apple.com/wwdc20/101/ 4 | 5 | - **App Library** 6 | - Automatically created at the end of your app pages on the Home Screen 7 | - Makes it easier than ever to get to your apps 8 | - **Widgets on Home Screen** 9 | - Richer UI - more possibilities 10 | - Different sizes to choose one that best fits your needs 11 | - Droppable on the home screen 12 | - Widget gallery to explore all widgets 13 | - **SmartStack** as intelligent assistant which enables you to scroll through your widgets 14 | - **Picture in Picture** on iPhone 15 | - Swipe to the side, out of the screen, and audio keeps playing 16 | - Video keeps playing when switching apps 17 | - **Siri** 18 | - Got smarter and has a new interface which doesn't block your UI anymore 19 | - Can now send audio messages using the messages app - completely hands free 20 | - **Translate** as new app of offline conversation translate 21 | - Conversation mode when switching to landscape mode in the app 22 | - **Messages** 23 | - Pinning messages to the top of the screen 24 | - Memoji gets hundreds of new options to customize your avatar, including masts, fist-pumps and more 25 | - Group conversations got some ❤️ by adding inline replies and most-active member widget 26 | - **Maps** 27 | - More countries like UK, Ireland and Canada 28 | - It gets easier to find places you love and how you get there in an ecological way 29 | - Maps offers **Guides** that help you discover great new places 30 | - Brand new **cycling** option to reduce your carbon footprint 31 | - **EV-Routing** option to optimize your route for electric cars - e.g. by selecting routes with charging station on your way 32 | - **CarPlay** 33 | - New wallpaper option 34 | - New categories for CarPlay apps: Parking, EV-Charging, and Quick-Food ordering 35 | - Car Key API - first supported by BMW - enable open/close/start your car 36 | - **App Clips** as small, fast parts of an app, designed for speed 37 | - A way to discover what the App Store has to offer 38 | - Launchable from the web, by NFC tags, QR codes or the brand new Apple designed tags 39 | - Needs to be smaller than 10 MB 40 | - Use Sign in With Apple to provide the most seamless app experience 41 | - Use Apply Pay to allow quick payments 42 | - Option to download the full app 43 | - **iPadOS** 44 | - Photos app gets an all new side bar - new way to navigate and organize your photos 45 | - Incoming calls become unobtrusive using notification style UI (available for all apps: WhatsApp, Skype, ...) • available for iOS too 46 | - New searching experience 47 | - **Apple Pencil** 48 | - **Scribble** lets you hand-write in any text field. iOS converts your writing then to text 49 | - **Smart Selection** lets you select single words / characters you've written using your pencil using iOS text recognition features 50 | - DataDetectors are used to automatically detect e.g. phone numbers, email addresses 51 | - **AirPods** 52 | - are now able to automatically switch to new incoming audio sources 53 | - **Spatial Audio** for AirPods Pro (AirPods Motion API) to emulate movie theatre experience using AirPods gyroscope to sync the sound to your head position/orientation 54 | - **watchOS 7** 55 | - Configure your own watch faces styled by your current living style 56 | - Watch faces can now be shared on Websites or via the usual sharing features of watchOS 57 | - Workout app adds dance, cooldown, functional training and more workouts plus it is renamed to **Fitness** 58 | - **Sleep Tracking** is a new app that helps you to get to bed at time using `Wind Down` which dims all distractions (also available in iPhone) 59 | - **Handwashing detection** to make sure you wash as long as you're supposed to (20 seconds shown in demo) 60 | - **Privacy Improvements** 61 | - **Location** only share rough location 62 | - **Camera** ... 63 | - **Tracking Control** require apps to ask before tracking 64 | - **App Privacy** makes data tracked by developers visible to the users before they download the app 65 | - **Home** 66 | - Alliance among different manufacturers to make smart home devices even better 67 | - **Adaptive lighting** to auto-adjust color temperature throughout the day 68 | - **Cameras** get activity zones, richer notifications 69 | - **Face recognition** extends to Home Pod 70 | - **Camera** content can be displayed on TV via your Apple TV 71 | - **Apple TV** 72 | - Picture in Picture 73 | - Better Airplay in full 4K 74 | - Apple TV+ already on over 1 billion devices 75 | - **Foundation** as newest production only available on Apple TV+ 76 | - **macOS Big Sur** 77 | - use of a lot of translucency 78 | - Design refresh for all system apps 79 | - New side and compact, space efficient toolbars 80 | - Control center now on the mac 81 | - **Notification Center** 82 | - Notification grouping 83 | - iOS widgets also available on the mac 84 | - **Messages** with new search, photo picker, messages effects, pin conversations, inline replies and more 85 | - **Maps** with indoor-maps, favorites, ETA from friends and all of it implemented using Catalyst 86 | - **Safari** with 50% faster page loading, Privacy Report via toolbar button, Web Extensions API, built-in translation 87 | - **Mac** 88 | - Processor-transition to **Apple Silicon** - Apple's own processor line - bye bye Intel 👋 89 | - **Universal 2** is the new universal binary type that contains binaries compiled for both architectures 90 | - **Rosetta 2** lets existing app run on new architectures from day one by making them compatible at installation time 91 | - Supports iPhone and iPad apps **directly** -------------------------------------------------------------------------------- /summaries/2020/10100.md: -------------------------------------------------------------------------------- 1 | ## Meet Watch Face Sharing 2 | 3 | https://developer.apple.com/wwdc20/10100 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10103.md: -------------------------------------------------------------------------------- 1 | ## Design great widgets 2 | 3 | https://developer.apple.com/wwdc20/10103 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10104.md: -------------------------------------------------------------------------------- 1 | ## Adopt the new look of macOS 2 | 3 | https://developer.apple.com/wwdc20/10104 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10105.md: -------------------------------------------------------------------------------- 1 | ## Build for iPad 2 | 3 | https://developer.apple.com/wwdc20/10105 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10106.md: -------------------------------------------------------------------------------- 1 | ## Meet Scribble for iPad 2 | 3 | https://developer.apple.com/wwdc20/10106 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10107.md: -------------------------------------------------------------------------------- 1 | ## What's new in PencilKit 2 | 3 | https://developer.apple.com/wwdc20/10107 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10109.md: -------------------------------------------------------------------------------- 1 | ## Support hardware keyboards in your app 2 | 3 | https://developer.apple.com/wwdc20/10109 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10110.md: -------------------------------------------------------------------------------- 1 | ## Support local network privacy in your app 2 | 3 | https://developer.apple.com/wwdc20/10110 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10111.md: -------------------------------------------------------------------------------- 1 | ## Boost performance and security with modern networking 2 | 3 | https://developer.apple.com/wwdc20/10111 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10113.md: -------------------------------------------------------------------------------- 1 | ## Build local push connectivity for restricted networks 2 | 3 | https://developer.apple.com/wwdc20/10113 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10114.md: -------------------------------------------------------------------------------- 1 | ## iPad and iPhone apps on Apple Silicon Macs 2 | 3 | https://developer.apple.com/wwdc20/10114 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10115.md: -------------------------------------------------------------------------------- 1 | ## AutoFill everywhere 2 | 3 | https://developer.apple.com/wwdc20/10115 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10116.md: -------------------------------------------------------------------------------- 1 | ## VoiceOver efficiency with custom rotors 2 | 3 | https://developer.apple.com/wwdc20/10116 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10117.md: -------------------------------------------------------------------------------- 1 | ## Accessibility design for Mac Catalyst 2 | 3 | https://developer.apple.com/wwdc20/10117 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10118.md: -------------------------------------------------------------------------------- 1 | ## Create app clips for other businesses 2 | 3 | https://developer.apple.com/wwdc20/10118 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10119.md: -------------------------------------------------------------------------------- 1 | ## Introduction to SwiftUI 2 | 3 | https://developer.apple.com/wwdc20/10119 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10120.md: -------------------------------------------------------------------------------- 1 | ## Streamline your app clip 2 | 3 | https://developer.apple.com/wwdc20/10120 4 | 5 | Presenters: _Yongjun Zhang, Luming Yin_ 6 | 7 | - **Best practices** 8 | - Focus on essential tasks 9 | - Limit the features. Reserve complex features for your app 10 | - Require all assets for initial experience 11 | - Do not include splash screens 12 | - Avoid requiring people to sign up _before_ finishing their task 13 | - Only ask for location and notification permissions if needed (more on this below) 14 | - Make sure your App Clip has the same name and icon as your app 15 | - Put shared assets in a shared asset catalog 16 | - Authentication 17 | - Support Sign in with Apple 18 | - Use `ASWebAuthenticationSession` for other federated login 19 | - Offer username and password login for existing users 20 | - Offer "Sign In With Apple" upgrade in the app 21 | - For privacy reasons, and because App Clips are ephemeral, some contents are not available to App Clips, such as HealthKit info 22 | - App Clips can request permission to use Bluetooth, the camera, and microphone 23 | - **Streamlining Transactions** 24 | - 2 new types of ephemeral permissions: Location and Notification 25 | - Allows App Clips to check if the user is within a region, **without prompting for location permission** 26 | - Add `NSAppClipRequestLocationConfirmation` with value `true` in your `Info.plist` to enable this 27 | - Supports checking a region with a radius of up to 500 meters 28 | - Allows App Clips to send notifications for up to 8 hours after each launch, **without prompting for notification permission**. 29 | - Add `NSAppClipRequestEphemeralUserNotification` with value `true` in your Info.plist to enable this 30 | - Check the authorization status in the `NotificationSettings`, under the new `.ephemeral` status 31 | - Users can explicitly disable these permissions via App Clip settings panel 32 | - App Clips can prompt the user for full Location and Notifications access, although discouraged 33 | - Strongly suggest using ApplePay 34 | - Strongly suggest using "Sign In With Apple" 35 | - Use `AuthenticationServices` API to sign your users in without showing a login screen (assuming they have already previously signed up in your website for instance) 36 | - **Transition users to your app** 37 | - iOS suggests downloading your app from App Clip experiences, banners and App Clip settings 38 | - You can embed `StoreKit` `SKOverlay` in a view 39 | - Suggestion: display this overlay only after the user finishes their task, e.g. after payment 40 | - **Transfer data on device with a secure App Group** 41 | - Only accessible between your App Clip and your app 42 | - Once user downloads the app, the App Group will be transferred to the app after the App Clip is deleted 43 | - Migrate your "Sign In With Apple" session from your App Clip by persisting the user ID in the secure App Group. Use `ASAuthorizationAppleIDProvider` to verify the user's session without prompting UI -------------------------------------------------------------------------------- /summaries/2020/10138.md: -------------------------------------------------------------------------------- 1 | ## Discover AppleSeed for IT and Managed Software Updates 2 | 3 | https://developer.apple.com/wwdc20/10138 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10139.md: -------------------------------------------------------------------------------- 1 | ## Leverage enterprise identity and authentication 2 | 3 | https://developer.apple.com/wwdc20/10139 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10140.md: -------------------------------------------------------------------------------- 1 | ## Build location-aware enterprise apps 2 | 3 | https://developer.apple.com/wwdc20/10140 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10142.md: -------------------------------------------------------------------------------- 1 | ## Build scalable enterprise app suites 2 | 3 | https://developer.apple.com/wwdc20/10142 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10143.md: -------------------------------------------------------------------------------- 1 | ## What's new in Mac Catalyst 2 | 3 | https://developer.apple.com/wwdc20/10143 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10145.md: -------------------------------------------------------------------------------- 1 | ## Design for Game Center 2 | 3 | https://developer.apple.com/wwdc20/10145 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10146.md: -------------------------------------------------------------------------------- 1 | ## Configure and link your app clips 2 | 3 | https://developer.apple.com/wwdc20/10146/ 4 | 5 | Presenters: _Ada Chan, Luming Yin_ 6 | 7 | - **Intro** 8 | - App Clips provide entry points to your users to experience your app with minimal friction. 9 | - Use deep-linked navigation to present the App Clip 10 | - **User Quest** 11 | - User is in a smoothie shop. They see an NFC tag and tap it using the phone. 12 | - An app clip shows up on the phone's lockscreen with summarized detail about that smoothie. 13 | - User taps "open" and a single screen of your app shows up. 14 | - User can then proceed to the payment via Apple Pay. 15 | - **Activation** 16 | - Tapping NFC tags or scanning QR codes - they're just deep links after all (a URL) 17 | - Maps and Siri Nearby Suggestions (for registered businesses) 18 | - Smart app banner in your website (shown in Safari and Messages) 19 | - Apple App Clip codes will be introduced later this year (it's a prettified QR code) 20 | - If the user already has the your app installed, following an App Clip link will open the full app instead. 21 | - **Setup** 22 | - Configure web server and App Clip for link handling 23 | - Web Server: Update the apple-app-site-association file 24 | - App Clip: Add associated domains entitlement and handle NSUserActivity 25 | - Configure App Clip default and advanced experiences on App Store Connect 26 | - Layout requirements: 27 | - Title: 18 chars limit 28 | - Subtitle: 43 chars limit 29 | - Image: 30 | - Size: 3000 x 2000px 31 | - Aspect Ratio: 3:2 32 | - Format: png/jpg 33 | - Transparency: No 34 | - **Best Practices** 35 | - URL mapping is based on **most specific** prefix match against registered App Clip experience URLs 36 | - Your App Clip must be able to launch using an exact registered URL. For example: 37 | - App registers https://bikesrental.com/rent instead of https://website.com/rent?bikeID=2 38 | - When receiving https://website.com/rent?bikeID=2, it should be able to deliver the https://website.com/rent App Clip 39 | - App is responsible for parsing the remaining arguments and presenting the specific bike with ID 2 40 | - You can also register a more specific URL if you want to provide a different and more specific App Clip experience for it 41 | - Configure the Smart App Banner to open App Clip (add this if the content of your web page can be delivered as a better and more streamlined app experience) 42 | - Add/update your website's HTML to add the Smart App Banner meta tag 43 | - **Test** 44 | - Specify an App Clip URL under the `_XCAppClipURL` environment variable to launch App Clip from Xcode 45 | - TestFlight - new App Clips section in App Store Connect -------------------------------------------------------------------------------- /summaries/2020/10147.md: -------------------------------------------------------------------------------- 1 | ## Distribute binary frameworks as Swift packages 2 | 3 | https://developer.apple.com/wwdc20/10147 4 | 5 | Presenters: _Boris Buegling_ 6 | 7 | - **Xcode 11** 8 | - Introduction of Swift Packages to distribute libraries as source code 9 | - Introduction of XCFrameworks to distribute closed-source binary frameworks and libraries 10 | - **Xcode 12** adds support for binary dependencies 11 | - **Binary Dependencies (XCFrameworks)** 12 | - Used to distribute closed-source frameworks, static and dynamic libraries 13 | - Contain a single module 14 | - Easily addable via the `Xcode > File > Swift Packages > Add Package Dependency` 15 | - Has sub directories corresponding to platform and target environment, each containing a framework 16 | - Declare dependency in your Package.swift using `.package(url: "https://github.com/owner/package", from: "1.0.0")` 17 | - **Distribute Binary Frameworks as a Swift Package** 18 | - New target type `.binaryTarget(name: "Emoji", url: https://example.com/Emoji/Emoji-1.0.0.xcframework.zip, checksum: "6d98....")` 19 | - Binary targets can be offered to clients just like regular targets 20 | - **Binary Targets** 21 | - Use XCFrameworks 22 | - Only supported on Apple platforms 23 | - HTTPS or path based - paths can point to files inside your package 24 | - Name corresponds to the module name 25 | - Use semantic versioning 26 | - **Create your own Binary Dependency** 27 | - Create `File > New Swift Package` 28 | - Replace template-added targets and add a binary target 29 | - Compute the checksum using `swift package compute-checksum Emoji-1.0.0.xcframework.zip` 30 | - Set `Build Libraries for Distribution` build setting 31 | - Archive each variant 32 | - `xcodebuild -create-xcframework` 33 | - See [2019 session "Binary frameworks in Swift"](https://developer.apple.com/wwdc19/416) or read the [session notes](https://github.com/Blackjacx/WWDC/tree/2019#binary-frameworks-in-swift) which is way quicker 34 | - Tradeoffs of Binary Dependencies 35 | - Harder to debug since source code is missing 36 | - You won't be able to compile for your specific platform if not included by the author -------------------------------------------------------------------------------- /summaries/2020/10148.md: -------------------------------------------------------------------------------- 1 | ## Inspect, modify, and construct PencilKit drawings 2 | 3 | https://developer.apple.com/wwdc20/10148 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10149.md: -------------------------------------------------------------------------------- 1 | ## Structure your app for SwiftUI previews 2 | 3 | https://developer.apple.com/wwdc20/10149 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10151.md: -------------------------------------------------------------------------------- 1 | ## What's new in CareKit 2 | 3 | https://developer.apple.com/wwdc20/10151 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10152.md: -------------------------------------------------------------------------------- 1 | ## Use model deployment and security with Core ML 2 | 3 | https://developer.apple.com/wwdc20/10152 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10153.md: -------------------------------------------------------------------------------- 1 | ## Get models on device using Core ML Converters 2 | 3 | https://developer.apple.com/wwdc20/10153 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10156.md: -------------------------------------------------------------------------------- 1 | ## Control training in Create ML with Swift 2 | 3 | https://developer.apple.com/wwdc20/10156 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10158.md: -------------------------------------------------------------------------------- 1 | ## Deliver a better HLS audio experience 2 | 3 | https://developer.apple.com/wwdc20/10158 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10159.md: -------------------------------------------------------------------------------- 1 | ## Build an Endpoint Security app 2 | 3 | https://developer.apple.com/wwdc20/10159 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10160.md: -------------------------------------------------------------------------------- 1 | ## Formatters: Make data human-friendly 2 | 3 | https://developer.apple.com/wwdc20/10160 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10162.md: -------------------------------------------------------------------------------- 1 | ## Design for location privacy 2 | 3 | https://developer.apple.com/wwdc20/10162 4 | 5 | Presenter: _Rachel Needle_ 6 | 7 | - Today people share precise location data 8 | - **In iOS 14, Core Location allowing users to control and share their approximate location** 9 | - All kinds of apps will be impacted by this change (even Apple's apps) 10 | - **How to adapt the app** to work without precise location? 11 | - **Prioritize user control** 12 | - Give everyone control over their location data they share and respect their preferences 13 | - Don't require precise location 14 | - Replace precise data with approximate where possible 15 | - Identify where else you use precise location and remove non-essential uses of precise location 16 | - **Build trust through transparency** 17 | - Communicate with people about what data your app uses and how that data is used 18 | - Make status easy to access 19 | - Allow users to change their decision 20 | - **Offer proportional value** 21 | - Only ask for precise location when you really need it 22 | - Request precise location in response to user action 23 | - Position the request close to the value it provides 24 | - Consider checking out these two sessions to **get detailed information** 25 | - [Build trust through better privacy](https://github.com/Blackjacx/WWDC#build-trust-through-better-privacy) 26 | - [What's new in location](https://github.com/Blackjacx/WWDC#whats-new-in-location) 27 | -------------------------------------------------------------------------------- /summaries/2020/10163.md: -------------------------------------------------------------------------------- 1 | ## Advancements in the Objective-C runtime 2 | 3 | https://developer.apple.com/wwdc20/10163 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10164.md: -------------------------------------------------------------------------------- 1 | ## XCTSkip your tests 2 | 3 | https://developer.apple.com/wwdc20/10164 4 | 5 | Presenters: _Wil Addario-Turner_ 6 | 7 | - Tests can pass or fail, or with `XCTSkip`, be marked with an explicit "skip" result. 8 | - In Xcode 11.4, `XCTSkip`, `XCTSkipIf` and `XCTSkipUnless` were introduced to allow skipping tests at runtime. 9 | - Call `throw XCTSkip("message")` and the test will be skipped. 10 | - `XCTSkipIf` skips when the expression is true. `XCTSkipUnless` skips when the expression is false. 11 | - Check the results from the test navigator and the test report with the line where the skip occurred, along with a reason explaining why. 12 | -------------------------------------------------------------------------------- /summaries/2020/10165.md: -------------------------------------------------------------------------------- 1 | ## Embrace Swift type inference 2 | 3 | https://developer.apple.com/wwdc20/10165 4 | 5 | Presenter: _Holly Borla_ 6 | 7 | - **Leveraging type inference** 8 | - A type can be inferred by the compiler given the context surrounding a variable or function 9 | - SwiftUI code relies on type inference for reusable views 10 | - A demo is presented showing a SwiftUI component being built using generics 11 | - **How type inference works in compiler** 12 | - Think of type inference as a puzzle 13 | - It resolves the puzzle by filling in the missing pieces using clues from the source code 14 | - Solving one puzzle can give the compiler more clues on how to solve other puzzles 15 | - **Type inference errors** 16 | - If a puzzle can't be solved, there's an error in the source code 17 | - During type inference, the compiler will record information about errors in source code 18 | - Compiler uses heuristics to attempt to fix errors in order to continue type inference 19 | - Once type inference is done, the compiler will provide actionable error messages based on collected information (some errors might have auto-fixes) 20 | - Swift 5.3 and Xcode 12 improved error handling a lot, showing more meaningful and reliable error messages 21 | - **Using Swift and Xcode to fix compile errors** 22 | - The compiler will leave breadcrumbs about what the compiler was doing when it found an error 23 | - This can help you connect the dots between the error you're seeing on the editor and other files in your project 24 | - Hold **⌥ + ⇧** on an error breadcrumb and drag it to the right of the source editor, to open the source editor and the breadcrumbs details side by side -------------------------------------------------------------------------------- /summaries/2020/10167.md: -------------------------------------------------------------------------------- 1 | ## Safely manage pointers in Swift 2 | 3 | https://developer.apple.com/wwdc20/10167 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10168.md: -------------------------------------------------------------------------------- 1 | ## Explore logging in Swift 2 | 3 | https://developer.apple.com/wwdc20/10168 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10169.md: -------------------------------------------------------------------------------- 1 | ## Swift packages: Resources and localization 2 | 3 | https://developer.apple.com/wwdc20/10169 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10170.md: -------------------------------------------------------------------------------- 1 | ## What's new in Swift 2 | 3 | https://developer.apple.com/wwdc20/10170 4 | 5 | Presenters: _Ted Kremenek, Kyle Macomber_ 6 | 7 | - **Swift Releases** 8 | - Xcode 11.4 - Swift 5.2 9 | - Xcode 12 (beta) - Swift 5.3 10 | - **Runtime Performance** 11 | - Code Size 12 | - Code size is the part of the app that represents the machine code representation of the app's logic 13 | - Swift 5.3 is below 1.5 times the code size of Objective-C version (based on app that ships with iOS) 14 | - Size difference is inevitable because of Swift safety features 15 | - SwiftUI app binary code size can be reduced by 40% (based on MoviesSwiftUI app) 16 | - Memory Layout 17 | - Comparing models with three properties in Obj-C (`NSUUID`, `NSString` and `float`) and Swift (`UUID`, `String`, `Float`) 18 | - In Obj-C, object variables are just pointers which then hold a pointer to their properties 19 | - Swift's use of value types avoid the need to access values via pointers (UUID and Strings) 20 | - Significant memory benefit because it is allocated directly within array storage (contiguous block of memory) 21 | - Heap memory use comparison: 20kB in Swift 5.1 vs 35kB in Obj-C (400 models in array) 22 | - Swift's Standard Library now is below Foundation in the stack which means it can be used to develop low-level frameworks for Objective-C frameworks where previously C has to be used! 23 | - **Diagnostics** 24 | - New diagnostics in the Swift compiler result in more precise and actionable errors 25 | - Additional notes in error messages (SwiftUI as an example) 26 | - More info on [swift.org](https://swift.org/blog/new-diagnostic-arch-overview/) 27 | - **Code completion** 28 | - Much better code completion thanks to improvements in SourceKit 29 | - Code completion for dictionary literals, ternary expressions and more dynamic features like key paths 30 | - Code completion in Xcode 12.0 is 15x faster compared to Xcode 11.5 31 | - **Code Indentation** 32 | - Improved indentation formatting in chained methods calls, tuples, multiline `if` and `guards` 33 | - Improved indentation in SwiftUI as well 34 | - **Debugging** 35 | - Debugger now displays the reason for Swift runtime failure traps 36 | - **Cross-Platform Support** 37 | - Multiple platform support 38 | - Apple Platforms 39 | - Ubuntu 16.04, 18.04, 20.04 40 | - CentOS 8 41 | - Amazon Linux 2 42 | - Windows (coming soon) 43 | - Swift on AWS Lambda 44 | - Runtime is open-source and is available on [GitHub](https://github.com/swift-server/swift-aws-lambda-runtime/) 45 | - **Language** 46 | - [Swift Evolution website](https://apple.github.io/swift-evolution/) 47 | - Multiple trailing closure syntax [SE-0279](https://github.com/apple/swift-evolution/blob/master/proposals/0279-multiple-trailing-closures.md) 48 | - It's important to set the correct base name of the method that will indicate the first trailing closure that its label will be dropped 49 | - Key Path Expressions as Functions [SE-0249](https://github.com/apple/swift-evolution/blob/master/proposals/0249-key-path-literal-function-expressions.md) 50 | - `@main`: Type-Based Program Entry Points [SE-0281](https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md) 51 | - The standardized way to delegate a program's entry point 52 | - Increased availability of implicit self in @escaping closures when reference cycles are unlikely to occur [SE-0269](https://github.com/apple/swift-evolution/blob/master/proposals/0269-implicit-self-explicit-capture.md) 53 | - Now it's possible to add `self` to the capture list 54 | - In Swift 5.3, if self is a structure it can be omitted entirely from the closure 55 | - Multi-Pattern Catch Clauses [SE-0276](https://github.com/apple/swift-evolution/blob/master/proposals/0276-multi-pattern-catch-clauses.md) 56 | - Enum Enhancements 57 | - `Comparable` conformance is now synthesized automatically [SE-0266](https://github.com/apple/swift-evolution/blob/master/proposals/0266-synthesized-comparable-for-enumerations.md) 58 | - Enum cases as protocol witnesses [SE-0280](https://github.com/apple/swift-evolution/blob/master/proposals/0280-enum-cases-as-protocol-witnesses.md) 59 | - Embedded DSL Enhancements 60 | - Builder closures 61 | - Swift 5.3 introduces pattern matching statements like `if let` and `switch` 62 | - Builder inference (`@SceneBuilder` is not longer needed) 63 | - **Libraries** 64 | - `Float16` [SE-0277](https://github.com/apple/swift-evolution/blob/master/proposals/0277-float16.md) 65 | - Half-width floating point type 66 | - Performance gains but low precision and small range 67 | - Apple Archive 68 | - Modular archive format 69 | - Fast compression 70 | - Idiomatic Swift API 71 | - Swift System 72 | - Idiomatic Swift interface to system calls 73 | - Low-level currency types 74 | - Wraps Darwin APIs 75 | - OSLog 76 | - Unified logging API 77 | - Faster and more expressive (formatting options) 78 | - Packages 79 | - [Swift Numerics](https://github.com/apple/swift-numerics) 80 | - Support for complex numbers and basic math functions 81 | - [Swift ArgumentParser](https://github.com/apple/swift-argument-parser) 82 | - [Swift Standard Library Preview](https://github.com/apple/swift-standard-library-preview) 83 | - Includes features that have not been included in the release yet -------------------------------------------------------------------------------- /summaries/2020/10171.md: -------------------------------------------------------------------------------- 1 | ## What's new in watchOS design 2 | 3 | https://developer.apple.com/wwdc20/10171 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10172.md: -------------------------------------------------------------------------------- 1 | ## Design great app clips 2 | 3 | https://developer.apple.com/wwdc20/10172 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10173.md: -------------------------------------------------------------------------------- 1 | ## Get the most out of Sign in with Apple 2 | 3 | https://developer.apple.com/wwdc20/10173 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10174.md: -------------------------------------------------------------------------------- 1 | ## Explore app clips 2 | 3 | https://developer.apple.com/wwdc20/10174 4 | 5 | Presenters: _James Savage, Luming Yin_ 6 | 7 | - **What is an App Clip?** 8 | - App Clip Experience URL is required to run App Clips which are parts of your app 9 | - On-demand app experiences 10 | - **App Clip Experiences** 11 | - App Clip URLs are similar to Universal Links 12 | - Registered using App Store Connect 13 | - Surfaced through user actions via NFC / QR codes / links in Safari or other apps / Apple App Clip codes combine the ease of NFC and visual codes so they can be tapped or scanned 14 | - **New App Clip Target in Xcode** 15 | - Contains all assets 16 | - Needs to be submitted along with the app for review 17 | - It gets downloaded separately if the app is not installed on user’s device 18 | - Should be as small as possible for quick downloads (less than 10MB but with enough assets to load UI quickly) 19 | - Focused user flows - one at a time 20 | - **Demo** 21 | - Ordering smoothies 22 | - New App Clip target embedded in the application 23 | - Name and bundle ID for App Clip added 24 | - It can build and run with boilerplate code right away 25 | - Add code and resources 26 | - `NutritionFacts` dependency added 27 | - Create new Assets Catalog as shared assets 28 | - Drag App Icon, Colors and other image assets required for app clip into the shared assets catalog 29 | - Add the required model and view files to App Clip target 30 | - Let go of unwanted Swift files like navigation 31 | - Conditionally compile out the references to files not added to App Clip 32 | - Build Settings > Swift Compiler custom flags > Active Compilation Conditions > Add APPCLIP condition for required schemes. 33 | - Use #if !APPCLIP to compile out unwanted references in Swift code 34 | - Write code for App Clip 35 | - Add required models and views to the new AppClip 36 | - Include existing views in the App Clip’s content view 37 | - **Technology Overview** 38 | - App Clips are built using same UI components as an app 39 | - When launched, it receives `NSUserActivity` 40 | - Use the URL to identify the type of experience to be handled 41 | - Unlike extensions, App Clip can make use of all iOS SDK APIs 42 | - Note: Access to sensitive data is limited 43 | - Always check if data is available 44 | - New location confirmation API helps get the location quickly without requesting full access 45 | - New API for migrating data from App Clip to main app using shared data container once installed 46 | - App Clip and its local storage will be deleted after period of inactivity 47 | - Not included in backups 48 | - Can not be launched via Universal Links or custom URL schemes 49 | - Can not include bundle extensions like content blockers 50 | - **Device states and transitions** 51 | - User scans QR code 52 | - iOS locates, downloads and runs the App Clip 53 | - If the App Clip is not revisited for a while, the App Clip and its data gets deleted 54 | - Treat App Clip data as cache; which can be deleted 55 | - If the App Clip is visited frequently, its lifespan will be extended and data may never be cleared 56 | - When user downloads your app, iOS will automatically migrate the data container and the permissions that were already granted by the user 57 | - iOS still deletes the App Clip and its container after copying the data container to the app 58 | - **Other technologies** 59 | - Apple Pay 60 | - Notifications 61 | - SwiftUI 62 | - `SKOverlay` / `AppStoreOverlayModifier` (refer to [What’s new with in-app purchase](https://developer.apple.com/wwdc20/10661/) session) 63 | - `ASAuthorizationController` for sign in or sign up -------------------------------------------------------------------------------- /summaries/2020/10175.md: -------------------------------------------------------------------------------- 1 | ## The details of UI typography 2 | 3 | https://developer.apple.com/wwdc20/10175 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10176.md: -------------------------------------------------------------------------------- 1 | ## Master Picture in Picture on tvOS 2 | 3 | https://developer.apple.com/wwdc20/10176 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10182.md: -------------------------------------------------------------------------------- 1 | ## What's new in HealthKit 2 | 3 | https://developer.apple.com/wwdc20/10182 4 | 5 | Presenter: _Netra Kenkarey_ 6 | 7 | - **Symptoms** 8 | - Developers can now track symptoms in HealthKit, read and write symptom samples 9 | - HealthKit attempted to cover and track a wide range of symptoms (shortness of breath, sleep changes, appetite changes, fever, headache, etc.) 10 | - There are 13 symptom data types in HealthKit 11 | - **Electrocardiogram (ECG)** 12 | - ECG samples will be available for reading in the latest version of iOS and watchOS 13 | - An ECG sample can be read as an [`HKElectrocardiogram`](https://developer.apple.com/documentation/healthkit/hkelectrocardiogram) (it represents a waveform as a series of voltage values) 14 | - ECG sample has important properties that describe the measurements 15 | - [classification (`HKElectrocardiogram.Classification`)](https://developer.apple.com/documentation/healthkit/hkelectrocardiogram/3551981-classification) 16 | - Apple Watch will give the result of the recording in the form of a classification 17 | - The classification is divided into 2 types 18 | - Sinus Rhythm (heart is beating in a uniform pattern) 19 | - Atrial fibrillation (form of irregular rhythm, user should probably go see their doctor) 20 | - If Apple Watch is unable to determine the ECG result, either due to a low or a high heart rate or due to any other reason, the result is considered inconclusive 21 | - [symptomStatus (`HKElectrocardiogram.SymptomsStatus`)](https://developer.apple.com/documentation/healthkit/hkelectrocardiogram/3551984-symptomsstatus) 22 | - It tells if the user associated a symptom with this ECG (e.g. heartburn, tightness in the chest) 23 | - The symptom experienced can be recorded along with the ECG 24 | - [averageHeartRage (`HKQuantity?`)](https://developer.apple.com/documentation/healthkit/hkelectrocardiogram/3551980-averageheartrate) 25 | - [samplingFrequence (`HKQuantity?`)](https://developer.apple.com/documentation/healthkit/hkelectrocardiogram/3551983-samplingfrequency) 26 | - [numberOfVoltageMeasurements (`Int`)](https://developer.apple.com/documentation/healthkit/hkelectrocardiogram/3551982-numberofvoltagemeasurements) 27 | - It refers to the individual voltage measurements that make up an ECG sample 28 | - **[`HKElectrocardiogramQuery`](https://developer.apple.com/documentation/healthkit/hkelectrocardiogramquery)** 29 | - To retrieve the individual measurements run the [`HKElectrocardiogramQuery`](https://developer.apple.com/documentation/healthkit/hkelectrocardiogramquery) 30 | - Fetch the ECG samples with any of the HealthKit queries and then initialize the [`HKElectrocardiogramQuery`](https://developer.apple.com/documentation/healthkit/hkelectrocardiogramquery) with the fetched sample 31 | - When this query is executed on the HealthStore, you get the individual voltage measurements back in the ECG and the data handler 32 | - **Mobility** 33 | - **New set of mobility types** (available for reading and writing on the latest iOS and watchOS) 34 | - Walking speed and step length 35 | - Walking assymetry and double support percentage 36 | - Stair ascent and descent speed 37 | - Six-minute walk test distance 38 | -------------------------------------------------------------------------------- /summaries/2020/10184.md: -------------------------------------------------------------------------------- 1 | ## Synchronize health data with HealthKit 2 | 3 | https://developer.apple.com/wwdc20/10184 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10185.md: -------------------------------------------------------------------------------- 1 | ## Visually edit SwiftUI views 2 | 3 | https://developer.apple.com/wwdc20/10185 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10188.md: -------------------------------------------------------------------------------- 1 | ## Discover WKWebView enhancements 2 | 3 | https://developer.apple.com/wwdc20/10188 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10189.md: -------------------------------------------------------------------------------- 1 | ## Secure your app: threat modeling and anti-patterns 2 | 3 | https://developer.apple.com/wwdc20/10189 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10190.md: -------------------------------------------------------------------------------- 1 | ## Create quick interactions with Shortcuts on watchOS 2 | 3 | https://developer.apple.com/wwdc20/10190 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10194.md: -------------------------------------------------------------------------------- 1 | ## Add configuration and intelligence to your widgets 2 | 3 | https://developer.apple.com/wwdc20/10194 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10197.md: -------------------------------------------------------------------------------- 1 | ## Broaden your reach with Siri Event Suggestions 2 | 3 | https://developer.apple.com/wwdc20/10197 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/102.md: -------------------------------------------------------------------------------- 1 | ## Platform State of the Union ★ 2 | 3 | https://developer.apple.com/wwdc20/102/ 4 | 5 | - Some new features: **AirPods Motion API**, **SwiftPM resources**, **New Catalyst Controls**, **ARKit 4**, **Widgets in SwiftUI**, **Depth API**, **TestFlight 100 Testers**, **SwiftUI Lifecycle**, **Catalyst Native Screen Resolution**, **Complications in SwiftUI**, **Xcode StoreKit Testing**, **HomePod Music Services**, **App Clips**, **New SwiftUI Controls**, **Xcode Tabs**, ... 6 | - Users can make your app the default app used for email and set a default web browser 7 | - Developers can bring existing web-browser extensions to Safari using a new command line tool 8 | - **FindMy** can now leverage **all** iPhones out there to locate your devices, even if they are not connected to the internet ([applicable to all kinds of objects](developer.apple.com/find-my)) 9 | - Mac transition to **Apple Silicon** - Apple's own processor line - brings more security, better performance, longer battery life and amazing graphics 10 | - **Advantages** 11 | - Cached cloud content can be kept up to date for days, even if your mac goes to sleep 12 | - Higher quality, hardware-supported 4:4:4 encoder for e.g. better image quality when connecting your Mac via SideCar 13 | - Best-In-Class platform security 14 | - Apple provides a Developer Transition Kit 15 | - Mac mini enclosure + A12Z SoC 16 | - 16GB memory, 512GB SSD 17 | - macOS Big Sur Developer Beta + Xcode 18 | - First Macs will appear by end of the year 19 | - **Universal 2** create universal apps that run on both Apple Silicon and older architectures 20 | - Porting to Apple Silicon takes only a few days, even for grown projects. As a result, all Apple system apps are already converted in macOS Big Sur 21 | - **Rosetta 2** lets existing app run on new architectures from day one by making them compatible at installation time 22 | - Supports iPhone and iPad apps **directly** 23 | - iOS/iPad Apps natively on Mac 24 | - Apps will run natively on the Mac 25 | - Apps will automatically support features like resizing, Dark Mode, scrolling, multi-window, native share sheets, ... 26 | - Apple plans to make iOS/iPadOS apps available on the App Store for macs running with Apple Silicon 27 | - **macOS Big Sur - macOS 11** 28 | - Rounded dock 🎉 29 | - Control Center for mac 30 | - New translucent look for notification center 31 | - Refined layout for menus of the menu bar 32 | - New sheet presentation - parent window is dimmed 33 | - Completely re-designed toolbars with extending search fields and images provided by SF-Symbols 34 | - App-specific accent color 35 | - **macOS Catalyst** 36 | - macOS-specific implementation of iOS API's 37 | - Native resolution support 38 | - Messages re-written in Catalyst 39 | - SwiftPlaygrounds will support multiple windows 40 | - **iPadOS** 41 | - New sidebars can now expand from two-column layout to three-column layout - even available in portrait mode 42 | - Recommended to use side bars instead of tab bars 43 | - New inline emoji picker - also for custom apps 44 | - New color picker UI - easy to adopt 45 | - New Depth APIs give you access to precise distance info captured by the [LiDAR scanner on iPad](https://www.apple.com/newsroom/2020/03/apple-unveils-new-ipad-pro-with-lidar-scanner-and-trackpad-support-in-ipados/) 46 | - Dramatic improvement of people inclusion and motion detection - objects can be placed in front or behind real objects in the world 47 | - **Apple Pencil** 48 | - New **handwriting** improvements will work in your apps without any additional work 49 | - Hand-writing for any UITextField 50 | - Automatic support for **Scribble** which converts any hand-written text to typed text 51 | - Stroke API gives access to the strokes as the user draws 52 | - **Smart Selection** lets you select single words / characters you've written using your pencil and iOS text recognition features 53 | - **iOS 14** 54 | - **Widgets** 55 | - New widgets take UX to a whole new level 56 | - Users can move them to the home screen 57 | - Widgets are packed as SwiftUI archives which are optimized for performance 58 | - Are rendered by the system at the right time, when the user needs them 59 | - Can be smartly stacked to consume less space and let the user flip through them 60 | - Stack automatically moves the right widget to the top at just the right time 61 | - Configurable in the Widget Gallery 62 | - **App Clips** 63 | - Small part of the app which is light/fast and easy to discover 64 | - Can use Apple Pay and Sign in With Apple to provide a seamless UX 65 | - Easily discoverable in a variety of ways, like other apps or places in the real world via new Apple-designed (QR-like) codes which are basically NFC tags 66 | - Introduce users to what your app offers 67 | - **Misc. New Features** 68 | - Cycling directions, Guides and EV routing in Maps 69 | - Translate app 70 | - Messages inline replies 71 | - Car keys 72 | - App Library 73 | - On device dictation 74 | - **watchOS 7** 75 | - Xcode is now able to preview watchOS complications 76 | - SwiftUI complications 77 | - **Watch-face sharing** via any sharing capabilities, e.g Messages, social media, etc 78 | - **Xcode 12** 79 | - Cleaner, more expressive UI 80 | - Navigators realized using the new Side Bar 81 | - Any kind of content is now openable in document tab 82 | - Navigate through nested calls in compiler failure messages 83 | - StoreKit test environment lets you unit test In-App Purchase and Subscriptions 84 | - New StoreKit transaction manager shows details during debugging 85 | - Faster code completion with simplified presentation 86 | - **SwiftUI** 87 | - All SwiftUI apps will continue to compile without additional changes (Apple added no breaking changes - just extensions) 88 | - **Lazy** statement makes large collections of views way less memory hungry and makes scrolling snappy again 89 | - Now contains app-structure APIs for all Apple platforms, e.g. `@main`, `@SceneBuilder`, `Settings`, ... -------------------------------------------------------------------------------- /summaries/2020/10200.md: -------------------------------------------------------------------------------- 1 | ## Design for intelligence: Meet people where they are 2 | 3 | https://developer.apple.com/wwdc20/10200 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10204.md: -------------------------------------------------------------------------------- 1 | ## Create great enterprise apps: A chat with Box's Aaron Levie 2 | 3 | https://developer.apple.com/wwdc20/10204 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10205.md: -------------------------------------------------------------------------------- 1 | ## Design with iOS pickers, menus and actions 2 | 3 | https://developer.apple.com/wwdc20/10205 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10206.md: -------------------------------------------------------------------------------- 1 | ## Design for iPad 2 | 3 | https://developer.apple.com/wwdc20/10206 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10207.md: -------------------------------------------------------------------------------- 1 | ## SF Symbols 2 2 | 3 | https://developer.apple.com/wwdc20/10207 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10209.md: -------------------------------------------------------------------------------- 1 | ## What's new in Core NFC 2 | 3 | https://developer.apple.com/wwdc20/10209 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10210.md: -------------------------------------------------------------------------------- 1 | ## Modernize PCI and SCSI drivers with DriverKit 2 | 3 | https://developer.apple.com/wwdc20/10210 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10214.md: -------------------------------------------------------------------------------- 1 | ## Port your Mac app to Apple Silicon 2 | 3 | https://developer.apple.com/wwdc20/10214 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10216.md: -------------------------------------------------------------------------------- 1 | ## What's new in ResearchKit 2 | 3 | https://developer.apple.com/wwdc20/10216 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10217.md: -------------------------------------------------------------------------------- 1 | ## Explore numerical computing in Swift 2 | 3 | https://developer.apple.com/wwdc20/10217 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10219.md: -------------------------------------------------------------------------------- 1 | ## Build localization-friendly layouts using Xcode 2 | 3 | https://developer.apple.com/wwdc20/10219 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10220.md: -------------------------------------------------------------------------------- 1 | ## Handle interruptions and alerts in UI tests 2 | 3 | https://developer.apple.com/wwdc20/10220 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10221.md: -------------------------------------------------------------------------------- 1 | ## Get your test results faster 2 | 3 | https://developer.apple.com/wwdc20/10221 4 | 5 | Presenters: _Sean Olszewski_ 6 | 7 | - **The Testing Feedback Loop** 8 | - Write tests > run tests > Interpret result >if sufficient confidence [ > Next task] else go back to write tests 9 | - Short feedback loops is important because that means you get results from your tests faster, you can ship features to your users faster. 10 | - Real world example: Result bundle from that CI job, which never finished. Due to dead lock, poorly chosen timeout. 11 | - **Execution Time Allowance [NEW in XCode 12]** 12 | - When enabled, Xcode enforces a limit on the amount of time each individual test can take. When a test exceeds this limit, Xcode will first capture spin dump, then kill the test that hung, restart the test runner, so that the rest of the suite can execute. 13 | - A spin dump shows you which functions each thread is spending the most time in. It's also possible to manually capture spin dump from Terminal using the spin dump command or from within Activity Monitor. 14 | - By default, each test gets 10 minutes. If you need to a specific test or test class, you can use the `executionTimeAllowance` API to special case a particular test or subclass. For values under 60 seconds, they'll be rounded up to 60 seconds, the nearest whole minute. 15 | - Prevent a test requests unlimited time by enforcing a maximum allowance. 16 | - You can customize the default time allowance and a maximum allowance either via a setting in the Test Plan or through an Xcodebuild option. 17 | - Use `XCTest`'s performance APIs to automate testing for regressions in the performance. Use Instruments to identify what parts of your code are slow, 18 | - **Parallel Distributed Testing** 19 | - Xcode build will distribute tests to each run destination by class. Each device runs a single test class at a time. 20 | - If you're testing logic that is device or OS specific, this can lead to unexpected failures or skipped tests. 21 | -------------------------------------------------------------------------------- /summaries/2020/10222.md: -------------------------------------------------------------------------------- 1 | ## Create custom apps for employees 2 | 3 | https://developer.apple.com/wwdc20/10222 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10223.md: -------------------------------------------------------------------------------- 1 | ## Deploy Apple devices using zero-touch 2 | 3 | https://developer.apple.com/wwdc20/10223 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10224.md: -------------------------------------------------------------------------------- 1 | ## Meet Audio Workgroups 2 | 3 | https://developer.apple.com/wwdc20/10224 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10225.md: -------------------------------------------------------------------------------- 1 | ## Improve stream authoring with HLS Tools 2 | 3 | https://developer.apple.com/wwdc20/10225 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10226.md: -------------------------------------------------------------------------------- 1 | ## Record stereo audio with AVAudioSession 2 | 3 | https://developer.apple.com/wwdc20/10226 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10228.md: -------------------------------------------------------------------------------- 1 | ## What's new in Low-Latency HLS 2 | 3 | https://developer.apple.com/wwdc20/10228 4 | 5 | Presenter: _Roger Pantos_ 6 | 7 | - Comes out of beta this year 8 | - Available in iOS 14, tvOS 14, watchOS 7 and this year's macOS 9 | - Includes support for bit-rate switching, FairPlay Streaming, fMP4 CMAF, ad insertion, captioning 10 | - Native app support, no entitlement necessary 11 | - [draft-pantos-hls-rfc8216bis07](https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-07) and later now includes LL-HLS 12 | - Includes Low-Latency Server Configuration Profile 13 | - Includes CDN tune-in algorithm 14 | - Updated informative articles on [developer.apple.com](https://developer.apple.com/) 15 | - [Protocol Extension for Low-Latency HLS](https://developer.apple.com/documentation/http_live_streaming/protocol_extension_for_low-latency_hls_preliminary_specification) 16 | - [HLS Authoring Specification for Apple Devices](https://developer.apple.com/documentation/http_live_streaming/hls_authoring_specification_for_apple_devices) 17 | - **Significant changes and improvements to the protocol** 18 | - **Reducing segment delay** 19 | - Approach described last year using HTTP/2 Push to send segment with Playlist is not compatible with some delivery models 20 | - **Replaced Push with Blocking Preload Hints** 21 | - Client requests next part in advance 22 | - Server will hold on to the request until it can send it 23 | - Also triggers global CDN cache fill 24 | - [Discover HLS Blocking Preload Hints session](https://developer.apple.com/videos/play/wwdc2020/10229/) for more information 25 | - **Other improvements** 26 | - Eliminated HLS report 27 | - All Rendition Reports are provided unconditionally 28 | - Defined EXT-X-DATERANGE handling for Playlist Delta Updates 29 | - [Optimize Live Streams with HLS Playlist Delta Updates](https://developer.apple.com/videos/play/wwdc2020/10230/) session for more detailed information 30 | - Added signaling of gaps in Parts and Rendition Reports 31 | - New attributes: GAP=YES in EXT-X-PART and EXTT-X-RENDITION-REPORT 32 | - This allowing clients to deal better with encoded outages in Low-Latency streams 33 | - **Low-Latency HLS Tools changes** 34 | - Reference implementation now produces fMP4/CMAF 35 | - Added self-contained LL-HLS origin written in Go 36 | - Incorporated Low-Latency HLS tools into the regular HLS tools package 37 | - Find out more in [Improve Stream Authoring with HLS Tools](https://developer.apple.com/videos/play/wwdc2020/10225/) session 38 | - **Summary of important changes** 39 | - Replaced HTTP/2 Push with Preloading Hinting 40 | - Simplified Delivery Directives 41 | - Generate CMAF in reference tools 42 | - **Everything is included in the current HLS spec** 43 | -------------------------------------------------------------------------------- /summaries/2020/10229.md: -------------------------------------------------------------------------------- 1 | ## Discover HLS Blocking Preload Hints 2 | 3 | https://developer.apple.com/wwdc20/10229 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10230.md: -------------------------------------------------------------------------------- 1 | ## Optimize live streams with HLS Playlist Delta Updates 2 | 3 | https://developer.apple.com/wwdc20/10230 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10231.md: -------------------------------------------------------------------------------- 1 | ## Reduce latency with HLS Blocking Playlist Reload 2 | 3 | https://developer.apple.com/wwdc20/10231 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10232.md: -------------------------------------------------------------------------------- 1 | ## Adapt ad insertion to Low-Latency HLS 2 | 3 | https://developer.apple.com/wwdc20/10232 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10601.md: -------------------------------------------------------------------------------- 1 | ## The artist’s AR toolkit 2 | 3 | https://developer.apple.com/wwdc20/10601 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10602.md: -------------------------------------------------------------------------------- 1 | ## Harness Apple GPUs with Metal 2 | 3 | https://developer.apple.com/wwdc20/10602 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10603.md: -------------------------------------------------------------------------------- 1 | ## Optimize Metal apps and games with GPU counters 2 | 3 | https://developer.apple.com/wwdc20/10603 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10604.md: -------------------------------------------------------------------------------- 1 | ## Shop online with AR Quick Look 2 | 3 | https://developer.apple.com/wwdc20/10604 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10605.md: -------------------------------------------------------------------------------- 1 | ## Gain insights into your Metal app with Xcode 12 2 | 3 | https://developer.apple.com/wwdc20/10605 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10611.md: -------------------------------------------------------------------------------- 1 | ## Explore ARKit 4 2 | 3 | https://developer.apple.com/wwdc20/10611 4 | 5 | Presenters: _Quinton Petty, Praveen Gowda_ 6 | 7 | - **Location Anchors** 8 | - Geo-referenced AR Content 9 | - Uses "visual localization" from Maps 10 | - No processing in the cloud 11 | - No images sent back to Apple 12 | - Pinned to a geo-location 13 | - 3 main parts 14 | - [`ARGeoTrackingConfiguration`](https://developer.apple.com/documentation/arkit/argeotrackingconfiguration) 15 | - [`ARGeoAnchor`](https://developer.apple.com/documentation/arkit/argeoanchor) 16 | - [`ARGeotrackingStatus`](https://developer.apple.com/documentation/arkit/argeotrackingstatus) 17 | - Device support A12 Bionic or later + GPS support 18 | - Requires availability checks for both device and location 19 | - [`ARGeotrackingStatus`](https://developer.apple.com/documentation/arkit/argeotrackingstatus) 20 | - [`State`](https://developer.apple.com/documentation/arkit/argeotrackingstatus/3580876-state) 21 | - [`StateReason`](https://developer.apple.com/documentation/arkit/argeotrackingstatus/statereason) 22 | - [`accuracy`](https://developer.apple.com/documentation/arkit/argeotrackingstatus/3580875-accuracy): low, medium, high 23 | - Methods for converting between local and latitude / longitude positions via `getGeoLocation(forPoint:)` 24 | - Recommended to point towards buildings / static objects 25 | - May struggle in wide open spaces (e.g a field) 26 | - [Locations currently available](https://developer.apple.com/documentation/arkit/argeotrackingconfiguration/3571351-checkavailability): San Francisco Bay Area, Los Angeles, New York, Chicago and Miami 27 | - Sample: [Tracking Geographic Locations in AR](https://developer.apple.com/documentation/arkit/tracking_geographic_locations_in_ar) 28 | - **Scene Geometry** 29 | - Topological map of environment 30 | - Semantic classification 31 | - Allowing for: 32 | - Occlusion 33 | - Physics 34 | - Virtual lighting 35 | - Based upon the Depth API 36 | - **Depth API** 37 | - Provides a dense depth image 38 | - Use [`sceneDepth`](https://developer.apple.com/documentation/arkit/arframe/3566299-scenedepth) under frame semantics 39 | - Runs at 60Hz, on every ARFrame 40 | - [`depthMap`](https://developer.apple.com/documentation/arkit/ardepthdata/3566296-depthmap) and [`confidenceMap`](https://developer.apple.com/documentation/arkit/ardepthdata/3566295-confidencemap) provided 41 | - Depth map provided as `CVPixelBuffer` 42 | - [`ARConfidenceLevel`](https://developer.apple.com/documentation/arkit/arconfidencelevel): high, medium or low 43 | - Available on LiDAR devices 44 | - **Object Placement** 45 | - Improvements in Raycasting 46 | - Quicker placement with LiDAR sensor 47 | - Allows for placing on a white wall 48 | - Raycasting is recommend over hit-testing 49 | - 2 types of query: 50 | - Raycast 51 | - Tracked Raycasts 52 | - **Face Tracking** 53 | - Support added for non-TrueDepth iPhones 54 | - Requires A12 processor or later 55 | - iPhone SE (2020) -------------------------------------------------------------------------------- /summaries/2020/10612.md: -------------------------------------------------------------------------------- 1 | ## What's new in RealityKit 2 | 3 | https://developer.apple.com/wwdc20/10612 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10613.md: -------------------------------------------------------------------------------- 1 | ## What's new in USD 2 | 3 | https://developer.apple.com/wwdc20/10613 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10614.md: -------------------------------------------------------------------------------- 1 | ## Advancements in Game Controllers 2 | 3 | https://developer.apple.com/wwdc20/10614 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10615.md: -------------------------------------------------------------------------------- 1 | ## Build GPU binaries with Metal 2 | 3 | https://developer.apple.com/wwdc20/10615 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10616.md: -------------------------------------------------------------------------------- 1 | ## Debug GPU-side errors in Metal 2 | 3 | https://developer.apple.com/wwdc20/10616 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10617.md: -------------------------------------------------------------------------------- 1 | ## Bring keyboard and mouse gaming to iPad 2 | 3 | https://developer.apple.com/wwdc20/10617 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10618.md: -------------------------------------------------------------------------------- 1 | ## Tap into Game Center: Dashboard, Access Point, and Profile 2 | 3 | https://developer.apple.com/wwdc20/10618 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10619.md: -------------------------------------------------------------------------------- 1 | ## Tap into Game Center: Leaderboards, Achievements, and Multiplayer 2 | 3 | https://developer.apple.com/wwdc20/10619 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10621.md: -------------------------------------------------------------------------------- 1 | ## Support performance-intensive apps and games 2 | 3 | https://developer.apple.com/wwdc20/10621 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10631.md: -------------------------------------------------------------------------------- 1 | ## Bring your Metal app to Apple Silicon Macs 2 | 3 | https://developer.apple.com/wwdc20/10631 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10632.md: -------------------------------------------------------------------------------- 1 | ## Optimize Metal Performance for Apple Silicon Macs 2 | 3 | https://developer.apple.com/wwdc20/10632 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10633.md: -------------------------------------------------------------------------------- 1 | ## Capture and stream apps on the Mac with ReplayKit 2 | 3 | https://developer.apple.com/wwdc20/10633 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10634.md: -------------------------------------------------------------------------------- 1 | ## Discover search suggestions for Apple TV 2 | 3 | https://developer.apple.com/wwdc20/10634 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10635.md: -------------------------------------------------------------------------------- 1 | ## Accelerate your app with CarPlay 2 | 3 | https://developer.apple.com/wwdc20/10635 4 | 5 | Presenters: _Jonathan Hersh, Allen Langmaier_ 6 | 7 | - **New CarPlay App Possibilites** 8 | - EV charging 9 | - Parking 10 | - Quick food ordering 11 | - **Audio Apps** 12 | - Playable content template will be deprecated 13 | - New audio template 14 | - **New Templates** 15 | - Communication Apps 16 | - `CPMessageListItem` 17 | - Contact template 18 | - List template 19 | - Tab bar template 20 | - Now playing template 21 | - Point of interest template 22 | - Information template 23 | - **CarPlay Design Principles** 24 | - Design for the driver 25 | - Streamline interactions 26 | - Reuse app configuration 27 | - Launch first in CarPlay 28 | - CarPlay apps must adapt `UIScene` 29 | - **Updates to development** 30 | - Dynamic updates to list elements 31 | - `CPListItem` 32 | - `CPListImageRowItem` -------------------------------------------------------------------------------- /summaries/2020/10636.md: -------------------------------------------------------------------------------- 1 | ## What's new in streaming audio for Apple Watch 2 | 3 | https://developer.apple.com/wwdc20/10636 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10639.md: -------------------------------------------------------------------------------- 1 | ## What's new in managing Apple devices 2 | 3 | https://developer.apple.com/wwdc20/10639 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10640.md: -------------------------------------------------------------------------------- 1 | ## Design for the iPadOS pointer 2 | 3 | https://developer.apple.com/wwdc20/10640 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10641.md: -------------------------------------------------------------------------------- 1 | ## Handle the Limited Photos Library in your app 2 | 3 | https://developer.apple.com/wwdc20/10641 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10642.md: -------------------------------------------------------------------------------- 1 | ## Build Image and Video Style Transfer models in Create ML 2 | 3 | https://developer.apple.com/wwdc20/10642 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10643.md: -------------------------------------------------------------------------------- 1 | ## Build a SwiftUI view in Swift Playgrounds 2 | 3 | https://developer.apple.com/wwdc20/10643 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10644.md: -------------------------------------------------------------------------------- 1 | ## Use Swift on AWS Lambda with Xcode 2 | 3 | https://developer.apple.com/wwdc20/10644 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10645.md: -------------------------------------------------------------------------------- 1 | ## Support multiple users in your tvOS app 2 | 3 | https://developer.apple.com/wwdc20/10645 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10646.md: -------------------------------------------------------------------------------- 1 | ## What's new in Web Inspector 2 | 3 | https://developer.apple.com/wwdc20/10646 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10647.md: -------------------------------------------------------------------------------- 1 | ## Become a Simulator expert 2 | 3 | https://developer.apple.com/wwdc20/10647 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10648.md: -------------------------------------------------------------------------------- 1 | ## Unsafe Swift 2 | 3 | https://developer.apple.com/wwdc20/10648 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10649.md: -------------------------------------------------------------------------------- 1 | ## Add custom views and modifiers to the Xcode Library 2 | 3 | https://developer.apple.com/wwdc20/10649 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10650.md: -------------------------------------------------------------------------------- 1 | ## Sync a Core Data store with the CloudKit public database 2 | 3 | https://developer.apple.com/wwdc20/10650 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10651.md: -------------------------------------------------------------------------------- 1 | ## What's new in App Store Connect 2 | 3 | https://developer.apple.com/wwdc20/10651 4 | 5 | Presenter: _Daniel Miao_ 6 | 7 | - **App Clips** 8 | - **Beta Testing** 9 | - Safari App Clip banner appears when a website is associated with an App Clip. Tapping brings up the `App Clip Card`. Tapping the card opens the app itself. 10 | - App Clips can be invoked from Safari, Messages, Maps, NFC Tags, QR Code or Location 11 | - Invocation URL from the website is used what to show on the App Clip Card and is passed to it upon tap of the banner 12 | - App Clip is packaged with the app and delivered to ASC 13 | - In the new `App Clip Invocation` Section on ASC you can provide titles and along with invocation URLs used in the App Clip 14 | - Title-URL combinations are selectable in TestFlight and take you directly to the App Clip by passing the invocation URL (without showing the App Clip Card) 15 | - **App Clip Card Meta Data** 16 | - Header image, App Clip title, App Clip subtitle, call to action button 17 | - Enter the default meta data on the apps version page on ASC 18 | - Associate your website with the App Clip by including the meta-data tag `` 19 | - Use **Advanced App Clip Experiences** to get customized meta data and association with e.g. location in Maps 20 | - Advanced assistant on your app's version page on ASC to setup advanced experience 21 | - You can select to promote `Your own business` or `Other Businesses` (e.g. Yelp) 22 | - You have to specify an Apple App Site Association file (like with universal links) that has to match the Associated Domains Entitlement in your app 23 | - Manage / Debug your website association on ASC 24 | - **Game Center** 25 | - **Challenges** other players to get achievement 26 | - **Recurring Leaderboards** to collect scores for a certain period of time 27 | - Reset after that time 28 | - Configurable on ASC 29 | - **Family Sharing for Subscriptions** 30 | - Subscriptions can be shared among the family form fall 2020 31 | - Auto-renewable subscriptions 32 | - Non-consumables 33 | - Automatic sharing for new customers 34 | - Existing subscribers can opt-in 35 | - Family-shared in-app purchase can be enabled on the ASC-In-App-Purchase section of your app 36 | - **Once turned on it cannot be tuned off again** 37 | - **App Store Connect API** 38 | - Over 200 new endpoints will be added 39 | - Add `App Meta Data API` 40 | - Create new version 41 | - Set app pricing 42 | - Edit app and version metadata 43 | - Associate build with version 44 | - Submit app for review 45 | - Add `Power and Performance Metrics and Diagnostics API` -------------------------------------------------------------------------------- /summaries/2020/10652.md: -------------------------------------------------------------------------------- 1 | ## Meet the new Photos picker 2 | 3 | https://developer.apple.com/wwdc20/10652 4 | 5 | Presenters: _Tobias Conradi, Justin Jia_ 6 | 7 | - **PHPicker** 8 | - Direct access to user’s photo gallery 9 | - Supports zoom in, multi-select, review 10 | - Types are filterable 11 | - Privacy built in by default 12 | - It won’t prompt the user for access 13 | - It runs out of the app’s process 14 | - Separate process rendered on top of the app 15 | - Only what user selects is passed back to the app 16 | - **Implementation** 17 | - `PHPickerConfiguration` (which can include type filters) is passed to `PHPickerViewController`, which has delegates to handle responses 18 | - `PHPickerConfiguration` 19 | - Selection limit 20 | - Image / Video type 21 | - Initialize `PHPickerViewController` by using the configuration 22 | - Set delegate and implement protocol functions 23 | - `didFinishPicking` 24 | - `NSItemProvider` - representation of the item, async, requires error handling 25 | - **Demo** 26 | - Photo preview app 27 | - `UIImageView` with placeholder image 28 | - Plus button for image selection 29 | - Present the new picker 30 | - Create `PHPickerConfiguration` with images filter and selection limit (set to zero for unlimited selection) 31 | - Initialize the `PHPickerViewController` with this configuration 32 | - Present the new controller after setting delegate and following the protocol 33 | - Implement `didFinishPicking` 34 | - Dismiss the picker first 35 | - Retrieve the image via item provider and use main queue to update your UI 36 | - Use `IndexingIterator<[NSItemProvider]>` to save array of item providers 37 | - Add touch event to iterate through the array of picked images 38 | - **Note** 39 | - `AssetsLibrary` will go away; switch to `PhotoKit` 40 | - `UIImagePickerController` is to be deprecated and replaced with `PHPickerViewController` -------------------------------------------------------------------------------- /summaries/2020/10653.md: -------------------------------------------------------------------------------- 1 | ## Detect Body and Hand Pose with Vision 2 | 3 | https://developer.apple.com/wwdc20/10653 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10654.md: -------------------------------------------------------------------------------- 1 | ## Create Swift Playgrounds content for iPad and Mac 2 | 3 | https://developer.apple.com/wwdc20/10654 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10655.md: -------------------------------------------------------------------------------- 1 | ## Discover how to download and play HLS offline 2 | 3 | https://developer.apple.com/wwdc20/10655 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10656.md: -------------------------------------------------------------------------------- 1 | ## Beyond counting steps 2 | 3 | https://developer.apple.com/wwdc20/10656 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10657.md: -------------------------------------------------------------------------------- 1 | ## Make apps smarter with Natural Language 2 | 3 | https://developer.apple.com/wwdc20/10657 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10658.md: -------------------------------------------------------------------------------- 1 | ## What's new in education 2 | 3 | https://developer.apple.com/wwdc20/10658 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10659.md: -------------------------------------------------------------------------------- 1 | ## Introducing StoreKit Testing in Xcode 2 | 3 | https://developer.apple.com/wwdc20/10659 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10660.md: -------------------------------------------------------------------------------- 1 | ## What's new in location 2 | 3 | https://developer.apple.com/wwdc20/10660 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10661.md: -------------------------------------------------------------------------------- 1 | ## What’s new with in-app purchase 2 | 3 | https://developer.apple.com/wwdc20/10661 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10662.md: -------------------------------------------------------------------------------- 1 | ## What's new in Wallet and Apple Pay 2 | 3 | https://developer.apple.com/wwdc20/10662 4 | 5 | Presenter: _Stacey Abrams_ 6 | 7 | - Use Apple Pay to get into public transit and acadamic buildings 8 | - **API Enhancements** 9 | - PKSecureElementPass replaces PKPaymentPass fom now 10 | - New Apple Pay Button types: `.reload` , `.addMoney`, `.topUp`, `.order`, `.rent`, `.support`, `.contribute`, `.tip` 11 | - See how to declare a Apple Pay Button on a website at [2:16](https://developer.apple.com/wwdc20/10662?time=136) 12 | - PKPaymentButton style `.automatic` automatically switches between light and dark mode 13 | - **Apple Pay in App Clips** 14 | - Could revolutionize everydays payment experience when you can e.g. just tap an NFC tag on a gas station to pay your gas 15 | - Guest checkouts using Apple Pay do not require to setup an account anymore and if it is necessary seamless Sign in with Apple is used. 16 | - **Enhancing Apple Pay experience across platforms** 17 | - Merchants can receive redacted billing address 18 | - Lower risk of chargebacks for merchnts 19 | - Price transparency leads to higher conversion rates 20 | - **Apple Pay for Catalyst** 21 | - Brings great payment experiences to more mac apps 22 | - Brings the newly announced APIs, including the Apple Pay button, to the mac 23 | - Improvements in WKWebView will allow more pages to allow Apple Pay transactions now 24 | - **Contacts Formatting Improvements** to prevent invalid shipping addresses 25 | - Street and city fields contain vaild characters only 26 | - State is a two letter code 27 | - US: Zip code is 5 or 9 digit code 28 | - ISO country code is upper case two letter code 29 | - Improved experience when correcting information 30 | - Raise formatting errors earlier in the payment flow 31 | - Users can correct information prior to authentication 32 | - Error APIs improved and aligned to new formatting options 33 | - Only rolles out in some Australia, Canada, UK, US for now 34 | - **Adding cards to Apple Pay** 35 | - **Issuer Extensions** to improve discoverability from within the Wallet app - needs installatioon of an **Issuer** app 36 | - App requires non-UI extension 37 | - Extension principal object must subclass `PKIssuerProvisioningExtensionHandler` 38 | - Requires non-UI extension entitlement 39 | - Added support for a UI extension 40 | - Needs to handle re-authentications if required by conforming principal object to `PKIssuerProvisioningExtensionAuthorizationProviding` 41 | - Requires UI extension entitlement -------------------------------------------------------------------------------- /summaries/2020/10663.md: -------------------------------------------------------------------------------- 1 | ## What's new for web developers 2 | 3 | https://developer.apple.com/wwdc20/10663 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10664.md: -------------------------------------------------------------------------------- 1 | ## Getting started with HealthKit 2 | 3 | https://developer.apple.com/wwdc20/10664 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10665.md: -------------------------------------------------------------------------------- 1 | ## Meet Safari Web Extensions 2 | 3 | https://developer.apple.com/wwdc20/10665 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10666.md: -------------------------------------------------------------------------------- 1 | ## One-tap account security upgrades 2 | 3 | https://developer.apple.com/wwdc20/10666 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10667.md: -------------------------------------------------------------------------------- 1 | ## Custom app distribution with Apple Business Manager 2 | 3 | https://developer.apple.com/wwdc20/10667 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10668.md: -------------------------------------------------------------------------------- 1 | ## Meet Nearby Interaction 2 | 3 | https://developer.apple.com/wwdc20/10668 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10669.md: -------------------------------------------------------------------------------- 1 | ## Handling FHIR without getting burned 2 | 3 | https://developer.apple.com/wwdc20/10669 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10670.md: -------------------------------------------------------------------------------- 1 | ## Meet Face ID and Touch ID for the web 2 | 3 | https://developer.apple.com/wwdc20/10670 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10671.md: -------------------------------------------------------------------------------- 1 | ## Architecting for subscriptions 2 | 3 | https://developer.apple.com/wwdc20/10671 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10672.md: -------------------------------------------------------------------------------- 1 | ## What's new in ClassKit 2 | 3 | https://developer.apple.com/wwdc20/10672 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10673.md: -------------------------------------------------------------------------------- 1 | ## Explore Computer Vision APIs 2 | 3 | https://developer.apple.com/wwdc20/10673 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10676.md: -------------------------------------------------------------------------------- 1 | ## Build trust through better privacy 2 | 3 | https://developer.apple.com/wwdc20/10676 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10677.md: -------------------------------------------------------------------------------- 1 | ## Build customized ML models with the Metal Performance Shaders Graph 2 | 3 | https://developer.apple.com/wwdc20/10677 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10680.md: -------------------------------------------------------------------------------- 1 | ## Refine Objective-C frameworks for Swift 2 | 3 | https://developer.apple.com/wwdc20/10680 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10686.md: -------------------------------------------------------------------------------- 1 | ## Explore the new system architecture of Apple Silicon Macs 2 | 3 | https://developer.apple.com/wwdc20/10686 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | -------------------------------------------------------------------------------- /summaries/2020/10687.md: -------------------------------------------------------------------------------- 1 | ## Triage test failures with XCTIssue 2 | 3 | https://developer.apple.com/wwdc20/10687 4 | 5 | Presenters: _Example Guy, Another Person_ 6 | 7 | ##### TO-DO! You can contribute to this session, please see [CONTRIBUTING.md](CONTRIBUTING.md) 8 | --------------------------------------------------------------------------------