Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
即時通知を導入する際に考えるべきこと
Search
aoi
September 12, 2022
Technology
6.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
即時通知を導入する際に考えるべきこと
https://fortee.jp/iosdc-japan-2022/proposal/dc963bce-52bd-429c-86ed-9a7b314063ce
aoi
September 12, 2022
More Decks by aoi
See All by aoi
モバイルアプリの行動ログの運用つらさ解消法 / mobile-log-troubleshooting
aomathwift
3
3k
ロック画面Widgetをサクッと実装してみた話
aomathwift
3
490
OS 固有の新機能をサービスに取り入れ活用していくための Tips
aomathwift
0
96
DocC Documentation Archiveをアプリ開発で活用してみよう / DocC Documentation Archive for iOS Application
aomathwift
0
690
機能ごとに動作するミニアプリでプレビューサイクルを爆速にした話 After Talk
aomathwift
0
560
機能ごとに動作するミニアプリでプレビューサイクルを爆速にした話
aomathwift
1
12k
Other Decks in Technology
See All in Technology
hookで自作する Claude Code の「実況ボード」
shinyasaita
2
230
Oracle AI Databaseデータベース・サービス: BaseDB/ExaDB-Dの可用性
oracle4engineer
PRO
1
960
IHV like なユースケースへのOpenID Connect 関連仕様の適用事例
optim
0
350
Kiro5兄弟のいまどきのセキュリティ基礎知識
kentapapa
0
380
:syncing_time:
sksat
3
840
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
510
現場の暗黙知を継承するAIエージェント — 対話から生まれる長期記憶と Skills
atsukish
0
130
ClaudeCodeでセキュリティ監視業務を半自動化_1年の運用でわかったAIに任せる設計の5つのポイント
kintotechdev
3
890
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
350
Windows の互換機能 - 古いプログラムはなぜ動作できるのか
murachiakira
PRO
0
130
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
20k
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
460
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
950
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Test your architecture with Archunit
thirion
2
2.4k
Claude Code のすすめ
schroneko
67
230k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building Adaptive Systems
keathley
44
3.2k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
420
How to Ace a Technical Interview
jacobian
281
24k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Darren the Foodie - Storyboard
khoart
PRO
3
3.8k
Transcript
ଈ࣌௨Λಋೖ͢Δࡍʹߟ͑Δ͖͜ͱ Aoi Okawa (@aomathwift)
•Aoi Okawa (@aomathwift) •Cookpad Inc. iOS Developer ࣗݾհ
ಥવͰ͕͢օ͞ΜΞϓϦͷ௨ͬͯݟͯ·͔͢ʁ
ࢲ΄ͱΜͲݟͯ·ͤΜ…
࠷ۙͷiOSͷ௨ࣄ
OSʹΑΔ௨੍ޚɿूதϞʔυ •׆ಈʹԠͯ͡ίϯςϯπΛ੍ޚ͢Δ •ҎԼͷΑ͏ͳΧελϜ͕Մೳ • ϗʔϜը໘ɾϩοΫը໘ͷݟ͑ํ • ௨ͷ৴ΛڐՄ͢ΔΞϓϦ
OSʹΑΔ௨੍ޚɿ௨ཁ •ಧ͍ͨ௨Λࢦఆͨ࣌ؒ͠ʹ·ͱΊͯ৴ •ཁʹؚΊΔΞϓϦϢʔβʔଆ͕ࢦఆ
௨͕ΑΓݟΒΕʹ͘͘ͳΔઃఆ͕૿͍͑ͯΔ
OSઃఆΛಥഁ͢Δखஈ •ଈ࣌௨ͱΑΕΔͷ •௨੍ޚͷͱͰଈ࣌৴Մೳ •ݶΒΕͨ࣌ؒʹ֬ೝ͖͢ใ ΛऔΓ࿙Β͞ͳ͍ͨΊͷػೳ
ଈ࣌௨ྫ
ଈ࣌௨࠷ߴศརʂʂ ಋೖͯ͠௨Λ͙͢ʹݟͯ΄͍͠ʂʂ
ͱࢥͬͯΔͦ͜ͷ͋ͳͨ
͜ͷτʔΫͷର •ଈ࣌௨Λ͜Ε͔Βಋೖ͍ͨ͠ͱࢥ͍ͬͯΔํ •طʹಋೖࡁΈͰΤϯδχΞҎ֎ͷϝϯόʔؚΉνʔϜͰ ӡ༻͍ͯ͠Δํ
ຊͷAgenda •ଈ࣌௨ͷ֓ཁ •࣮ྫʹଈͯ͠ߟ͑Δଈ࣌௨ͷ͍ॴ •ଈ࣌௨Λ࣮ࡍʹར༻ͯ͠Έͨॴײ •ӡ༻্͍ͯ͘͠ͰؾΛ͚ͭΔ͜ͱ
ΫοΫύουϚʔτͱ
ΫοΫύουϚʔτͱ •ੜ৯ωοτεʔύʔ •ΞϓϦͰจ •͖ͳ࣌ؒɾॴͰड͚औΓ
None
ଈ࣌௨ͱ
Interruption Level •௨ͷ৴λΠϛϯάͱॏཁੑΛܾΊΔࢦඪ •iOS 15ΑΓಋೖ •UNNotificationInterruptionLevel
Interruption Level •Passive •Active •TimeSensitive •Critical
Interruption Level •Passive •Active •TimeSensitive = ଈ࣌௨ •Critical
ଈ࣌௨ͷಛ •৴ޙ1࣌ؒϩοΫը໘ʹΔ •ଈ࣌௨Λड͚औΓଓ͚Δ͔Ͳ͏ ͔Λ͔֬ΊΔΞΫγϣϯ͕ଳ
ଈ࣌௨ͷ࣮ʢϩʔΧϧʣ 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 )
ଈ࣌௨ͷ࣮ʢϦϞʔτʣ { "aps" : { "alert" : { "title" :
"Reminder", "body" : "Take medicine." }, "interruption-level" : "time-sensitive" } }
Apple͕ਪ͢Δ͍ํ •ݱࡏਐߦத·ͨ1࣌ؒҎʹൃੜ͢Δ༧ఆͷΠϕϯτʹ ؔ͢Δ௨ ग़యɿHuman Interface Guidelines / Managing Notifications
Apple͕ਪ͢Δ͍ํʢྫʣ •ग़લΞϓϦʹ͓͚Δૹ௨ •ΧϨϯμʔΞϓϦʹ͓͚Δ༧ఆͷ௨ ग़యɿSend communication and Time Sensitive notifications
࣮ྫʹଈͯ͠ߟ͑Δଈ࣌௨ͷ͍ॴ
Apple७ਖ਼ΞϓϦέʔγϣϯͰͷར༻ྫ
ΧϨϯμʔΞϓϦ •༧ఆ࡞࣌ʹ௨ΛΦϯʹઃఆ͢Δͱଈ࣌ ௨ͱͯ͠ಧ͘
୳͢ΞϓϦ •ܞߦ͕ϢʔβʔͷҐஔใͱେ͖͘Εͨ ͜ͱΛݕͨ͠ࡍʹ௨
ϦϚΠϯμʔΞϓϦ •௨τϦΨʔ࣌·ͨҐஔใΛͱ ʹࣗ༝ʹઃఆͰ͖Δ •ʮ࣮ߦࡁΈʯʹ͢Δ·ͰϩοΫը໘ʹΔ
݁ہͲ͏͍͏໘Ͱ͏͖ʁ
ଈ࣌௨Λ͏͖ॴ •ҐஔใͷมԽʹґଘ͢Δ௨ •εέδϡʔϧͷ௨
ଈ࣌௨Λ࣮ࡍʹಋೖͯ͠Έͯ
ΫοΫύουϚʔτͰͷಋೖࣄྫ ࣗૹ͚ͷ ͓ಧ͚௨ ड͚औΓΕ ֬ೝ௨ εςʔγϣϯ͚ͷ ͓ಧ͚௨
ಋೖཧ༝ •εςʔγϣϯͷडऔՄೳ࣌ؒΛ͗͢ΔͱɺΛड͚औ Εͳ͘ͳΔ •ࣗૹडऔ࣌ʹෆࡏͩͱɺ͕ճऩ͞ΕΔ → ݶΒΕͨ࣌ؒʹΞΫγϣϯ͠ͳ͍ͱෆརӹΛඃΔ
ϚʔτΞϓϦͰͲΕ͘Β͍ར༻͞Ε͍ͯΔ͔ શiOSΞΫςΟϒϢʔβʔʹର͢Δ ϓογϡ௨ڐՄϢʔβʔͷׂ߹ ϓογϡ௨ΛڐՄ 42% ϓογϡ௨ΛະڐՄ 58% ϓογϡ௨ڐՄϢʔβʔʹର͢Δ ଈ࣌௨༗ޮϢʔβʔͷׂ߹ ଈ࣌௨༗ޮ
69% ଈ࣌௨ແޮ 31%
ಋೖޙʹग़͖ͯͨ •௨ΛϥΠτʹଈ࣌௨ʹઃఆ͢Δ •ʮTime Sensitive͍ͬͯ͏ͷ͕͋Δ͔Βઃఆ͓ͯ͘͠ͱ͍ ͍ͷͰʁʯʮΑͦ͞͏ʯ
ಋೖޙʹग़͖ͯͨ •ॏཁͳ௨ʹଈ࣌௨ͱ͍͏ೝ͕ࣝਁಁͯͦ͠ͷج४Ͱ ͕ٞ͞ΕΔ •ʮ͜ͷ௨ؾ͔ͮͳ͍ͱ·͍͔ͣΒଈ࣌௨ʹ͍ͨ͠ʯ
ଈ࣌௨͕ెʹ૿͑ͯ͠·͏
ଈ࣌௨͕૿͑ΔͱͲ͏ͳΔ͔ ڧׂ͍ΓࠐΈ͕૿͑ΔͱϢʔβʔ͕ετϨεΛײ͡Δ → ଈ࣌௨Λແޮʹ͢Δ → ਅʹؾ͖ͮ͘େͳใʹؾ͚ͮͳ͘ͳΔ
νʔϜͰӡ༻͢Δ্ͰؾΛ͚ͭΔ͜ͱ
ଈ࣌௨ར༻نΛ࡞Δ •αʔϏε։ൃʹؔΘΔϝϯόʔ͕ҎԼΛཧղ͢ΔͨΊͷ υΩϡϝϯτ •ଈ࣌௨ͷ֓ཁͱར༻ϝϦοτ •ΫοΫύουϚʔτͰଈ࣌௨Λࢦఆ͢Δج४ •HIGΛಡΈ߹ΘͤͯiOSΤϯδχΞ͕ϝΠϯͰ࡞
ϓογϡ௨Λ৽ઃ͢Δϑϩʔ ΧςΰϦͷ ઃఆͱ௨ Ϧετͷهೖ λΠτϧɾຊจ ৴λΠϛϯά ͳͲ௨ίϯς ϯπͷઃܭ ଈ࣌௨ͷ ରԠͷݕ౼
ଈ࣌௨ ଈ࣌௨Ͱͳ͍ Ϣʔβʔ͕ओମͱͳΔऔҾʹ ؔΘΔ௨Ͱ͋Δ͔ ଈ࣌௨ ଈ࣌௨Ͱͳ͍ Ϣʔβʔ͕ࣗઃఆͨ͠༧ఆ ʹؔ͢Δ௨Ͱ͋Δ͔ NO YES
NO NO YES YES ৴ޙ࣌ؒҎʹϢʔβʔ ͕ߦಈΛى͜͢ඞཁ͕͋Δ͔
نಋೖޙͲ͏ͳ͔ͬͨ •ଈ࣌௨ʹ͍ͭͯಋೖʹݕ౼͕ཁΔͷͰ͋Δͱ͍͏Π ϯϓοτ͕ἧͬͨ •ࢪࡦʹΑͬͯଈ࣌௨ʹͳΓಘΔ௨૿͑ͳ͍ͱ͍ ͏அͰݕ౼ͷϑϩʔΛεΩοϓͰ͖ΔΑ͏ʹ
ݱঢ় •ར༻نͷཧɾΞοϓσʔτɾϑϩʔఆண·Ͱͷݟक ΓiOSΤϯδχΞͷͱ͍͏ཱ͚ͯ •࣮ࡍҰ෦ͷϝϯόʔ͕ΞϯςφΛுͬͯݟ͍ͯΔ
ࠓޙͲ͏ͳ͍ͬͯ͘ͱྑ͍͔ •iOSΤϯδχΞҎ֎ͷϝϯόʔݕ౼ϑϩʔʹҙࣝΛ࣋ͭ •௨ͷ৽نՃ͔Βଈ࣌௨ݕ౼·ͰͷϑϩʔͷࣗಈԽ • ྫɿPR্ͰϨϏϡʔ͕ͳ͍ͱՃͰ͖ͳ͍
·ͱΊʢଈ࣌௨ΛҰಋೖͨ͠Βʣ •ศརͰಋೖՕॴཁݕ౼ •αʔϏε։ൃʹؔΘΔશһͰڞ௨ΠϯϓοτΛ࣋ͯΔΑ ͏ʹ͢Δ
એ