Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Widget watchOSのプライバシー対応とBeta版iOSでの開発 / Supporting Privacy for Widget watchOS and Development under Beta iOS.

Widget watchOSのプライバシー対応とBeta版iOSでの開発 / Supporting Privacy for Widget watchOS and Development under Beta iOS.

Widget/watchOSのプライバシー対応とBeta版iOSでの開発

鶴川 純一/LINE株式会社 iOS/Androidエクスペリエンス開発チーム
2021年4月中途入社。LINEアプリのクライアントエンジニアとして、iOSプラットフォームにおける新機能のアプリへの導入や機能改善を担当。コーヒーが好き。

※この資料は以下のイベントで発表されました。
https://line.connpass.com/event/228428/

A3966f193f4bef226a0d3e3c1f728d7f?s=128

LINE Developers
PRO

November 02, 2021
Tweet

Transcript

  1. Widget/watchOSのプライバシー対応と Beta版iOSでの開発 LINE株式会社 iOS/Androidエクスペリエンス開発チーム 鶴川 純一 2021.11.02 ヤフー × LINE

    iOS Meetup
  2. • ௽઒ ७Ұ • -*/&גࣜձࣾ J04"OESPJEΤΫεϖϦΤϯε։ൃνʔϜ • ೥݄த్ೖࣾ • "QQMF8BUDI4FSJFTಧ͖·ͨ͠🙂

    ࣗݾ঺հ
  3. 8JEHFUͱXBUDI04ΞϓϦʹؔ͢ΔɺJ04XBUDI04 ͰͷϓϥΠόγʔରԠ ࠓ೔ͷτϐοΫ

  4. • ϓϥΠόγʔ؍఺ͰΈͨ8JEHFUͱXBUDI04 BQQ • ϓϥΠόγʔʹؔ͢Δ৽ػೳͱ࣮૷ʹ͍ͭͯ • ࣮૷ʹ͋ͨͬͯૺ۰ͨ͠໰୊ͱͦͷରԠ • #FUB൛J04Ͱͷ։ൃͷϋϚΓͲ͜Ζ •

    ·ͱΊ Contents
  5. ϓϥΠόγʔ؍఺ͰΈͨ 8JEHFUͱXBUDIBQQ

  6. • 8JEHFU͸ϩοΫεΫϦʔϯʹ΋දࣔͰ͖Δ • ϩοΫΛղআ͍ͯ͠ͳͯ͘΋ɺ8JEHFUͷ಺༰ΛݟΔ͜ͱ͕ग़དྷΔ • ࿈བྷઌͳͲͷݸਓ৘ใ͕ɺ୭͔ʹݟΒΕͯ͠·͏ϦεΫ͕͋Δ 8JEHFU

  7. • "MXBZT0O ৗʹදࣔ ͱ͍͏ػೳ͕͋Δ • จࣈ൫͕ࣗ෼ʹ޲͍͍ͯͳͯ͘΋ɺը໘͕දࣔ͞Εଓ͚Δػೳ • 4FSJFTҎ߱ͷ୺຤ͰରԠ • XBUDI04·Ͱ

    • ࿹ΛԼ͛Δͱ • ࣌ܭ͕දࣔ͞Εɺഎܠ͕ϘέͯɺΞϓϦέʔγϣϯͷίϯςϯπ ΛೝࣝͰ͖ͳ͘ͳΔ XBUDI04 BQQ ˞*NBHFGSPN88%$8IBUTOFXJOXBUDI04  IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED ˞
  8. • XBUDI04͔Β "MXBZT0Oͷڍಈ͕มΘͬͨ • ࿹ΛԼ͛ͨͱ͖ʹ΋"QQͷ಺༰ΛදࣔͰ͖ΔΑ͏ʹͳͬͨ • ϝοηʔδͷ಺༰͕֎෦ʹҙਤͤͣݟ͑ͯ͠·͏ϦεΫ͕͋Δ XBUDI04 BQQ ˞*NBHFGSPN88%$8IBUTOFXJOXBUDI04

     IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED
  9. ͲͷΑ͏ʹରԠͰ͖Δ͔

  10. • J04XBUDI04 ͔ΒɺϩοΫ࣌΍"MXBZT0O͕༗ޮͳ৔߹ʹ೚ҙͷ6*ΛӅ͢͜ͱ͕ ग़དྷΔΑ͏ʹͳͬͨ • γϯϓϧʹ࣮૷͢ΔͳΒɺҎԼͷ"1*Λ࢖͏͚ͩ • 4XJGU6* ͷ QSJWBDZ4FOTJUJWF

    @ 7JFX.PEJpFS ࣮૷ var body: some View { Text(Date(), style: .time) Text("Secret Text.") .privacySensitive() }
  11. • ΑΓࡉ੍͔͘ޚ͍ͨ͠৔߹͸ʁ ϩοΫத͸දࣔΛม͍͑ͨ FUD • 3FEVDUJPO3FBTPOT ͱ͍͏ &OWJSPONFOU7BMVF ΛݟΔ •

    J04XBUDI04͔ΒɺQSJWBDZͱ͍͏ϓϩύςΟ͕௥Ճ͞Εͨ ࣮૷ @Environment(\.redactionReasons) var redactionReasons var body: some View { Text(Date(), style: .time) if redactionReasons.contains(.privacy) { // Locked Text("Unlock to see the text.") } else { Text("Secret Text.") } }
  12. -*/&ΞϓϦʹద༻ 8JEHFU 6OMPDL࣌ -PDL࣌

  13. -*/&ΞϓϦʹద༻ XBUDIBQQ 例: トークリスト画面 例: トーク画面

  14. %POFʂ

  15. ຊ౰ʹʁ🤔

  16. -*/&ΞϓϦʹద༻ 8JEHFU 6OMPDL࣌ -PDL࣌

  17. ϓϨʔεϗϧμʔ͕ͣΕͯදࣔ͞ΕΔ var body: some View { VStack(alignment: .leading) { Text(Date(),

    style: .time) .privacySensitive() Text("English text") .privacySensitive() Text("Это русский текст.") .privacySensitive() Text("⽇本語のテキスト") .privacySensitive() Text("이것은 한국어 텍스트입니다.") .privacySensitive() Text("🍎🖥📱⌚") .privacySensitive() } }
  18. • 3FEVDUJPO3FBTPOT Λར༻ͯ͠໰୊Λճආ͢Δ • ϩοΫ࣌ʹ͸ΧελϜͳ6*ͰϓϨʔεϗϧμʔΛදݱ ϓϨʔεϗϧμʔ͕ͣΕͯදࣔ͞ΕΔ var customPlaceholder: some View

    { Rectangle() .cornerRadius(2) .foregroundColor(Color(UIColor.lightGray)) .frame(width: 140, height: 10, alignment: .leading) } var body: some View { VStack(alignment: .leading) { if redactionReasons.contains(.privacy) { // Locked customPlaceholder customPlaceholder } else { Text("English text").privacySensitive() Text("⽇本語のテキスト").privacySensitive() } } }
  19. ϓϨʔεϗϧμʔ͕ͣΕͯදࣔ͞ΕΔ 6OMPDL࣌ -PDL࣌ 04%FGBVMU -PDL࣌ $VTUPN6*

  20. • ઃఆՄೳͳϓϩύςΟΛ࣋ͬͨ8JEHFU *OUFOU$POpHVSBUJPO • ઃఆ͕มߋ͞Εͨ͋ͱʹɺຊདྷϚεΫ͞ΕΔ΂͖৔ॴ͕ϩοΫதͰ΋ දࣔ͞Εͨ··ʹͳΔ😨 • ΞϓϦͷ࣮૷͕ѱ͔ͬͨͷ͔ʁ • 8JEHFUͷදࣔΛ؅ཧ͍ͯ͠Δͷ͸J04ଆ

    • ΞϓϦͰ͸Կ΋ग़དྷͳ͍😇 8JEHFUͷઃఆΛมߋ͢ΔͱϓϨʔεϗϧμʔ͕දࣔ͞Εͳ͍
  21. #FUB൛Ͱͷ։ൃͷϋϚΓͲ͜Ζ

  22. • 6OEPDVNFOUFEͳ࢓༷΍ڍಈͷมߋ͕͋Δ • طଘͷ"1*ʹରͯ͠αΠϨϯτͳڍಈมߋ΋͋ͬͨΓ͢Δ • ڍಈ͕·ͩෆ҆ఆ • ࢥͬͨͱ͓Γʹಈ͔ͳ͍ͷ͸ɺΞϓϦͷ࣮૷͕ѱ͍ͷ͔ɺ04ଆͷ໰୊ͳͷ͔ʁ #FUB൛Ͱͷ։ൃͷϋϚΓͲ͜Ζ

  23. • 'FFECBDL"TTJTUBOU • όά΍ո͍͠ڍಈΛݟ͚ͭͨΒ·ͣ͜͜ʹ౤ߘ͢Δ • සൟʹ΍ΓऔΓ͕ൃੜ͢ΔΘ͚Ͱ͸ͳ͍఺ʹ஫ҙ • "QQMF%FWFMPQFS'PSVN • "QQMFͷΤϯδχΞ΋νΣοΫ͍ͯ͠Δ

    • 'FFECBDL"TTJTUBOUʹՃ͑ͯɺ'PSVNͰ΋ڞ༗͢ΔͱରԠ͕͸΍͘ ͳΔ ͔΋ • $PEF-FWFM4VQQPSUͱ͍͏ͷ΋͋Δ Կ͕ग़དྷΔ͔
  24. None
  25. ·ͱΊ

  26. • 8JEHFUXBUDI04 ϓϥΠόγʔରԠ • Ϣʔβʔ͞ΜʹΑΓ҆৺ͯ͠ΞϓϦΛར༻͍͚ͯͨͩ͠Δ৽͍͠ػೳ • γϯϓϧͳ࣮૷Ͱ࣮ݱͰ͖Δ • ·ͩڍಈʹ໰୊͕͋ΔͷͰɺϫʔΫΞϥ΢ϯυͷରԠ͕ඞཁʹͳΔ͔΋ ·ͱΊ

  27. • #FUB൛J04Ͱͷ։ൃ • ະ஌ͱͷૺ۰ • Կ͕ग़དྷΔ͔ग़དྷΔΑ͏ʹͳ͔ͬͨग़དྷͳ͍͔Λܧଓͯ͠ௐࠪ • গͳ͍৘ใͰղܾࡦΛ໛ࡧ͍͔ͯ͠ͳ͚Ε͹ͳΒͳ͍ • ίϛϡχέʔγϣϯ

    • ࣾ಺ ϓϥϯφʔσβΠφʔΤϯδχΞ ͚ͩͰͳࣾ͘֎ "QQMF ͱͷ࿈ܞ΋ඞཁ • 04ͷ৽͍͠ػೳΛ࢖ͬͯɺ৽͍͠ମݧΛ͍ͪૣ͘Ϣʔβʔ͞Μʹಧ͚ΒΕΔָ͠͞ ·ͱΊ
  28. • 88%$4FTTJPOT • 1SJODJQMFTPGHSFBUXJEHFUT • IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED • 8IBUTOFXJOXBUDI04  •

    IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED • "QQMF%PDVNFOUBUJPOT • QSJWBDZ4FOTJUJWF @ • IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTXJGUVJPVUMJOFTVCHSPVQDIJMESFOQSJWBDZTFOTJUJWF @ • 3FEBDUJPO3FBTPOT QSJWBDZ • IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTXJGUVJSFEBDUJPOSFBTPOTQSJWBDZ • #VH3FQPSUJOH • 'FFECBDL"TTJTUBOUGPS%FWFMPQFST • IUUQTEFWFMPQFSBQQMFDPNCVHSFQPSUJOH ࢀߟ
  29. None