Secret-Of-SwiftUI / SSDC22

🀑 응~ 질렀? deprecated ν•˜λ©΄ κ·Έλ§Œμ΄μ•Ό~
9 stars 0 forks source link

Discover PhotoKit change history #29

Open hyun99999 opened 1 year ago

hyun99999 commented 1 year ago

PhotoKit can help you build rich, photo-centric features. Learn how you can easily track changes to image assets with the latest APIs in PhotoKit. We'll introduce you to the PHPhotoLibrary change history API and demonstrate how you can persist change tokens across launches to help your app recognize additions, deletions, and updates to someone's photo library. To learn more about Photos library integration, be sure to watch "What's new in the Photos picker" from WWDC22 and "Improve access to Photos in your app" from WWDC21.

hyun99999 commented 1 year ago

Discover PhotoKit change history - WWDC22 - Videos - Apple Developer

λ³Έ 글은 WWDC λ₯Ό 보고, λ²ˆμ—­ 및 μš”μ•½ 그리고 μ‹€ν–‰ν•΄λ³΄λŠ” μŠ€ν„°λ”” ν”„λ‘œμ νŠΈμ˜ μΌν™˜μž…λ‹ˆλ‹€.

1 2

PhotoKit 은 사진 λΌμ΄λΈŒλŸ¬λ¦¬μ— μ €μž₯된 사진, μ˜μƒ 및 앨범에 μ ‘κ·Όν•˜κ³  μ—…λ°μ΄νŠΈν•˜κΈ° μœ„ν•΄ ν’λΆ€ν•œ API λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. PhotoKit 은 κΉŠμ€ μˆ˜μ€€μœΌλ‘œ Photos μ ‘κ·Όκ³Ό 톡합이 ν•„μš”ν•œ 앱을 μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

3

사진 관리 λ˜λŠ” νŽΈμ§‘, μ‚¬μš©μž 지정 카메라 μ•±μ΄λ‚˜ 사진 라이브러리λ₯Ό λ…νŠΉν•˜κ²Œ 탐색할 수 μžˆλŠ” 방법을 μ œκ³΅ν•˜λŠ” 앱듀이 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.

이런 μœ ν˜•μ˜ 앱듀은 사진 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ‹œκ°„μ΄ 지남에 따라 μ–΄λ–»κ²Œ λ³€κ²½λ˜λŠ”μ§€ λͺ¨λ‹ˆν„°λ§ν•΄μ„œ Photos 의 κ²½ν—˜μ„ μžμ„Ένžˆ λ°˜μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, μ†Œμ…œ ν•˜μ΄ν‚Ή 앱을 λ§Œλ“€μ—ˆλ‹€κ³  ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. μΉœκ΅¬μ™€ ν•˜μ΄ν‚Ή λ‹€λ…€μ˜¨ 사진을 κ³΅μœ ν•˜κ³ , νŽΈμ§‘ν•˜λŠ” μ•±μž…λ‹ˆλ‹€.

4

이 앱은 μ‚°μ—μ„œμ˜ κ²½ν—˜μ„ 콜라주(μœ„μ™€ 같이 화면을 κ΅¬μ„±ν•˜λŠ” 기법)λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ 졜근 ν•˜μ΄ν‚Ή μš΄λ™μ˜ μ‹œμž‘κ³Ό 끝 νƒ€μž„μŠ€νƒ¬ν”„μ—μ„œ 사진을 λͺ¨μλ‹ˆλ‹€. μ΄λŠ” 사진 λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μ„ νƒν•œ 사진과 λ™κΈ°ν™”λœ μƒνƒœλ‘œ μœ μ§€λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μΉœκ΅¬μ—κ²Œμ„œ ν•˜μ΄ν‚Ή 사진을 λ°›λŠ”λ‹€λ©΄ 앱은 이 μ—…λ°μ΄νŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ 콜라주λ₯Ό 생성할 κ²ƒμž…λ‹ˆλ‹€.

5

μ§€κΈˆκΉŒμ§€ 앱이 μƒˆλ‘œ μ‚½μž…λœ 에셋과 이전 ν•˜μ΄ν‚Ή 콜라주의 변경사항을 λ°œκ²¬ν•˜λ €λ©΄ μ—΄λ ¨μ˜ fetch λ₯Ό μˆ˜ν–‰ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.

앱은 λ§ˆμ§€λ§‰ μ•± μ‹€ν–‰ λ‚ μ§œλ³΄λ‹€ 늦게 μƒμ„±λœ 에셋을 κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€. 에셋 μ—…λ°μ΄νŠΈμ™€ μ‚­μ œλ₯Ό κ²°μ •ν•˜λŠ” 건 더 μ–΄λ €μ› μŠ΅λ‹ˆλ‹€.

6 7

μ „μ²΄μ μœΌλ‘œ 앱을 μ‹€ν–‰ν•  λ•Œλ§ˆλ‹€ μ„Έ 가지 검사λ₯Ό λ³„λ„λ‘œ ν•΄μ•Όν•˜λŠ”λ° λ§Œμ•½ 앱이 λ§Žμ€ μ–‘μ˜ 에셋을 ν‘œμ‹œν•˜λŠ” 경우 νŠΉνžˆλ‚˜ λΉ„μš©μ΄ 많이 λ“­λ‹ˆλ‹€.

8

λΆˆν™•μ‹€ν•œ κ²°κ³Όλ₯Ό 일일이 κ°€μ Έμ˜€κ³  확인을 ν•˜λŠ” λŒ€μ‹  API 호좜둜 무엇이 λ³€ν–ˆλŠ”μ§€ μ •ν™•ν•˜κ²Œ μ•„λŠ” 방법이 μžˆλ‹€λ©΄ μ–΄λ–¨κΉŒμš”?

μƒˆλ‘œμš΄ λ³€κ²½ λ‚΄μ—­ API λ₯Ό 톡해 μ‰½κ²Œ 사진 라이브러리의 μ˜€ν”„λΌμΈ μ—…λ°μ΄νŠΈλ₯Ό 좔적할 수 μžˆμŠ΅λ‹ˆλ‹€.

9

1️⃣ New change history API

λ³€κ²½ 내역은 사진 λΌμ΄λΈŒλŸ¬λ¦¬μ— λŒ€ν•œ μ‚½μž…, μ—…λ°μ΄νŠΈ, μ‚­μ œ 처럼 λ³€κ²½ νƒ€μž„λΌμΈμœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

10

μœ„μ˜ νƒ€μž„λΌμΈ μ˜ˆμ‹œλ₯Ό 보면 3μΌκ°„μ˜ λ³€κ²½ 내역에 에셋, 앨범, 폴더가 λ³€κ²½λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ–΄λ–»κ²Œ λ³€κ²½ 사항이 λ°œμƒν•œ 것을 μ•Œ 수 μžˆμ„κΉŒμš”?

πŸ‘ΎΒ : persistent change token 을 μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€!

11 12

μƒˆλ‘œμš΄ API λŠ” PhotoKit 을 μ§€μ›ν•˜λŠ” λͺ¨λ“  ν”Œλž«νΌμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€.

13

앱이 μ‹€ν–‰λ˜κ³  사진 λΌμ΄λΈŒλŸ¬λ¦¬μ™€ ν•¨κ»˜ μž‘λ™ν•˜λ©΄ μ—¬λŸ¬λΆ„μ€ persistent change token 을 μ•± 내에 μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ‘‰Β Photos 객체에 λŒ€ν•œ λ³€κ²½ μ„ΈλΆ€ 정보λ₯Ό μ„Έ 가지 μœ ν˜•μœΌλ‘œ κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

14

πŸ‘‰Β μ½”λ“œλ‘œ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

15 16 17

πŸ‘‰Β μƒˆλ‘œμš΄ persistent history API 와 기쑴의 change observer API λ₯Ό 비ꡐ해 λ³΄κ² μŠ΅λ‹ˆλ‹€.

18

μ—¬λŸ¬λΆ„λ“€μ€ μš”κ΅¬μ‚¬ν•­μ— 따라 μœ„μ˜ API λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ΄ν‚Ή μ•±μœΌλ‘œ λŒμ•„κ°€ λ΄…μ‹œλ‹€.

19

이제 ν•˜μ΄ν‚Ή 콜라주λ₯Ό λ§Œλ“€κ³  μ—…λ°μ΄νŠΈ ν•˜κΈ° μœ„ν•΄ persistent change API λ₯Ό μ‚¬μš©ν•΄μ„œ 에셋을 μΆ”μ ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

이제 λ³€κ²½ μ •λ³΄μ—μ„œ 앱에 영ν–₯을 λ―ΈμΉ˜λŠ” 라이브러리 λ³€κ²½ 사항을 식별해야 ν•©λ‹ˆλ‹€. 이미 μš°λ¦¬λŠ” updated, deleted, inserted local identifiers λ₯Ό μ‹λ³„ν–ˆμŠ΅λ‹ˆλ‹€.

πŸ‘‰Β μ–΄λ–»κ²Œ 이걸 λ°˜μ˜ν•΄ μ—…λ°μ΄νŠΈ ν• κΉŒμš”?

20

insertedIdentifiers λ₯Ό μ‚¬μš©ν•΄μ„œ μ‚½μž…λœ 에셋을 κ°€μ Έμ˜€κ³  μ–΄λ–€ 에셋이 μ‚½μž…λ˜μ—ˆλŠ”μ§€ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

21

ν•˜μ΄ν‚Ή μ‹œμž‘κ³Ό μ’…λ£Œμ™€ 생성 λ‚ μ§œλ₯Ό λΉ„κ΅ν•˜λ©° ν•˜μ΄ν‚Ή νƒ€μž„μŠ€νƒ¬ν”„ μ‚¬μ΄μ˜ λ³€ν™”λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

22

μ—…λ°μ΄νŠΈ 된 에셋듀에 μˆ˜μ •μ΄ μžˆμ„ 수 μžˆμœΌλ‹ˆ hasAdjustments API λ₯Ό μ‚¬μš©ν•΄ UI 에 에셋을 λ‹€μ‹œ κ·Έλ €μ•Όν•˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

23

deleteIdentifier λ₯Ό μ‚¬μš©ν•΄ μž¬μƒμ„±μ΄ ν•„μš”ν•œ 콜라주λ₯Ό κ²°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ‘ΎΒ : 이제 λ³€κ²½ 사항은 λͺ¨λ‘ μ²˜λ¦¬ν–ˆκ³ , 앱은 μ΅œμ‹  μƒνƒœμž…λ‹ˆλ‹€.

μƒˆλ‘œμš΄ API λ₯Ό μ‚¬μš©ν•  λ•Œ μ£Όμ˜ν•΄μ•Ό ν•  사항이 λͺ‡ 가지 μžˆμŠ΅λ‹ˆλ‹€.

βœ…Β Considerations

24

μ—…λ°μ΄νŠΈ, μ‚½μž…λœ 에셋에 λŒ€ν•΄ μ„±λŠ₯ ν–₯상을 보이기 μœ„ν•΄μ„œλŠ” μ—¬λŸ¬ 개의 μž‘μ€ μš”μ²­ λŒ€μ‹  ν•˜λ‚˜μ˜ 큰 fetch κ°€ μ’‹μŠ΅λ‹ˆλ‹€.

βœ…Β Handling errors

persistent changes λ₯Ό fetch ν•  λ•Œ 였λ₯˜ 두 가지가 μžˆμŠ΅λ‹ˆλ‹€.

25 26

μœ„μ˜ 경우 앱이 μ΅œμ‹  μƒνƒœμΈμ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 사진 λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μΆ”μ λœ 객체λ₯Ό refetch ν•˜λŠ” 것을 κΆŒν•©λ‹ˆλ‹€.

2️⃣ Additional PhotoKit APIs

μƒˆλ‘œμš΄ PhotoKit API κ°€ λͺ‡ 가지 더 μžˆμŠ΅λ‹ˆλ‹€.

27 28

PhotoKit 은 λ―Έλ””μ–΄ ν•˜μœ„ μœ ν˜• 및 슀마트 μ•¨λ²”μ—μ„œ cinematic λΉ„λ””μ˜€μ— 접근을 μ§€μ›ν•©λ‹ˆλ‹€.

πŸ‘‰Β μ—¬κΈ°μ— μƒˆλ‘œμš΄ 였λ₯˜ μ½”λ“œλ„ 두 개 μžˆμŠ΅λ‹ˆλ‹€.

29

πŸ‘ΎΒ : Photos picker κ΄€ν•œ μ˜¬ν•΄ μ„Έμ…˜λ„ μžˆμŠ΅λ‹ˆλ‹€!

30 31