$30 off During Our Annual Pro Sale. View Details »

[potatotips #69] Wi-Fi Suggestion API / Wi-Fi Suggestion API

syarihu
April 27, 2020

[potatotips #69] Wi-Fi Suggestion API / Wi-Fi Suggestion API

potatotips #69で発表したWi-Fi Suggestion APIの発表資料です。
https://potatotips.connpass.com/event/171532/

syarihu

April 27, 2020
Tweet

More Decks by syarihu

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. Android 10以前のWi-Fi関連API

    View Slide

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

    Android 10以前のWi-Fi関連API

    View Slide

  5. View Slide

  6. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. Wi-Fi Suggestion API

    View Slide

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

    View Slide

  14. View Slide

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

    View Slide

  16. View Slide

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

    View Slide

  18. View Slide

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

    View Slide

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

    View Slide

  21. View Slide

  22. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  30. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. View Slide

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

    View Slide

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

    View Slide

  39. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  47. View Slide

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

    View Slide

  49. まとめ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  53. ありがとうございました

    View Slide