Slide 1

Slide 1 text

Wi-Fi Suggestion API 2020/04/27 (Mon) potatotips #69 @syarihu

Slide 2

Slide 2 text

Taichi Sato (@syarihu) ● Money Forward, Inc. ○ Android Engineer ● TechBooster

Slide 3

Slide 3 text

Android 10以前のWi-Fi関連API

Slide 4

Slide 4 text

● Androidでは、API Level 1からWi-Fi情報を追 加するAPIを用意している ● イベント専用のアプリや実店舗などで使えるア プリでユーザーがWi-Fi情報を入力することなく イベント会場や店舗のWi-Fiに自動で接続でき る Android 10以前のWi-Fi関連API

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

● Wi-FiがONで対象のSSIDが接続範囲内にい れば、保存されたWi-Fi情報を元に自動でWi-Fi に接続 ● アプリを削除した場合はアプリから追加した Wi-Fi情報も同時に削除される Android 10以前のWi-Fi関連API

Slide 8

Slide 8 text

● Android 10以前で使えていた機能を提供する Wi-Fi関連APIは非推奨になった上に無効化さ れた Android 10以前のWi-Fi関連API

Slide 9

Slide 9 text

https://developer.android.com/reference/android/net/wifi/WifiManager#addNetwork(android.net.wifi.WifiConfiguration)

Slide 10

Slide 10 text

https://developer.android.com/reference/android/net/wifi/WifiManager#addNetwork(android.net.wifi.WifiConfiguration)

Slide 11

Slide 11 text

● プリインストールアプリなどを除いて minSdkVersion 29以上は2020年現在ではあり えない ● Android 10以上では新しいAPIを使い、Android 10未満では以前のAPIを使って下位バージョンで も正しく動作させる必要がある Android 10以前のWi-Fi関連API

Slide 12

Slide 12 text

Wi-Fi Suggestion API

Slide 13

Slide 13 text

● 接続先候補としてWi-Fi情報をシステムに追加 し、ユーザーにWi-Fiへの接続を提案するAPI ● ネットワークの種類はオープン、WPA2、WPA3 のいずれかの認証情報を提供できる Wi-Fi Suggestion API

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

● サイレント通知であるため通知音は鳴らない ● 通知の「はい」ボタンを押すと自動接続が許可さ れ、Wi-Fiが接続範囲内に入ったときに自動的に 接続される Wi-Fi Suggestion API

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

単なる接続確認ではない Wi-Fi接続のおすすめ通知

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

● 「いいえ」を押すと、アプリのもつWi-Fiの管理権 限が無効になり、Wi-Fi情報も削除される ● Wi-Fiの管理権限が無効になると、アプリから変 更ができなくなるため、再度Wi-Fi情報を追加す ることができない 「いいえ」を押したときの挙動

Slide 20

Slide 20 text

● ユーザーが明示的に権限を許可するまでこの状 態は変わらない 「いいえ」を押したときの挙動

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

● 「いいえ」を押してもWi-Fiの管理の権限が無効 になったことは一切通知されない ● 権限を許可する画面は階層の深いところにある ため、一度「いいえ」を選択してしまうとアプリか らWi-Fi接続をすることは難しい 「いいえ」を押したときの挙動

Slide 24

Slide 24 text

● Wi-Fi情報を追加するタイミングで案内メッセージ を表示するなど丁寧なコミュニケーションを取る 必要がある 「いいえ」を押したときの挙動

Slide 25

Slide 25 text

● Wi-Fi接続のおすすめ通知で「いいえ」を押した 時点で追加したWi-Fi情報も自動的に削除される ● 再度自動接続させる場合、アプリからWi-Fi情報 を追加し、Wi-Fi接続のおすすめ通知で「はい」を 押さなければならない 「いいえ」を押したときの挙動

Slide 26

Slide 26 text

● 「はい」を押すと、アプリからのWi-Fi接続を許可 される ● Wi-Fi Suggestion APIには現在接続されている Wi-Fiを強制切断して接続を切り替えるといった オプションはない 「はい」を押したときの挙動

Slide 27

Slide 27 text

● アプリから追加した接続先候補以外のWi-Fiに繋 がっている場合には「はい」を押しても接続が許 可されるだけで、アプリからWi-Fi接続を行うわけ ではない 「はい」を押したときの挙動

Slide 28

Slide 28 text

Wi-Fi接続のおすすめ通知の メッセージ修正

Slide 29

Slide 29 text

● Wi-Fi接続のおすすめ通知は単なる接続確認で はなく権限確認であることが分かったが、かなり ややこしい ● Googleも接続確認のメッセージではよくないと 気づいたのか、android-10.0.0_r18から権限確 認だと分かるメッセージに変更された おすすめ通知のメッセージ修正

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

● メッセージの修正コミット自体は2019年8月に行 われてる ● Pixel 2やPixel 3のアップデートとしてこの変更が 実際に適用されたのは2019年12月5日のアップ デートから おすすめ通知のメッセージ修正

Slide 32

Slide 32 text

● 同じAndroid 10でもどの時期のアップデートを適 用しているかによってメッセージが変わってきて しまう ● 提供しているメーカーによっては今回の変更が 適用されていない可能性もある おすすめ通知のメッセージ修正

Slide 33

Slide 33 text

● Wi-Fi Suggestion APIを利用した機能を提供す る場合はアップデートバージョンを気にしておくと よい おすすめ通知のメッセージ修正

Slide 34

Slide 34 text

接続するまで何が追加されたか 分からないWi-Fi情報

Slide 35

Slide 35 text

● Android 10以前で利用できる WiFiManager#addNetworkメソッドでは追加内 容を保存済のネットワークとして確認できた 何が追加されたか分からないWi-Fi情報

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

● Wi-Fi Suggestion APIでの候補は対象のWi-Fi を検出するまでシステムのWi-Fi設定画面には 表示されない ● どのSSIDに接続可能になるかはアプリ上のど こかで明記しておくとよい 何が追加されたか分からないWi-Fi情報

Slide 38

Slide 38 text

どこからも見えない 謎のブラックリスト

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

● 接続の解除は通常のWi-Fiと同じ用に動作する が、その後の挙動はおかしいことになる ● ユーザーがアプリから追加されたWi-Fiを明示 的に接続解除してしまうと、接続を解除した SSIDはシステム内のブラックリストに入る どこからも見えない謎のブラックリスト

Slide 41

Slide 41 text

● ブラックリストに入れられたSSIDは、接続解除 されてから24時間は一切自動接続できなくなる ● Wi-Fi Suggestionの候補からは削除されてい ないが、一度削除して再度追加を行ったとして も一切自動接続できない どこからも見えない謎のブラックリスト

Slide 42

Slide 42 text

● 現状、ブラックリストに入ってしまったSSIDはど こからも確認できない ● アプリ上から何らかのメッセージを表示すること も不可能 どこからも見えない謎のブラックリスト

Slide 43

Slide 43 text

● システムの設定から解除するのではなくアプリ 上からWi-Fi Suggestion APIを使ってWi-Fi情 報を削除すると接続も解除される ● 解除について注意事項を書いたり、接続を解 除する場合はアプリから接続の解除を促す警 告を出すなどするとよい どこからも見えない謎のブラックリスト

Slide 44

Slide 44 text

アプリアンインストール時の挙動

Slide 45

Slide 45 text

● Wi-Fi Suggestion APIで追加されたWi-Fi情報 はアンインストール時に同時に削除される ● どのSSIDが追加されているかはユーザーは分 からないため不安かもしれないので、アンイン ストール時に同時に削除されることは覚えてお くとよい アプリアンインストール時の挙動

Slide 46

Slide 46 text

Android 11以降の Wi-Fi Suggestion APIについて

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

● 追加時のダイアログ以外にも大きな変更がいく つか入っている模様 ● また機会があればお話します Android 11以降のWi-Fi Suggestion API

Slide 49

Slide 49 text

まとめ

Slide 50

Slide 50 text

● Wi-Fi Suggestion APIはシンプルな機能に見え て気をつけなければならない点が多い ● 同じAndroid 10でもバージョンによって違いが あったりする ● Android 11以降でも大きな変更が入るので、注 意して見ておく必要がある まとめ

Slide 51

Slide 51 text

● 今回話せなかった以前のWi-Fi関連APIについ ての実装を含めた話や、Wi-Fi Suggestion API の実装の話についてもっと知りたい方は… おわりに

Slide 52

Slide 52 text

みんな気になる Android開発の最新事情 ● in-app updates: アプリを使いながら アップデートしよう ● 忙しい人のためのAAC最新事情 ● あなたとWi-Fi、今すぐサジェスト ● Jetnewsで使われている Composableをざっと見る ● Jetpack Composeのグランドデザイ ンを読み解く ● 君も幸せになれるSpreadSheet使い こなし術 ● First step of LiveData(改訂版) ● ViewModelを理解する https://techbooster.booth.pm/items/1743311

Slide 53

Slide 53 text

ありがとうございました