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

即時通知を導入する際に考えるべきこと

aoi
September 12, 2022

 即時通知を導入する際に考えるべきこと

aoi

September 12, 2022
Tweet

More Decks by aoi

Other Decks in Technology

Transcript

  1. ଈ࣌௨஌Λಋೖ͢Δࡍʹߟ͑Δ΂͖͜ͱ
    Aoi Okawa (@aomathwift)

    View Slide

  2. ●Aoi Okawa (@aomathwift)
    ●Cookpad Inc. iOS Developer
    ࣗݾ঺հ

    View Slide

  3. ಥવͰ͕͢օ͞ΜΞϓϦͷ௨஌ͬͯݟͯ·͔͢ʁ

    View Slide

  4. ࢲ͸΄ͱΜͲݟͯ·ͤΜ…

    View Slide

  5. ࠷ۙͷiOSͷ௨஌ࣄ৘

    View Slide

  6. OSʹΑΔ௨஌੍ޚɿूதϞʔυ
    ●׆ಈʹԠͯ͡ίϯςϯπΛ੍ޚ͢Δ
    ●ҎԼͷΑ͏ͳΧελϜ͕Մೳ
    • ϗʔϜը໘ɾϩοΫը໘ͷݟ͑ํ
    • ௨஌ͷ഑৴ΛڐՄ͢ΔΞϓϦ

    View Slide

  7. OSʹΑΔ௨஌੍ޚɿ௨஌ཁ໿
    ●ಧ͍ͨ௨஌Λࢦఆͨ࣌ؒ͠ʹ·ͱΊͯ഑৴
    ●ཁ໿ʹؚΊΔΞϓϦ͸Ϣʔβʔଆ͕ࢦఆ

    View Slide

  8. ௨஌͕ΑΓݟΒΕʹ͘͘ͳΔઃఆ͕૿͍͑ͯΔ

    View Slide

  9. OSઃఆΛಥഁ͢Δखஈ
    ●ଈ࣌௨஌ͱΑ͹ΕΔ΋ͷ
    ●௨஌੍ޚͷ΋ͱͰ΋ଈ࣌഑৴Մೳ
    ●ݶΒΕͨ࣌ؒ಺ʹ֬ೝ͢΂͖৘ใ
    ΛऔΓ࿙Β͞ͳ͍ͨΊͷػೳ

    View Slide

  10. ଈ࣌௨஌ྫ

    View Slide

  11. ଈ࣌௨஌࠷ߴศརʂʂ
    ಋೖͯ͠௨஌Λ͙͢ʹݟͯ΄͍͠ʂʂ

    View Slide

  12. ͱࢥͬͯΔͦ͜ͷ͋ͳͨ

    View Slide

  13. ͜ͷτʔΫͷର৅
    ●ଈ࣌௨஌Λ͜Ε͔Βಋೖ͍ͨ͠ͱࢥ͍ͬͯΔํ
    ●طʹಋೖࡁΈͰΤϯδχΞҎ֎ͷϝϯόʔؚΉνʔϜͰ
    ӡ༻͍ͯ͠Δํ

    View Slide

  14. ຊ೔ͷAgenda
    ●ଈ࣌௨஌ͷ֓ཁ
    ●࣮ྫʹଈͯ͠ߟ͑Δଈ࣌௨஌ͷ࢖͍ॴ
    ●ଈ࣌௨஌Λ࣮ࡍʹར༻ͯ͠Έͨॴײ
    ●ӡ༻্͍ͯ͘͠ͰؾΛ͚ͭΔ͜ͱ

    View Slide

  15. ΫοΫύουϚʔτͱ͸

    View Slide

  16. ΫοΫύουϚʔτͱ͸
    ●ੜ઱৯඼ωοτεʔύʔ
    ●ΞϓϦͰ஫จ
    ●޷͖ͳ࣌ؒɾ৔ॴͰड͚औΓ

    View Slide

  17. View Slide

  18. ଈ࣌௨஌ͱ͸

    View Slide

  19. Interruption Level
    ●௨஌ͷ഑৴λΠϛϯάͱॏཁੑΛܾΊΔࢦඪ
    ●iOS 15ΑΓಋೖ
    ●UNNotificationInterruptionLevel

    View Slide

  20. Interruption Level
    ●Passive
    ●Active
    ●TimeSensitive
    ●Critical

    View Slide

  21. Interruption Level
    ●Passive
    ●Active
    ●TimeSensitive = ଈ࣌௨஌
    ●Critical

    View Slide

  22. ଈ࣌௨஌ͷಛ௃
    ●഑৴ޙ1࣌ؒ͸ϩοΫը໘ʹ࢒Δ
    ●ଈ࣌௨஌Λड͚औΓଓ͚Δ͔Ͳ͏
    ͔Λ͔֬ΊΔΞΫγϣϯ͕෇ଳ

    View Slide

  23. ଈ࣌௨஌ͷ࣮૷ʢϩʔΧϧʣ
    import UserNotifications


    let content = UNMutableNotificationContent()


    content.title = "Reminder"


    content.body = "Take medicine."


    content.interruptionLevel = .timeSensitive


    let trigger = UNCalendarNotificationTrigger(


    dateMatching: date,


    repeats: false


    )


    let request = UNNotificationRequest(


    identifier: identifier,


    content: content,


    trigger: trigger


    )

    View Slide

  24. ଈ࣌௨஌ͷ࣮૷ʢϦϞʔτʣ
    {


    "aps" : {


    "alert" : {


    "title" : "Reminder",


    "body" : "Take medicine."


    },


    "interruption-level" : "time-sensitive"


    }


    }


    View Slide

  25. Apple͕ਪ঑͢Δ࢖͍ํ
    ●ݱࡏਐߦத·ͨ͸1࣌ؒҎ಺ʹൃੜ͢Δ༧ఆͷΠϕϯτʹ
    ؔ͢Δ௨஌
    ग़యɿHuman Interface Guidelines / Managing Notifications

    View Slide

  26. Apple͕ਪ঑͢Δ࢖͍ํʢྫʣ
    ●ग़લΞϓϦʹ͓͚Δ഑ૹ௨஌
    ●ΧϨϯμʔΞϓϦʹ͓͚Δ༧ఆͷ௨஌
    ग़యɿSend communication and Time Sensitive notifications

    View Slide

  27. ࣮ྫʹଈͯ͠ߟ͑Δଈ࣌௨஌ͷ࢖͍ॴ

    View Slide

  28. Apple७ਖ਼ΞϓϦέʔγϣϯͰͷར༻ྫ

    View Slide

  29. ΧϨϯμʔΞϓϦ
    ●༧ఆ࡞੒࣌ʹ௨஌ΛΦϯʹઃఆ͢Δͱଈ࣌
    ௨஌ͱͯ͠ಧ͘

    View Slide

  30. ୳͢ΞϓϦ
    ●ܞߦ඼͕ϢʔβʔͷҐஔ৘ใͱେ͖͘཭Εͨ
    ͜ͱΛݕ஌ͨ͠ࡍʹ௨஌

    View Slide

  31. ϦϚΠϯμʔΞϓϦ
    ●௨஌τϦΨʔ͸೔࣌·ͨ͸Ґஔ৘ใΛ΋ͱ
    ʹࣗ༝ʹઃఆͰ͖Δ
    ●ʮ࣮ߦࡁΈʯʹ͢Δ·ͰϩοΫը໘ʹ࢒Δ

    View Slide

  32. ݁ہͲ͏͍͏৔໘Ͱ࢖͏΂͖ʁ

    View Slide

  33. ଈ࣌௨஌Λ࢖͏΂͖ॴ
    ●Ґஔ৘ใͷมԽʹґଘ͢Δ௨஌
    ●εέδϡʔϧͷ௨஌

    View Slide

  34. ଈ࣌௨஌Λ࣮ࡍʹಋೖͯ͠Έͯ

    View Slide

  35. ΫοΫύουϚʔτͰͷಋೖࣄྫ
    ࣗ୐഑ૹ޲͚ͷ


    ͓ಧ͚௨஌
    ड͚औΓ๨Ε


    ֬ೝ௨஌
    εςʔγϣϯ޲͚ͷ


    ͓ಧ͚௨஌

    View Slide

  36. ಋೖཧ༝
    ●εςʔγϣϯͷडऔՄೳ࣌ؒΛ͗͢Δͱɺ঎඼Λड͚औ
    Εͳ͘ͳΔ
    ●ࣗ୐഑ૹडऔ࣌ʹෆࡏͩͱɺ঎඼͕ճऩ͞ΕΔ
    → ݶΒΕͨ࣌ؒ಺ʹΞΫγϣϯ͠ͳ͍ͱෆརӹΛඃΔ

    View Slide

  37. ϚʔτΞϓϦͰͲΕ͘Β͍ར༻͞Ε͍ͯΔ͔
    શiOSΞΫςΟϒϢʔβʔʹର͢Δ
    ϓογϡ௨஌ڐՄϢʔβʔͷׂ߹
    ϓογϡ௨஌ΛڐՄ
    42%
    ϓογϡ௨஌ΛະڐՄ
    58%
    ϓογϡ௨஌ڐՄϢʔβʔʹର͢Δ
    ଈ࣌௨஌༗ޮϢʔβʔͷׂ߹
    ଈ࣌௨஌༗ޮ
    69%
    ଈ࣌௨஌ແޮ
    31%

    View Slide

  38. ಋೖޙʹग़͖ͯͨ໰୊
    ●௨஌ΛϥΠτʹଈ࣌௨஌ʹઃఆ͢Δ
    ●ʮTime Sensitive͍ͬͯ͏ͷ͕͋Δ͔Βઃఆ͓ͯ͘͠ͱ͍
    ͍ͷͰ͸ʁʯʮΑͦ͞͏ʯ

    View Slide

  39. ಋೖޙʹग़͖ͯͨ໰୊
    ●ॏཁͳ௨஌ʹଈ࣌௨஌ͱ͍͏ೝ͕ࣝਁಁͯͦ͠ͷج४Ͱ
    ٞ࿦͕͞ΕΔ
    ●ʮ͜ͷ௨஌ؾ͔ͮͳ͍ͱ·͍͔ͣΒଈ࣌௨஌ʹ͍ͨ͠ʯ

    View Slide

  40. ଈ࣌௨஌͕ెʹ૿͑ͯ͠·͏

    View Slide

  41. ଈ࣌௨஌͕૿͑ΔͱͲ͏ͳΔ͔
    ڧׂ͍ΓࠐΈ͕૿͑ΔͱϢʔβʔ͕ετϨεΛײ͡Δ
    → ଈ࣌௨஌Λແޮʹ͢Δ
    → ਅʹؾͮ͘΂͖େ੾ͳ৘ใʹؾ͚ͮͳ͘ͳΔ

    View Slide

  42. νʔϜͰӡ༻͢Δ্ͰؾΛ͚ͭΔ͜ͱ

    View Slide

  43. ଈ࣌௨஌ར༻ن໿Λ࡞Δ
    ●αʔϏε։ൃʹؔΘΔϝϯόʔ͕ҎԼΛཧղ͢ΔͨΊͷ
    υΩϡϝϯτ
    ●ଈ࣌௨஌ͷ֓ཁͱར༻ϝϦοτ
    ●ΫοΫύουϚʔτͰଈ࣌௨஌Λࢦఆ͢Δج४
    ●HIG౳ΛಡΈ߹ΘͤͯiOSΤϯδχΞ͕ϝΠϯͰ࡞੒

    View Slide

  44. ϓογϡ௨஌Λ৽ઃ͢Δϑϩʔ
    ΧςΰϦͷ


    ઃఆͱ௨஌


    Ϧετ΁ͷهೖ
    λΠτϧɾຊจ


    ഑৴λΠϛϯά
    ͳͲ௨஌ίϯς
    ϯπͷઃܭ
    ଈ࣌௨஌΁ͷ


    ରԠͷݕ౼

    View Slide

  45. ଈ࣌௨஌ ଈ࣌௨஌Ͱͳ͍
    Ϣʔβʔ͕ओମͱͳΔऔҾʹ
    ؔΘΔ௨஌Ͱ͋Δ͔
    ଈ࣌௨஌ ଈ࣌௨஌Ͱͳ͍
    Ϣʔβʔࣗ਎͕ઃఆͨ͠༧ఆ
    ʹؔ͢Δ௨஌Ͱ͋Δ͔
    NO
    YES
    NO
    NO
    YES
    YES
    ഑৴ޙ਺࣌ؒҎ಺ʹϢʔβʔ
    ͕ߦಈΛى͜͢ඞཁ͕͋Δ͔

    View Slide

  46. ن໿ಋೖޙͲ͏ͳ͔ͬͨ
    ●ଈ࣌௨஌ʹ͍ͭͯಋೖʹݕ౼͕ཁΔ΋ͷͰ͋Δͱ͍͏Π
    ϯϓοτ͕ἧͬͨ
    ●ࢪࡦʹΑͬͯ͸ଈ࣌௨஌ʹͳΓಘΔ௨஌͸૿͑ͳ͍ͱ͍
    ͏൑அͰݕ౼ͷϑϩʔΛεΩοϓͰ͖ΔΑ͏ʹ

    View Slide

  47. ݱঢ়
    ●ར༻ن໿ͷ؅ཧɾΞοϓσʔτɾϑϩʔఆண·Ͱͷݟक
    Γ͸iOSΤϯδχΞͷ੹຿ͱ͍͏ཱͯ෇͚
    ●࣮ࡍ͸Ұ෦ͷϝϯόʔ͕ΞϯςφΛுͬͯݟ͍ͯΔ

    View Slide

  48. ࠓޙͲ͏ͳ͍ͬͯ͘ͱྑ͍͔
    ●iOSΤϯδχΞҎ֎ͷϝϯόʔ΋ݕ౼ϑϩʔʹҙࣝΛ࣋ͭ
    ●௨஌ͷ৽ن௥Ճ͔Βଈ࣌௨஌ݕ౼·ͰͷϑϩʔͷࣗಈԽ
    • ྫɿPR্ͰϨϏϡʔ͕ͳ͍ͱ௥ՃͰ͖ͳ͍

    View Slide

  49. ·ͱΊʢଈ࣌௨஌ΛҰ౓ಋೖͨ͠Βʣ
    ●ศརͰ΋ಋೖՕॴ͸ཁݕ౼
    ●αʔϏε։ൃʹؔΘΔશһͰڞ௨ΠϯϓοτΛ࣋ͯΔΑ
    ͏ʹ͢Δ

    View Slide

  50. એ఻

    View Slide