🦁

Google Map の権限周りで分かった事【 Flutter 】

2023/04/01に公開

GoogleMapを使うアプリを作っているが
全く無知だったため、色々と悪戦苦闘しながらやってみた。

その中でもめんどーと思った事としては、
権限のリクエスト周りでした。

ということで調べた事をそのまま備忘録として記録していきまーす。
ちなみに、iOSしか検証してません。
そのうち、Androidでも検証しますが先に記事を書きたくて...察して。

めんどーな点

まぁ、ご存知かと思いますが
位置情報をリクエストする際に出てくるダイアログでは
3つの選択肢があります。

  1. 1度だけ許可
  2. Appの使用中は許可
  3. 許可しない

何が面倒なのかというと、
1回のみ許可
ってやつですわ。

これって要するに、
アプリを起動させるごとに権限を要求する必要があるって事なんですよね。

まぁ、文面しか見えてない方からすると
「何をそんな当たり前の事を。。。」
っていうかもしれませんね。

、、、ちゃうねん

知識0の状態からこれを見て正解を連想させられるかい
って感じです。

Appの使用中は許可 と 許可しない に関しては
次回アプリを開いてもダイアログを出さないから
別に権限をリクエストせんで良いんかって思うけど
ある程度理解した上でここの境地に立つと思うんですよね〜。

何を気を付けるべきなのか

1度だけ許可 を選択した場合の戻り値は whileInUse ですが
次回の起動時に、checkPermission を発火させると denied になっているってことです。

こんなん初見で分かるかぁぁぁ!!w

ってことで、全部検証する必要があるけど
文面で言っていくと面倒なので箇条書きのメモで察して。

つまり、deniedが返ってきたら権限をリクエストして
それ以外はリクエストしないって事。

これを真面目に説明しているサイトが上位にランキングされなかったから
イライラしながら、どのタイミングで権限をリクエストするねんって思ってた。

どれに対しても権限をリクエストするねんみたいな猛者は知らんけど
俺みたいに細々しているの気にするタイプはイライラすると思うわ。

これらを検証するのに最低でも4,5回はビルドをしなおしたり
アプリをアンインストールし直す必要があるから、シンプルにめんどーよね。

isLocationServiceEnabled が true しか返さない

Returns a [Future] containing a [bool] value indicating whether location services are enabled on the device.

こいつの説明で上記があった。
翻訳すると

デバイスで位置情報サービスが有効になっているかどうかを示す [bool] 値を含む [Future] を返します。

うん。意味わからん。
なんで一生 true 返ってくるねん。
こっちは許可しない押してるねんぞ。

って思ってた。

ただ調べてみると、
「位置情報サービスが有効かどうか」
が重要やったらしい。

多分やけど、
ジャングルとか電波の届かない箇所では位置情報取ってこれへんのちゃう?
知らんけど

あとは、そもそも端末自体が水没とかしてて位置情報だけが取ってこれないみたいな事になってるのかも?
知らんけど

っていうことで、端末の状態もしくはその他の外部の影響で位置情報を取れない状況があるっぽい。知らんけど。

その状態では取ってこれないからfalseが返ってくるねんて。

ってことは、検証しようがない。だるい。うざい。帰りたい。

以上、位置情報はシンプルに面倒。

Discussion