Slide 1

Slide 1 text

Mobility Technologies Co., Ltd. 通知がOFFだとToastは表示されな… されてる!? @napplecomputer

Slide 2

Slide 2 text

Mobility Technologies Co., Ltd. 2 ■ なっぴー ■ @napplecomputer ■ 株式会社Mobility Technologies所属 ■ タクシーアプリGOのユーザーアプリ ■ 最近車を買いました 自己紹介

Slide 3

Slide 3 text

Mobility Technologies Co., Ltd. Notification runtime permission 3

Slide 4

Slide 4 text

Mobility Technologies Co., Ltd. 4 ■ Android13 でNotification runtime permissionが導入 ■ Android13では通知を表示するにはruntime permissionでnotificationの permissionを得る必要がある ■ permissionと通知のenable/disableは連動している ■ 拒否されると通知が表示できない! Notification runtime permission

Slide 5

Slide 5 text

Mobility Technologies Co., Ltd. 5 Notification runtime permission 地雷を踏みがちなAndroidアプリエンジニア

Slide 6

Slide 6 text

Mobility Technologies Co., Ltd. 6 Notification runtime permission つまりToast表示にも Permissionが必要になるのか

Slide 7

Slide 7 text

Mobility Technologies Co., Ltd. 7 Notification runtime permission 通知OFFだと Toast表示されないので

Slide 8

Slide 8 text

Mobility Technologies Co., Ltd. 8 Notification runtime permission 試したら通知OFFでも Toast表示されましたよ

Slide 9

Slide 9 text

Mobility Technologies Co., Ltd. 9 Notification runtime permission えっ!?

Slide 10

Slide 10 text

Mobility Technologies Co., Ltd. Toastと通知OFF 10

Slide 11

Slide 11 text

Mobility Technologies Co., Ltd. 11 ■ Android4.1.xからは通知をOFFにするとToastを表示することができなかった ■ この仕様はなぜかドキュメントに書かれていない ■ そもそも仕様なのか不具合なのか… ■ このあたりの話はQiitaなどで検索しても出てきます ■ この事に気がついたAndroidアプリエンジニアはToastは必ずしも表示され るわけではないということを前提にアプリを作るようになった Toastと通知OFF

Slide 12

Slide 12 text

Mobility Technologies Co., Ltd. 12 ■ この仕様がいつの間にか変わっていた ■ ドキュメントに書いてないから変わっても気が付かない… Toastと通知OFF

Slide 13

Slide 13 text

Mobility Technologies Co., Ltd. Toastと通知OFFの 現在の関係 13

Slide 14

Slide 14 text

Mobility Technologies Co., Ltd. 14 ■ いつから表示されているのか、https://cs.android.com/ でソースを追う ■ Android10から挙動が変わったっぽい Toastと通知OFFの現在の関係

Slide 15

Slide 15 text

Mobility Technologies Co., Ltd. 15 Toastと通知OFFの現在の関係 引用元:https://cs.android.com/android/platform/superproject/+/android- 10.0.0_r1:frameworks/base/services/core/java/com/android/server/notification/No tificationManagerService.java;l=2267-2268?hl=ja

Slide 16

Slide 16 text

Mobility Technologies Co., Ltd. 16 ■ Android10以降ではバックグラウンドでかつ通知がOFFの場合、Toastが表示 されない ■ フォアグラウンドでは通知がOFFでもToastは表示される! Toastと通知OFFの現在の関係

Slide 17

Slide 17 text

Mobility Technologies Co., Ltd. 17 なぜ??? Toastと通知OFFの現在の関係

Slide 18

Slide 18 text

Mobility Technologies Co., Ltd. 18 ■ 変更コミットには「Always allow toasts from foreground apps」 ■ つまり意図した変更 ■ https://cs.android.com/android/_/android/platform/frameworks/base/+/58 b2453ed69197d765c7254241d9966ee49a3efb ■ Issueは「Status: Won't Fix (Obsolete)」で閉じられていた ■ https://issuetracker.google.com/issues/36951147#comment21 Toastと通知OFFの現在の関係

Slide 19

Slide 19 text

Mobility Technologies Co., Ltd. まとめ 19

Slide 20

Slide 20 text

Mobility Technologies Co., Ltd. 20 ■ Android10以降ではフォアグラウンドなら通知がOFFでもToastは表示される ようになってた! ■ 理由は不明 まとめ